{ "id": "117498", "key": "TIMOB-14637", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": "15645", "description": "2013 Sprint 18 Core", "name": "2013 Sprint 18 Core", "archived": true, "released": true, "releaseDate": "2013-09-06" }, { "id": "15646", "description": "2013 Sprint 18", "name": "2013 Sprint 18", "archived": true, "released": true, "releaseDate": "2013-09-06" }, { "id": "14982", "description": "Release 3.2.0", "name": "Release 3.2.0", "archived": false, "released": true, "releaseDate": "2013-12-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2013-09-06T22:23:30.000+0000", "created": "2013-07-23T19:05:26.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "android", "android-deployment", "android-packaging", "androidbuild", "build", "cb-verified", "cli", "genymotion", "module_android", "qe-testadded", "simulator" ], "versions": [ { "id": "15478", "description": "Release 3.1.1", "name": "Release 3.1.1", "archived": true, "released": true, "releaseDate": "2013-06-17" } ], "issuelinks": [ { "id": "31379", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "118143", "key": "TIMOB-14786", "fields": { "summary": "CLI: Create Genymotion Library", "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": "Critical", "id": "1" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2013-11-20T19:03:05.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": "10207", "name": "Tooling" } ], "description": "Genymotion is an enhanced android emulator that leverages x86 emulation with builtin HAXM-like optimizations and Google APIs.\r\n\r\nIn order to have an simulator with a performance like the iOS Simulator we need to setup a x86 android emulation with Intel HAXM support. The problem is that by using the native AVD on Android SDK you can do this setup BUT without the Google APIs, namely the GMaps API, which makes testing apps depending on those APIs, impossible on this high performance simulation.\r\n\r\nAlthough it is possible to add Google APIs to a standard x86 AVD, the process is very complex and involves copying the libraries from other non-x86 AVDs and rebuilding a system image which takes a lot of time and effort for each simulator setup you want to have.\r\n\r\nSo Genymotion does it all under the hood and allows us to select between several android models and even simulate external sensors and GPS location, much like the Apple Simulator does.\r\n\r\nThe standard Titanium build script has some problems that causes the Simulator session not to be recognized as a valid deployment target (using titanium build -p android -T device), even though adb successfully recognizes the simulation under adb devices.\r\n\r\nIn order to fix this I have found some hints on a russian weblog and changed it a bit for working on my Mac.\r\n\r\nI have successfully run my Titanium app on Genymotion using Titanium CLI by doing the following:\r\n\r\n\r\nhttp://reinraus.ru/wordpress/nastraivaem-titanium-studio-dlya-zapuska-prilozhenij-v-android-x86/\r\n\r\nIt is written in Russian, so please use the Google Translate tool, he has made 3 changes on the build script.\r\n\r\nThe tutorial is for windows, so if you're running Titanium on a Mac or Windows, just change the first patch from:\r\n\r\n{code}\r\ndev_id, dev_type=output.split(\"\\r\\n\")[1].split(\"\\t\")\r\n{code}\r\n\r\nto:\r\n\r\n{code}\r\ndev_id, dev_type=output.split(\"\\n\")[1].split(\"\\t\")\r\n{code}\r\n\r\nIt seems there is still a tiny problem with Logcat on the end, but the app successfully run on Genymotion after this patch.", "attachment": [ { "id": "40993", "filename": "builder.py", "author": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "created": "2013-07-23T19:25:28.000+0000", "size": 96981, "mimeType": "text/x-python-script" } ], "flagged": false, "summary": "Android: Fix Titanium Build Script in order to support Genymotion Android Emulator", "creator": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "subtasks": [], "reporter": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "environment": "Titanium 3.1.1.GA\r\nMac OS X 10.8.3", "comment": { "comments": [ { "id": "262879", "author": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "body": "Follows my builder.py script patched and working attached to this issue.", "updateAuthor": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "created": "2013-07-23T19:25:28.000+0000", "updated": "2013-07-23T19:25:28.000+0000" }, { "id": "265089", "author": { "name": "ptquang86", "key": "ptquang86", "displayName": "Quang Pham", "active": true, "timeZone": "Asia/Jakarta" }, "body": "one vote for this :)", "updateAuthor": { "name": "ptquang86", "key": "ptquang86", "displayName": "Quang Pham", "active": true, "timeZone": "Asia/Jakarta" }, "created": "2013-08-06T13:46:47.000+0000", "updated": "2013-08-06T13:46:47.000+0000" }, { "id": "269453", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Pull request: https://github.com/appcelerator/titanium_mobile/pull/4646", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2013-09-04T10:23:20.000+0000", "updated": "2013-09-04T10:23:20.000+0000" }, { "id": "275399", "author": { "name": "timanrebel", "key": "timanrebel", "displayName": "Timan Rebel", "active": true, "timeZone": "Europe/London" }, "body": "@Chris could you explain in one sentence hoe to use the new setup? ", "updateAuthor": { "name": "timanrebel", "key": "timanrebel", "displayName": "Timan Rebel", "active": true, "timeZone": "Europe/London" }, "created": "2013-10-17T09:43:51.000+0000", "updated": "2013-10-17T09:43:51.000+0000" }, { "id": "275400", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~timanrebel] This feature is not ready for preview. It is unstable and has not been merged into master yet which means it's not in the CI builds. You'll be able to preview the new and much improved Android build system shortly. Just hang in there a little while longer. :)", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2013-10-17T09:48:03.000+0000", "updated": "2013-10-17T09:48:03.000+0000" }, { "id": "275404", "author": { "name": "timanrebel", "key": "timanrebel", "displayName": "Timan Rebel", "active": true, "timeZone": "Europe/London" }, "body": "[~cbarber] I understand, I will keep using my customized builder.py for now then. Thanks!", "updateAuthor": { "name": "timanrebel", "key": "timanrebel", "displayName": "Timan Rebel", "active": true, "timeZone": "Europe/London" }, "created": "2013-10-17T10:10:06.000+0000", "updated": "2013-10-17T10:13:25.000+0000" } ], "maxResults": 6, "total": 6, "startAt": 0 } } }