Android 仅使用棒棒糖5.0和;5.1版本
自过去2个月以来,我们开始在开发人员控制台中仅接收一些三星设备的本机崩溃 这是坠机痕迹Android 仅使用棒棒糖5.0和;5.1版本,android,crash,android-5.0-lollipop,native,samsung-mobile,Android,Crash,Android 5.0 Lollipop,Native,Samsung Mobile,自过去2个月以来,我们开始在开发人员控制台中仅接收一些三星设备的本机崩溃 这是坠机痕迹 *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: 'samsung/ha3gjv/ha3g:5.0/LRX21V/N9000QXXUEBOG3:user/release-keys' Revision: '11' ABI: 'arm' pid: 10422, tid: 10478, name: A
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
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
你知道为什么会这样吗
这是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'
}
据了解,当使用Zopfli对apk进行zipaling时,一些三星设备上会产生此错误
根据您的build.gradle
您使用的是buildToolsVersion“23.0.0”
,因此我想说您的apk是使用Zopfli进行Zipaling的,这就是您发现的问题的根源(Zopfli是在21.0.0
版本中添加的)
请注意,当您使用Build->generate Signed apk
生成apk时,您的apk将自动zipaligned。发件人:
zipalign是一个归档对齐工具,它为Android应用程序(.apk)文件提供了重要的优化
要解决此问题,您可以避免自动zipalign将zipAlignEnabled false
添加到build.gradle的release
部分:
release {
//...
zipAlignEnabled false
}
然后,您需要再次生成apk(您可以检查您的apk是否在运行zipaling-c-v4 yourapk.apk
。它将输出验证失败
),然后使用手动zipaling对apk进行zipaling,避免使用-z
选项
zipalign -f -v 4 yourapk.apk yourzipalignedapk.apk
另一个选项是将buildToolsVersion
更改为,例如20.0.0
(此版本中的Zipalin工具不包括Zopfli),但不建议这样做(从):
您应该始终通过使用Android SDK管理器下载最新版本来更新构建工具组件。默认情况下,Android SDK使用最新下载版本的构建工具。如果您的项目依赖于较旧版本的构建工具,则SDK管理器允许您下载和维护单独版本的工具,以便与这些项目一起使用
我找到了正确的解决办法。
利用
-keep class !android.support.v7.internal.view.menu.**,android.support.v7.** {*;}
而不是
-keep class android.support.v7.** {*;}
可能与此有关。。谢谢Sunil,但是你提到的那个似乎不是你使用的zipalign的本地CrashId?我通过Android Studio选项生成APK,Build->generate Signed APK你可以发布你的Build.gradle
?谢谢Antonio的详细回答。将尝试此操作并确认此操作是否解决问题。然而,我有一个疑问,我也有多台安卓5.0和安卓5.1设备,但无法重现这个问题。那么,问题可能是随机发生的,而不是在所有设备上发生的吗?是的,我认为问题可能是随机发生的,也可能只是在某些设备上发生的。这类问题很烦人,因为它们很难追踪。请告诉我,如果你做了什么progress@user669231关于这个话题有什么新闻吗?有帮助吗?如果您能给出一些见解并接受这个答案(如果有帮助的话),那就太好了。@antonio想知道为什么zipalign手动可以解决这个问题?有什么区别吗?@antonio和zipaling“-z”代表什么??找不到关于它的任何信息。编辑:-z:使用Zopfli重新压缩
-keep class android.support.v7.** {*;}