{ "id": "171517", "key": "TIMOB-25966", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "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": [], "resolution": null, "resolutiondate": null, "created": "2018-04-14T11:52:38.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-04-17T20:04:15.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "13103", "name": "CLI", "description": "Node-based command line interface" } ], "description": "This is a proposal to split the Android core into different (.so) sub-modules in order to decrease the general APK binary size (~ 28MB after the most recent 64 Bit changes). On iOS, we do this since a few years - triggered by the same reasons, practically by wrapping all classes in precompiler statements like {{USE_TI_UITABLEVIEW}}. The macros are generated [by the CLI|https://github.com/appcelerator/titanium_mobile/blob/master/iphone/cli/commands/_build.js#L6075] and represent the Titanium symbols used within the app. For Android, this could be done similar, but will also require major refactoring of the package structure itself.", "attachment": [], "flagged": false, "summary": "Android: Use conditional compiling to decrease binary size", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "436925", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I think a better solution would be to get rid of the C/C++ code generation and set up the V8/JNI bindings dynamically instead. This would significantly reduce the app size and we would no longer need the Android NDK to do hyperloop and module builds, which also means faster build times. While setting up the V8/JNI bindings dynamically would add overhead on startup, doing a loadLibrary() on a large *.so file already has huge overhead and reducing its size may even-out the performance implications.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-04-16T18:31:03.000+0000", "updated": "2018-04-17T20:04:15.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }