Android Studio 升级到4.2或最新版本,比如Dolphin | 2021.3.1,有时打包的时候会出现提示“Entry name ‘classes.dex’ collided”。
通过网上查询发现,需要在build.gradle的android下配置
packagingOptions {
exclude 'classes.dex'
exclude '**.**'
}
可以避免这个问题。通过这种方式确实解决了这个问题,但是后面由于项目需要集成友盟推送,在集成过程中出现了新的问题。
通过友盟推送最新的自动化集成方式,在build.gradle中引入了最新的推送版本push:6.5.5,里面默认集成了libtnet-3.1.14.so和libumeng-spy.so。
功能上面都是OK的。
但是在实际运行上发现无法获取device_Token,按照提示是说appkey和message secret是否配置正确或查看apk文件,检查libs目录中so文件夹,确保每个文件夹中都有libtnet-xxx.so。
通过查看apk文件发现里面没有libs文件夹。刚开始以为是jar包或so文件冲突导致的,但是也没有报错的地方。
通过各种排查发现是因为上面的那个build配置导致的。把上面的那个配置去掉再进行打包就是没问题的了。
至于一开始的“Entry name ‘classes.dex’ collided”问题,可以通过删除app/build 和app/release目录下所有apks来进行解决。
问题解决!