[日常问题]升级gradle后renderscript出现android.os.DeadObjectException

来源:互联网 发布:au mac 破解 编辑:程序博客网 时间:2024/06/05 02:16

起因

项目需要新功能,于是提高了targetSdkVersion
然后需要升级gradle才能用
于是乎就去升级gradle了

一番折腾后,终于升级好了
然后解决一大堆问题比如:新的gradle需要jdk8才能用,ndk不生成新的库的话,需要限定项目支持的ndk,gradle task任务修改,jvm内存不够等等

最后运行项目却发现部分手机在用到renderscript的地方会出现android.os.DeadObjectException
然后用排除法确定了就是renderscript的问题
然后回忆起构建的时候会出现一些警告

warning: Linking two modules of different data layouts: '/Users/AndroidStudio/android-sdk-macosx/build-tools/25.0.0/renderscript/lib/bc/mips/libclcore.bc' is 'e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64' whereas '../publish/release/raw/stackblur.bc' is 'e-p:32:32-i64:64-v128:64:128-n32-S64'warning: Linking two modules of different target triples: '/Users/AndroidStudio/android-sdk-macosx/build-tools/25.0.0/renderscript/lib/bc/mips/libclcore.bc' is 'armv7--linux-android' whereas '../publish/release/raw/stackblur.bc' is 'armv7-none-linux-gnueabi'

然后google发现删除就可以解决这个问题

renderscriptSupportModeEnabled true

经过测试,删除后确实解决了崩溃的问题,页面也可以正常显示了
但是由于项目配置是这样的

minSdkVersion 14targetSdkVersion 23renderscriptTargetApi 18renderscriptSupportModeEnabled true

并且也用到了renderscript Api18
所以删掉之后在api14-17的本来正常的手机上,也出现了崩溃的问题

最后经过一系列研究renderscript,确定自己代码没有问题后,回忆自己的改动,再尝试回退到distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip
之后,终于正常了,升级后的gradle为4.1,回退就正常了

结论

后来又和专门研究过gradle的大神朋友讨论了一番,他之前也发现gradle4.1存在其他bug,建议我不要用4.1的就行了,而且as本身也不提示建议更新到4.1

阅读全文
0 0
原创粉丝点击