在Android Studio 升级到4.2.1后(有可能是这个问题),导致打包的时候提示“Entry name 'classes.dex' collided”。
之后百度的结果好些说是加上下面这句话(也就是so文件没有打包进去的原因):
android {
...
packagingOptions {
exclude 'classes.dex'
exclude '**.**' //这个也要添加哦
}
}
但是忽略了他们说的上一句话:“删除app/build 和app/release目录下所有apks,或直接删除两个目录下所有文件,再编译生成apk。”
因为项目集成了友盟推送,里面涉及到了lib下面的so库。在某一天发现友盟报错了:onFailure: =-11 accs bindapp error, 就是so库没有了。
原因就是加上了packagingOptions这个配置,去掉就好了。这时候会报刚开始的错(Entry name 'classes.dex' collided),删除app/build 和app/release目录下所有apks就好了。
通过“Analyze Apk...”对app-debug.apk分析后,下面是加上上面这句话和不加的区别:
图1 图2
图2中画红框的就是丢失的文件,其中lib文件夹里面放的就是so库文件,可以说整个都丢失了。所以上面那句packagingOptions加的时候一定要慎重!!!
网友评论