Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-19898] Cannot build on a Nexus5x device

GitHub Issuen/a
TypeBug
PriorityMedium
StatusClosed
ResolutionFixed
Resolution Date2015-11-16T01:43:11.000+0000
Affected Version/sRelease 5.1.0
Fix Version/sRelease 5.1.0
ComponentsAndroid
Labelsn/a
ReporterRick Blalock
AssigneeChris Barber
Created2015-11-09T23:12:13.000+0000
Updated2015-11-17T20:06:03.000+0000

Description

When trying to build to a Nexus 5x I get the following:
[ERROR] The device "Nexus 5X" does not support the desired ABIs "armeabi", "armeabi-v7a", "x86"
[ERROR] Supported ABIs: arm64-v8a, arm64-v8a,armeabi-v7a,armeabi, armeabi-v7a,armeabi, arm64-v8a

You need to add at least one of the device's supported ABIs to the tiapp.xml

<ti:app xmlns:ti="http://ti.appcelerator.org">
    <!-- snip -->
    <android>
        <abi>armeabi,armeabi-v7a,x86,arm64-v8a,arm64-v8a,armeabi-v7a,armeabi,armeabi-v7a,armeabi,arm64-v8a</abi>
    </android>
</ti:app>
If I use ANY of the “supported ABI’s” mentioned in that message, in the tiapp.xml, they do not work and get the following:
[ERROR] Invalid ABI "arm64-v8a"

Valid ABIs:
   armeabi
   armeabi-v7a
   x86
If I enter ANY of those “valid ABI’s”, I get the previous message saying NExus 5x doesn’t support it. I can confirm that the Nexus 5x has the following: ro.product.cpu.abi=arm64-v8a Here is what a ti info provides on this device:
{
    "id": "00ab2d5a616eadc9",
    "state": "device",
    "sdk": "23",
    "release": "6.0",
    "model": "Nexus 5X",
    "brand": "google",
    "name": "Nexus 5X",
    "device": "bullhead",
    "abi": [
        "arm64-v8a",
        "arm64-v8a,armeabi-v7a,armeabi",
        "armeabi-v7a,armeabi",
        "arm64-v8a"
    ],
    "manufacturer": "LGE",
    "emulator": false
}

Comments

  1. Stephen Feather 2015-11-10

    This isn't new. This came up with the Nexus 9 nearly a year ago. Solution then was to hack the _build.js to not block the building based upon hardcoded validABIs. As of the date of this posting, hard coded values at line 72, comparison starts around line 1226.
  2. Chris Barber 2015-11-10

    [~sfeather] It's due to a typo... 1 little character. Fix is coming as soon as I have 1 minute, cuz that's exactly how long it'll take to fix. :)
  3. Chris Barber 2015-11-11

    We read the build properties of the device's OS and search for any line that contains the string ro.product.cpu.abi. The problem is newer devices have introduced new properties that we now match multiple times causing the discovered ABIs to be whack. Here's an example:
       ro.product.cpu.abi=arm64-v8a
       ro.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi
       ro.product.cpu.abilist32=armeabi-v7a,armeabi
       ro.product.cpu.abilist64=arm64-v8a
       
  4. Chris Barber 2015-11-11

    TiSDK PR: https://github.com/appcelerator/titanium_mobile/pull/7423 To test, plug in a Nexus 5x and run ti info -t android. Look in the output for the "devices" section and verify the device's ABIs is indeed an array of strings and that the value looks sane.
  5. Rick Blalock 2015-11-14

    Just tested on my Nexus 5x:
       Nexus 5X
         ID                          = 00ab2d5a616eadc9
         State                       = device
         SDK Version                 = 6.0 (android-23)
         ABIs                        = arm64-v8a, arm64-v8a,armeabi-v7a,armeabi, armeabi-v7a,armeabi, arm64-v8a
       
    Not sure why there are duplicated ABI's but it does indeed compile and run now. (golf clap) [~cbarber]
  6. Chris Barber 2015-11-15

    [~rblalock] There should not be duplicates. I should split each list of ABI's by a comma, then insert unique ones one. Since you have a device, can you please fix my code?
  7. Rick Blalock 2015-11-15

    [~cbarber] I just wrapped all your code in this and it works:
       // MAGIC:
       Blalock(function () {
       // Chris Barber's code here
       });
       
    (I'll look at it)
  8. Rick Blalock 2015-11-15

    Ok the dup's were my mistake: When running ti info, I was using GA but when building the app I was using the SDK with your fix. Ensured I was running ti info using your fix and it properly displays:
         ABIs                        = arm64-v8a, armeabi-v7a, armeabi
       
  9. Chee Kiat Ng 2015-11-16

    CR and FT passed. PR merged.
  10. Chris Barber 2015-11-16

    5_1_X Backport: https://github.com/appcelerator/titanium_mobile/pull/7449
  11. Lokesh Choudhary 2015-11-17

    Verified the fix. We can successfully build to Nexus 5X device also ABI's for the device shows :
    arm64-v8a, armeabi-v7a, armeabi
    Closing. Environment: Appc Studio : 4.4.0.201511101919 Ti SDK : 5.1.0.v20151116164430 Ti CLI : 5.0.5 Alloy : 1.7.26 MAC Yosemite : 10.10.5 Appc NPM : 4.2.1 Appc CLI : 5.1.0-60 Node: v0.10.37 Nexus 5X - Android 6.0

JSON Source