簡體   English   中英

僅Lollipop 5.0和5.1版本在Samsung設備中收到的本機崩潰

[英]Native crashes received in Samsung devices only with Lollipop 5.0 & 5.1 versions

自過去兩個月以來,我們僅在某些三星設備上開始在開發人員控制台中接收本機崩潰。

這是崩潰跟蹤

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
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/data@app@com.sample.app-2@base.apk@classes.dex
    #01 pc 0008091d  /system/framework/arm/boot.oat

這是迄今為止已收到崩潰的設備的列表-

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)

關於它為什么發生的任何想法?

這是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'
}

根據從/system/framework/arm/boot.oat引發的Android本機崩潰,當使用Zopfli壓縮apk時,在某些三星設備上會產生此錯誤。

根據您的build.gradle您使用的是buildToolsVersion "23.0.0"因此我想說您的apk使用Zopfli進行了zipaligned,這就是您所發現問題的根源(Zopfli是在21.0.0版中21.0.0 )。

請注意,當您使用Build -> Generate Signed APK apk時,您的apk會自動zipaligned。 文檔中

zipalign是一個存檔對齊工具,可為Android應用程序(.apk)文件提供重要的優化

為了解決這個問題,就可以避免自動的zipalign上添加zipAlignEnabled falserelease您的部分build.gradle

release {
    //...
    zipAlignEnabled false
}

然后,您需要再次生成apk(運行zipalign -c -v 4 yourapk.apk可以檢查apk是否為zipalign -c -v 4 yourapk.apk ,它將輸出Verification FAILED ),然后使用zipalign指令手動對apk進行zipalign ,避免了-z選項。

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

另一個選項是將buildToolsVersion更改為例如20.0.0 (此版本中的zipalign工具不包含Zopfli),但是不建議這樣做(來自文檔 ):

您應該始終通過使用Android SDK Manager下載最新版本來更新Build Tools組件。 默認情況下,Android SDK使用構建工具的最新下載版本。 如果您的項目依賴於舊版本的“構建工具”,則SDK Manager允許您下載和維護用於這些項目的單獨版本的工具。

我在這里找到了正確的解決方案。 通過使用

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

代替

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM