一、介绍
这几天接入了一个GVoice的SDK,后来在出包安卓包的时候发现了一个问题,报错内如如下
E:\unityProject\GVoice\Temp\gradleOut\launcher\build\intermediates\project_dex_archive\release\out\com\yuanzhuokeji\voicetest\BuildConfig.dex: D8: Type com.yuanzhuokeji.voicetest.BuildConfig is defined multiple times: E:\unityProject\GVoice\Temp\gradleOut\launcher\build\intermediates\project_dex_archive\release\out\com\yuanzhuokeji\voicetest\BuildConfig.dex, E:\unityProject\GVoice\Temp\gradleOut\unityLibrary\GCloudVoice.androidlib\build.transforms\3657f24505d25e9bdd92f28ea61f7d3d\classes\classes.dex
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Type com.yuanzhuokeji.voicetest.BuildConfig is defined multiple times: E:\unityProject\GVoice\Temp\gradleOut\launcher\build\intermediates\project_dex_archive\release\out\com\yuanzhuokeji\voicetest\BuildConfig.dex, E:\unityProject\GVoice\Temp\gradleOut\unityLibrary\GCloudVoice.androidlib\build.transforms\3657f24505d25e9bdd92f28ea61f7d3d\classes\classes.dex
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
二、报错分析
看这里的问题主要是com.yuanzhuokeji.voicetest被定义了多次,从而导致了打包报错。
看自己的工程一般定义这种都是在AndroidManifest.xml中定义多次或者跟自己打包的签名写的一致造成的
如下是包名这块的定义
如下是AndroidManifest.xml文件
从上面这两个图中发现SDK中的AndroidManifest.xml文件中的引用被修改了,所以导致了上述的报错。
三、修改
接入SDK的时候里面的AndroidManifest.xml文件中的package定义不能改动,这里可能是关于jar包是否能正常解析的定义,所以拿到sdk的时候AndroidManifest.xml文件是不需要修改的,除非你要合并多个AndroidManifest.xml,否则尽量不要东这个文件。
四、总结
上述是我在接入SDK时,误操作修改了AndroidManifest.xml文件导致的打包报错,希望能够给大家带来帮助,感谢大家的支持。