解决transformNative_libsWithStripDebugSymbolForDebug办法
Posted zhujm320
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决transformNative_libsWithStripDebugSymbolForDebug办法相关的知识,希望对你有一定的参考价值。
GitHub上工程地址
https://github.com/jpush/jpush-hbuilder-demo.git
android studio4.0.1 在编译老项目时,由于NDK采用了android-ndk-r9b,编译出现如下错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
问题分析:
1. 当前工程并没有jni代码,不是由编译c/c++代码引起
2. 出现该问题,肯定是在编译时NDK对so做了一些操作
注意: so在打包到apk时,android studio会对so进行优化,如果优化可以确认的它利用了用户设置进来的NDK进行了优化
结论:
1. 编译so时采用的NDK与我们设置进去的android-ndk-r9b不兼容,猜测编译项目中的so采用的NDK版本估计更新
解决方案:
方案1. 打包so时,禁止NDK进行优化
在build.gradle中添加如下代码
android
...
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
debug
signingConfig signingConfigs.debug
//禁止优化so
packagingOptions
doNotStrip "**/*.so"
...
重新编译一下,编译通过
方案2. 采用更新的NDK,逐个NDK进行测试,通过多次尝试找到合适的NDK(目的就是尽量将我们设置的NDK和编译so的时候的NDK保持一致)
我这边选择了android-ndk-r14b,也能编译通过
以上两种方式都解决以上问题,如果不知道第三方的so采用哪一个NDK版本编译的话,个人更加倾向采用第一个方案来解决。
以上是关于解决transformNative_libsWithStripDebugSymbolForDebug办法的主要内容,如果未能解决你的问题,请参考以下文章