{ "id": "154712", "key": "DAEMON-12", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "12519", "key": "DAEMON", "name": "Appcelerator Daemon" }, "fixVersions": [ { "id": "18407", "description": "", "name": "Appc Daemon 1.0.0", "archived": false, "released": true, "releaseDate": "2017-12-05" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-11-13T13:07:05.000+0000", "created": "2016-02-04T03:10:12.000+0000", "epic": { "id": 154699, "key": "DAEMON-48", "name": "Appcelerator Daemon v1", "summary": "Appcelerator Daemon v1", "color": { "key": "color_9" }, "done": false }, "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [], "issuelinks": [ { "id": "51610", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "154713", "key": "DAEMON-8", "fields": { "summary": "appcd: System info appc daemon plugin", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "52608", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "134955", "key": "TIMOB-17514", "fields": { "summary": "Android: Refactor androidlib", "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": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2017-11-13T13:07:05.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "15051", "name": "androidlib", "description": "Library for Android related functions" } ], "description": "androidlib (https://github.com/appcelerator/androidlib) was originally built for early Hyperloop prototypes, but lacked the robustness and features of the Android tooling in the Titanium SDK. The purpose of this ticket is to update androidlib with the logic from the Titanium SDK while maintaining API consistency with ioslib and windowslib and preserving the features at androidlib supports.\r\n\r\nh2. Detect installed Android environment\r\n\r\n{{detect()}} must return the following Android installation information:\r\n\r\n* SDK information\r\n** Path to the SDK\r\n** Paths to each executable and {{.jar}} file listed above\r\n** {{build-tools}}, {{platform-tools}}, and {{tools}} paths and versions\r\n** Targets (SDKs, add-ons)\r\n* NDK information\r\n* Android home directory path\r\n* Emulators\r\n* Devices\r\n\r\nWhen detecting the Android environment, there are a number of options that {{detect()}} must accept and use to override the defaults. These include:\r\n\r\n* {{bypassCache}} (Boolean)- When {{true}}, re-detects Android environment (default: {{false}})\r\n* {{sdkPath}} (String) - The path to an Android SDK\r\n* {{ndkPath}} (String) - The path to an Android NDK\r\n* {{androidHomePath}} (String)\r\n* {{executables}} (Object) - Key/value lookup of executable name (i.e. {{android}}, {{adb}}, {{dx}}, etc) to its path\r\n\r\nh4. Android SDK\r\n\r\nWhile there could be many Android installations, we only care about a single installation. To find it, search the the following locations:\r\n\r\n# The {{sdkPath}} specified in the {{detect()}} {{opts}} argument\r\n# {{ANDROID_SDK_ROOT}} environment variable\r\n# {{ANDROID_SDK}} environment variable\r\n# The parent folder containing the {{android}} or {{android.bat}} executable\r\n# The parent folder containing the {{adb}} or {{adb.exe}} executable\r\n# Various common paths\r\n* Windows: {{%SystemDrive%}}, {{%ProgramFiles%}}, {{%ProgramFiles(x86)%}}, {{%CommonProgramFiles%}}, {{~}}\r\n* OS X/Linux: {{/opt}}, {{/opt/local}}, {{/usr}}, {{/usr/local}}, {{~}}\r\n\r\nIn order for a path to be deemed a valid Android installation, it must have the following:\r\n\r\n* {{build-tools//aapt}} / {{build-tools//aapt.exe}}\r\n* {{build-tools//aidl}} / {{build-tools//aidl.exe}}\r\n* {{build-tools//dx}} / {{build-tools//dx.bat}}\r\n* {{platform-tools/adb}} / {{platform-tools/adb.exe}}\r\n* {{platform-tools/lib/dx.jar}}\r\n* {{tools/android}} / {{tools/android.bat}}\r\n* {{tools/emulator}} / {{tools/emulator.exe}}\r\n* {{tools/mksdcard}} / {{tools/mksdcard.exe}}\r\n* {{tools/proguard/lib/proguard.jar}}\r\n* {{tools/source.properties}}\r\n* {{tools/zipalign}} / {{tools/zipalign}}\r\n\r\nh5. Detect installed Android targets (SDKs and Addons)\r\n\r\nRequired information:\r\n* {{id}} (String) Example: {{\"android-23\"}}\r\n* {{name}} (String) Example: {{\"Android 6.0\"}}\r\n* {{description}} (String) Example: {{\"Android + Google APIs\"}}\r\n* {{type}} (String}} Either {{\"platform\"}} or {{\"add-on\"}}\r\n* {{api-level}} (String}} Examples: {{\"23\"}}, {{\"N\"}}\r\n* {{sdk}} (Number) Examples: {{23}}, {{24}}\r\n* {{abis}} (Array)\r\n* {{skins}} (Array)\r\n* {{revision}} (Number)\r\n* {{path}} (String)\r\n* {{androidJar}} (String) Path to {{android.jar}}. Needed for {{aapt package}}.\r\n* {{aidl}} (String) Path to {{framework.aidl}} file.\r\n* {{based-on}} (Object) Used for add-ons and used to derive {{aidl}} since only {{platform}} has an {{aidl}} file\r\n* {{libraries}} (Object) Map of add-on libraries. Used for for detecting if SDK supports maps, but this is probably not needed, just nice to have.\r\n\r\nh4. Android NDK\r\n\r\nTODO\r\n\r\nh4. Android Home Directory\r\n\r\nDerived based on {{androidHomePath}} option, {{ANDROID_SDK_HOME}} environment variable, or {{~/.android}}.\r\n\r\nh4. Emulators\r\n\r\nAn array of emulators containing the following information:\r\n\r\nNOTE: Incomplete\r\n\r\n* {{type}} (String) Either {{\"avd\"}} or {{\"genymotion\"}}\r\n* {{name}} (String) For Android emulators, this value is returned from {{avd name}} when telnetting into the emulator. For Genymotion, we get this from VM name in VirtualBox using {{vboxmanage}}.\r\n* {{id}} (String) Same value as {{name}}. Devices do not have a {{name}}, but we need a common identifier for the target, hence {{id}}.\r\n* {{abi}} (String)\r\n* {{api-level}} Not possible to get with older versions of Genymotion, so just set to {{null}} for Genymotion.\r\n\r\nAndroid emulator specific:\r\n* {{device}} (String)\r\n* {{path}} (String)\r\n* {{skin}} (String)\r\n\r\nGenymotion specific:\r\n* {{guid}} (String)\r\n\r\nh4. Devices\r\n\r\nAn array of devices.\r\n\r\nh2. androidlib should NOT...\r\n\r\n* Determine if any SDK is supported or not\r\n* Determine if any sort of \"issues\"", "attachment": [], "flagged": false, "summary": "androidlib v2", "creator": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "environment": null, "closedSprints": [ { "id": 969, "state": "closed", "name": "2017 Sprint 23 Tooling", "startDate": "2017-11-05T16:36:50.292Z", "endDate": "2017-11-19T16:36:00.000Z", "completeDate": "2017-11-20T18:58:45.002Z", "originBoardId": 219 } ], "comment": { "comments": [ { "id": "380848", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "PR: https://github.com/appcelerator/androidlib/pull/5", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2016-03-28T19:53:51.000+0000", "updated": "2016-03-28T19:53:51.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }