习惯了使用AndroidStudio开发,多渠道打包实在是太方便了,可是在使用Androidstudio却发现接入的游戏出现闪退,而在在eclipse下正常运行。分析可能是Androidstudio版本的问题,换了版本并且删了配置,暂时解决了问题,不过使用后升级后又遇到问题,只有对正常的版本和不正常的版本对比,发现不正常的版本里面的so大小不正确,出现残缺。
排查gradle构建时生成stripDebugSymbol内之前,so都是完整的,只有这里的so的大小和md5和最后的debug版本的so一致。故只要在最后生成apk前删除这个目录下的so并且,把项目下的so拷贝过去,就可解决问题。
修改项目的 build.gradle,添加project.afterEvaluate {
packageDebug.doFirst {
delete{
delete ‘build/intermediates/transforms/stripDebugSymbol/debug/0/lib/armeabi’
}
copy{
from ‘src/main/jniLibs/armeabi’
into ‘build/intermediates/transforms/stripDebugSymbol/debug/0/lib/armeabi/’
include ‘*.so’
}
}
}
而Release版本只需要把红色标注的debug修改为release即可。删除项目build目录重新编译运行,此时build/intermediates/transforms/stripDebugSymbol/debug/0/lib/armeabi/
目录下so完整,app可以正常运行。
这样做局限性比较多,且对于多于渠道打包需要运行时才能修改。
终极解决方案packagingOptions {
doNotStrip “**/*.so”
}
删除项目build目录重新编译运行即可。