Android 4.2以后,使用so文件无法打包到apk中

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来进行解决。

问题解决!

你可能感兴趣的:(Android小细节,Android开发工具,Android,Studio使用技巧,android,android,studio,gradle,移动开发)