2016-04-08 48 views
7

Negli ultimi 2 mesi, abbiamo iniziato a ricevere arresti anomali nativi nella console degli sviluppatori solo per alcuni dispositivi Samsung.Arresti anomali nativi ricevuti nei dispositivi Samsung solo con versioni Lollipop 5.0 e 5.1

Ecco la traccia incidente

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
Build fingerprint: 'samsung/ha3gjv/ha3g:5.0/LRX21V/N9000QXXUEBOG3:user/release-keys' 
Revision: '11' 
ABI: 'arm' 
pid: 10422, tid: 10478, name: AsyncTask #2 >>> com.sample.app <<< 
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1c 
    r0 131413a0 r1 131413a0 r2 b1687070 r3 00262827 
    r4 00000349 r5 131413a0 r6 00000000 r7 00000002 
    r8 131412c0 r9 af071800 sl 87783218 fp 13141360 
    ip 000031d0 sp 9530e8c0 lr 7446c91f pc a0a83596 cpsr 000f0030 

backtrace: 
    #00 pc 001bc596 /data/dalvik-cache/arm/[email protected]@[email protected]@classes.dex 
    #01 pc 0008091d /system/framework/arm/boot.oat 

Ed ecco l'elenco dei dispositivi in ​​cui gli arresti sono stati ricevuti fino a data -

Galaxy S6 (zeroflte) 
Galaxy S6 Edge+ (zenltevzw) 
Galaxy A5(2016) (a5xelte) 
Galaxy S5 Neo (s5neolte)  
Galaxy S6 Edge (zerolte)  
Galaxy S6 (zerofltetmo) 
Galaxy Note3 (ha3g) 
Galaxy J7 (j7elte) 
Galaxy Note4 (trelte) 
Galaxy S5 (k3g) 
Galaxy Alpha (slte) 

Tutte le idee su perché sta accadendo?

Ecco build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.0" 

    defaultConfig { 
     applicationId "com.test" 
     minSdkVersion 14 
     targetSdkVersion 22 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    compile files('libs/okhttp-2.4.0.jar') 
    compile files('libs/okhttp-urlconnection-2.4.0.jar') 
    compile files('libs/okio-1.4.0.jar') 
    compile files('libs/mediaplayersdk.jar') 


    compile 'com.google.android.gms:play-services-analytics:8.4.0' 
    compile 'com.google.android.gms:play-services-ads:8.4.0' 
    compile 'com.android.support:appcompat-v7:23.1.0' 
} 
+0

Può essere qualcosa legato a questo .. http://developer.samsung.com/forum/board/thread/view.do?boardName=General&messageId= 280930 –

+0

Grazie Sunil, ma quello che hai citato non sembra essere un incidente nativo – user669231

+0

Hai usato zipalign? – Alexander

risposta

4

Secondo Android native crash initiating from /system/framework/arm/boot.oat questo errore viene prodotto su alcuni dispositivi Samsung quando apk è zipaligned utilizzando Zöpfli.

Secondo il vostro build.gradle si utilizza buildToolsVersion "23.0.0" quindi direi che l'apk è zipaligned using Zöpfli e questa è la fonte del problema che si stanno trovando (Zöpfli è stata aggiunta nella versione 21.0.0).

Si noti che quando si genera l'apk utilizzando Build -> Generate Signed APK l'apk viene automaticamente firmato con il codice zip. Da the documentation:

Zipalign è uno strumento di allineamento archivio che fornisce l'ottimizzazione importante applicazione Android (file .apk)

Per risolverlo, si può evitare automaticamente Zipalign aggiungendo zipAlignEnabled false alla sezione release di il vostro build.gradle:

release { 
    //... 
    zipAlignEnabled false 
} 

Quindi, è necessario generare nuovamente l'apk (è possibile verificare che il vostro apk non è allineato in esecuzione zipalign -c -v 4 yourapk.apk. Produrrà Verification FAILED) e quindi manualmente zipalign l'apk utilizzando the zipalign instructions, evitando l'opzione -z.

zipalign -f -v 4 yourapk.apk yourzipalignedapk.apk 

Altra opzione è quella di cambiare il buildToolsVersion, ad esempio 20.0.0 (lo strumento Zipalign in questa versione includono doen't Zöpfli), ma questo non è raccomandato (da the documentation):

Si dovrebbe mantieni sempre aggiornato il componente Strumenti di sviluppo scaricando l'ultima versione utilizzando Android SDK Manager. Per impostazione predefinita, Android SDK utilizza la versione scaricata più recente di Strumenti di sviluppo. Se i tuoi progetti dipendono da versioni precedenti di Strumenti di sviluppo, l'SDK Manager ti consente di scaricare e mantenere versioni separate degli strumenti da utilizzare con quei progetti.

+0

Grazie Antonio per la risposta dettagliata. Provalo e conferma se questo risolve il problema. Tuttavia, un dubbio che ho è che anch'io ho più dispositivi Android 5.0 e Android 5.1, ma non è stato possibile riprodurre il problema. Quindi è possibile che il problema si verifichi casualmente e non su tutti i dispositivi? – user669231

+0

Sì, penso che il problema possa verificarsi in modo casuale o solo su alcuni dispositivi. Questo tipo di problemi sono molto fastidiosi perché sono difficili da tracciare. Per favore, fatemi sapere se avete qualche progresso – antonio

+0

Avete finalmente risolto il problema? – antonio

0

Ho trovato la soluzione corretta here. Utilizzando

-keep class !android.support.v7.internal.view.menu.**,android.support.v7.**  {*;} 

invece di

-keep class android.support.v7.** {*;}