{ "id": "168113", "key": "TIMOB-24778", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "19572", "description": "Important fixes for 6.1.0", "name": "Release 6.1.1", "archived": false, "released": true, "releaseDate": "2017-06-16" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-06-06T15:52:02.000+0000", "created": "2017-06-06T09:42:04.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [], "versions": [ { "id": "17608", "name": "Release 6.1.0", "archived": false, "released": true, "releaseDate": "2017-05-26" } ], "issuelinks": [ { "id": "55069", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "167906", "key": "TIMOB-24733", "fields": { "summary": "Android: Missing --no-version-vectors options for AAPT in during app builds", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "updated": "2017-06-06T21:39:39.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "13103", "name": "CLI", "description": "Node-based command line interface" } ], "description": "h5.Description\r\n\r\nTIMOB-24733 appears to have created a dependency on the Android build tools being 23.0.1 or above (see error below). When building with lower than this, due to the hard dependency I would expect that there would be a warning/error telling me that my build tools are unsupported/wont work, but I do not see this.\r\n\r\n\r\n{code}\r\n[INFO] Running AAPT: /Users/eharris/Library/Android/sdk/build-tools/22.0.1/aapt \"package\" \"-f\" \"-m\" \"-J\" \"/Users/eharris/Documents/git/work/kitchensink-v2/build/android/gen\" \"-M\" \"/Users/eharris/Documents/git/work/kitchensink-v2/build/android/AndroidManifest.xml\" \"-A\" \"/Users/eharris/Documents/git/work/kitchensink-v2/build/android/bin/assets\" \"-S\" \"/Users/eharris/Documents/git/work/kitchensink-v2/build/android/res\" \"-I\" \"/Users/eharris/Library/Android/sdk/platforms/android-23/android.jar\" \"-F\" \"/Users/eharris/Documents/git/work/kitchensink-v2/build/android/bin/app.ap_\" \"--output-text-symbols\" \"/Users/eharris/Documents/git/work/kitchensink-v2/build/android/intermediates/bundles\" \"--no-version-vectors\" \"--auto-add-overlay\" \"--extra-packages\" \"ti.modules.titanium.ui:android.support.v7.appcompat:android.support.v7.cardview:com.google.android.gms:com.facebook\"\r\n[ERROR] Failed to package application:\r\n[ERROR]\r\n[ERROR] ERROR: Unknown option '--no-version-vectors'\r\n[ERROR] Android Asset Packaging Tool\r\n[ERROR]\r\n[ERROR] Usage:\r\n[ERROR] aapt l[ist] [-v] [-a] file.{zip,jar,apk}\r\n[ERROR] List contents of Zip-compatible archive.\r\n[ERROR]\r\n[ERROR] aapt d[ump] [--values] [--include-meta-data] WHAT file.{apk} [asset [asset ...]]\r\n[ERROR] strings Print the contents of the resource table string pool in the APK.\r\n[ERROR] badging Print the label and icon for the app declared in APK.\r\n[ERROR] permissions Print the permissions from the APK.\r\n[ERROR] resources Print the resource table from the APK.\r\n[ERROR] configurations Print the configurations in the APK.\r\n[ERROR] xmltree Print the compiled xmls in the given assets.\r\n[ERROR] xmlstrings Print the strings of the given compiled xml assets.\r\n[ERROR]\r\n[ERROR] aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \\\r\n[ERROR] [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \\\r\n[ERROR] [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \\\r\n[ERROR] [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \\\r\n[ERROR] [--rename-manifest-package PACKAGE] \\\r\n[ERROR] [--rename-instrumentation-target-package PACKAGE] \\\r\n[ERROR] [--utf16] [--auto-add-overlay] \\\r\n[ERROR] [--max-res-version VAL] \\\r\n[ERROR] [-I base-package [-I base-package ...]] \\\r\n[ERROR] [-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] \\\r\n[ERROR] [-S resource-sources [-S resource-sources ...]] \\\r\n[ERROR] [-F apk-file] [-J R-file-dir] \\\r\n[ERROR] [--product product1,product2,...] \\\r\n[ERROR] [-c CONFIGS] [--preferred-configurations CONFIGS] \\\r\n[ERROR] [--split CONFIGS [--split CONFIGS]] \\\r\n[ERROR] [--feature-of package [--feature-after package]] \\\r\n[ERROR] [raw-files-dir [raw-files-dir] ...] \\\r\n[ERROR] [--output-text-symbols DIR]\r\n[ERROR]\r\n[ERROR] Package the android resources. It will read assets and resources that are\r\n[ERROR] supplied with the -M -A -S or raw-files-dir arguments. The -J -P -F and -R\r\n[ERROR] options control which files are output.\r\n[ERROR]\r\n[ERROR] aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]\r\n[ERROR] Delete specified files from Zip-compatible archive.\r\n[ERROR]\r\n[ERROR] aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]\r\n[ERROR] Add specified files to Zip-compatible archive.\r\n[ERROR]\r\n[ERROR] aapt c[runch] [-v] -S resource-sources ... -C output-folder ...\r\n[ERROR] Do PNG preprocessing on one or several resource folders\r\n[ERROR] and store the results in the output folder.\r\n[ERROR]\r\n[ERROR] aapt s[ingleCrunch] [-v] -i input-file -o outputfile\r\n[ERROR] Do PNG preprocessing on a single file.\r\n[ERROR]\r\n[ERROR] aapt v[ersion]\r\n[ERROR] Print program version.\r\n[ERROR]\r\n[ERROR] Modifiers:\r\n[ERROR] -a print Android-specific data (resources, manifest) when listing\r\n[ERROR] -c specify which configurations to include. The default is all\r\n[ERROR] configurations. The value of the parameter should be a comma\r\n[ERROR] separated list of configuration values. Locales should be specified\r\n[ERROR] as either a language or language-region pair. Some examples:\r\n[ERROR] en\r\n[ERROR] port,en\r\n[ERROR] port,land,en_US\r\n[ERROR] -d one or more device assets to include, separated by commas\r\n[ERROR] -f force overwrite of existing files\r\n[ERROR] -g specify a pixel tolerance to force images to grayscale, default 0\r\n[ERROR] -j specify a jar or zip file containing classes to include\r\n[ERROR] -k junk path of file(s) added\r\n[ERROR] -m make package directories under location specified by -J\r\n[ERROR] -u update existing packages (add new, replace older, remove deleted files)\r\n[ERROR] -v verbose output\r\n[ERROR] -x create extending (non-application) resource IDs\r\n[ERROR] -z require localization of resource attributes marked with\r\n[ERROR] localization=\"suggested\"\r\n[ERROR] -A additional directory in which to find raw asset files\r\n[ERROR] -G A file to output proguard options into.\r\n[ERROR] -F specify the apk file to output\r\n[ERROR] -I add an existing package to base include set\r\n[ERROR] -J specify where to output R.java resource constant definitions\r\n[ERROR] -M specify full path to AndroidManifest.xml to include in zip\r\n[ERROR] -P specify where to output public resource definitions\r\n[ERROR] -S directory in which to find resources. Multiple directories will be scanned\r\n[ERROR] and the first match found (left to right) will take precedence.\r\n[ERROR] -0 specifies an additional extension for which such files will not\r\n[ERROR] be stored compressed in the .apk. An empty string means to not\r\n[ERROR] compress any files at all.\r\n[ERROR] --debug-mode\r\n[ERROR] inserts android:debuggable=\"true\" in to the application node of the\r\n[ERROR] manifest, making the application debuggable even on production devices.\r\n[ERROR] --include-meta-data\r\n[ERROR] when used with \"dump badging\" also includes meta-data tags.\r\n[ERROR] --pseudo-localize\r\n[ERROR] generate resources for pseudo-locales (en-XA and ar-XB).\r\n[ERROR] --min-sdk-version\r\n[ERROR] inserts android:minSdkVersion in to manifest. If the version is 7 or\r\n[ERROR] higher, the default encoding for resources will be in UTF-8.\r\n[ERROR] --target-sdk-version\r\n[ERROR] inserts android:targetSdkVersion in to manifest.\r\n[ERROR] --max-res-version\r\n[ERROR] ignores versioned resource directories above the given value.\r\n[ERROR] --values\r\n[ERROR] when used with \"dump resources\" also includes resource values.\r\n[ERROR] --version-code\r\n[ERROR] inserts android:versionCode in to manifest.\r\n[ERROR] --version-name\r\n[ERROR] inserts android:versionName in to manifest.\r\n[ERROR] --replace-version\r\n[ERROR] If --version-code and/or --version-name are specified, these\r\n[ERROR] values will replace any value already in the manifest. By\r\n[ERROR] default, nothing is changed if the manifest already defines\r\n[ERROR] these attributes.\r\n[ERROR] --custom-package\r\n[ERROR] generates R.java into a different package.\r\n[ERROR] --extra-packages\r\n[ERROR] generate R.java for libraries. Separate libraries with ':'.\r\n[ERROR] --generate-dependencies\r\n[ERROR] generate dependency files in the same directories for R.java and resource package\r\n[ERROR] --auto-add-overlay\r\n[ERROR] Automatically add resources that are only in overlays.\r\n[ERROR] --preferred-density\r\n[ERROR] Specifies a preference for a particular density. Resources that do not\r\n[ERROR] match this density and have variants that are a closer match are removed.\r\n[ERROR] --split\r\n[ERROR] Builds a separate split APK for the configurations listed. This can\r\n[ERROR] be loaded alongside the base APK at runtime.\r\n[ERROR] --feature-of\r\n[ERROR] Builds a split APK that is a feature of the apk specified here. Resources\r\n[ERROR] in the base APK can be referenced from the the feature APK.\r\n[ERROR] --feature-after\r\n[ERROR] An app can have multiple Feature Split APKs which must be totally ordered.\r\n[ERROR] If --feature-of is specified, this flag specifies which Feature Split APK\r\n[ERROR] comes before this one. The first Feature Split APK should not define\r\n[ERROR] anything here.\r\n[ERROR] --rename-manifest-package\r\n[ERROR] Rewrite the manifest so that its package name is the package name\r\n[ERROR] given here. Relative class names (for example .Foo) will be\r\n[ERROR] changed to absolute names with the old package so that the code\r\n[ERROR] does not need to change.\r\n[ERROR] --rename-instrumentation-target-package\r\n[ERROR] Rewrite the manifest so that all of its instrumentation\r\n[ERROR] components target the given package. Useful when used in\r\n[ERROR] conjunction with --rename-manifest-package to fix tests against\r\n[ERROR] a package that has been renamed.\r\n[ERROR] --product\r\n[ERROR] Specifies which variant to choose for strings that have\r\n[ERROR] product variants\r\n[ERROR] --utf16\r\n[ERROR] changes default encoding for resources to UTF-16. Only useful when API\r\n[ERROR] level is set to 7 or higher where the default encoding is UTF-8.\r\n[ERROR] --non-constant-id\r\n[ERROR] Make the resources ID non constant. This is required to make an R java class\r\n[ERROR] that does not contain the final value but is used to make reusable compiled\r\n[ERROR] libraries that need to access resources.\r\n[ERROR] --shared-lib\r\n[ERROR] Make a shared library resource package that can be loaded by an application\r\n[ERROR] at runtime to access the libraries resources. Implies --non-constant-id.\r\n[ERROR] --error-on-failed-insert\r\n[ERROR] Forces aapt to return an error if it fails to insert values into the manifest\r\n[ERROR] with --debug-mode, --min-sdk-version, --target-sdk-version --version-code\r\n[ERROR] and --version-name.\r\n[ERROR] Insertion typically fails if the manifest already defines the attribute.\r\n[ERROR] --error-on-missing-config-entry\r\n[ERROR] Forces aapt to return an error if it fails to find an entry for a configuration.\r\n[ERROR] --output-text-symbols\r\n[ERROR] Generates a text file containing the resource symbols of the R class in the\r\n[ERROR] specified folder.\r\n[ERROR] --ignore-assets\r\n[ERROR] Assets to be ignored. Default pattern is:\r\n[ERROR] !.svn:!.git:!.ds_store:!*.scc:.*:_*:!CVS:!thumbs.db:!picasa.ini:!*~\r\n{code}\r\nh5.Steps to reproduce\r\n\r\n# Install {{Android SDK Build-tools@22.0.1}}\r\n# Build a project with {{appc run -p android -T device --build-only}}\r\n\r\nh5.Actual\r\n\r\nBuild errors out with the above error\r\n\r\nh5.Expected\r\n\r\nBuild should error out with an error stating the build tools are unsupported", "attachment": [], "flagged": false, "summary": "CLI: Minimum android build tools is incorrect", "creator": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "subtasks": [], "reporter": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "environment": "Ti SDK: 6.1.0.GA\r\nAppc CLI: 6.2.2\r\nAndroid SDK Build-tools: 22.0.1", "closedSprints": [ { "id": 903, "state": "closed", "name": "2017 Sprint 12 SDK", "startDate": "2017-06-05T00:15:46.290Z", "endDate": "2017-06-19T00:15:00.000Z", "completeDate": "2017-06-19T16:09:22.870Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "421072", "author": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "body": "Master PR: https://github.com/appcelerator/titanium_mobile/pull/9112\r\n6_1_X: https://github.com/appcelerator/titanium_mobile/pull/9115", "updateAuthor": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "created": "2017-06-06T10:02:12.000+0000", "updated": "2017-06-06T15:47:10.000+0000" }, { "id": "421090", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2017-06-06T15:51:35.000+0000", "updated": "2017-06-06T15:51:35.000+0000" }, { "id": "421137", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-06-06T21:39:25.000+0000", "updated": "2017-06-06T21:39:25.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }