Android Studio打包中already added问题解决

Android Studio打包时报错,如下

AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/crashlytics/android/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/crashlytics/android/ndk/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/crashlytics/android/beta/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/crashlytics/android/answers/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/crashlytics/android/core/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lio/fabric/sdk/android/BuildConfig;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lorg/apache/commons/lang/ArrayUtils;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lorg/apache/commons/lang/BitField;","sources":[{}]}
AGPBI: {"kind":"error","text":"Uncaught translation error: java.lang.IllegalArgumentException: already added: Lorg/apache/commons/lang/BooleanUtils;","sources":[{}]}
 

一般情况下发生already added很容易就能联想到是重复依赖导致的问题,比如上面错误中org/apache/commons/lang的几个错,经过排查时在两个module中引用了一样的jar包导致的,这个很好解决,删一个留一个就好了。

但是前面6个crashlytics相关的错误,经过排查,并没有重复引用,也没有相同的jar包,折腾了好久。

最后发现其实是因为Android Studio在打包的时候,对于依赖的module会打包成aar文件来引用。module打包成aar文件的过程中,会根据module的manifest.xml中的package生成一个BuildConfig.class文件。如果module本身引用的jar包中已经有BuildConfig类并且路径一样的话,两者冲突就会导致如上的报错。

解决方法有两种

1、改manifest.xml中的package,但是不确定会不会引起别的问题。

2、删掉jar包中的BuildConfig。这个不会引起别的问题,不过要注意不要破坏jar包的格式。

命令行删除jar包中文件方法如下:

jar -xvf com-crashlytics-sdk-android_beta-classes   //解压jar包

rm -rf com/crashlytics/android/beta/BuildConfig.class  //删除BuildConfig

rm -rf com-crashlytics-sdk-android_beta-classes.jar  //删除原来的jar包

jar -cvf com-crashlytics-sdk-android_beta-classes.jar ./  //打包新的jar包

完成

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值