首页 > 学院 > 开发设计 > 正文

安卓打包混淆报错:can't find superclass or interface各种警告找不到

2019-11-09 18:26:46
字体:
来源:转载
供稿:网友

警告内容如下示例:

[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.b: can't find referenced method 'boolean addNmeaListener(android.location.GpsStatus$NmeaListener)' in class android.location.LocationManager[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.b: can't find referenced method 'void removeNmeaListener(android.location.GpsStatus$NmeaListener)' in class android.location.LocationManager[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.b: can't find referenced class android.location.GpsStatus$NmeaListener[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.b$a: can't find referenced class android.location.GpsStatus$NmeaListener[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.c: can't find referenced class android.telephony.cdma.CdmaCellLocation[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.c$a: can't find referenced method 'int getLac()' in class android.telephony.NeighboringCellInfo[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.c$b: can't find referenced class android.telephony.SignalStrength[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.c$b: can't find referenced class android.telephony.SignalStrength[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.c$b: can't find referenced class android.telephony.SignalStrength[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.c$b: can't find referenced class android.telephony.SignalStrength[2014-01-06 08:58:44 - emp_android] Warning: com.lakala.b.b$2: can't find referenced method 'boolean isWiredHeadsetOn()' in class android.media.AudioManager[2014-01-06 08:58:44 - emp_android] Warning: com.lingtu.mapapi.MapView: can't find referenced method 'int getPointerCount()' in class android.view.MotionEvent[2014-01-06 08:58:44 - emp_android] You should check if you need to specify additional PRogram jars.[2014-01-06 08:58:44 - emp_android] Warning: there were 20 unresolved references to classes or interfaces.[2014-01-06 08:58:44 - emp_android] You may need to specify additional library jars (using '-libraryjars').[2014-01-06 08:58:44 - emp_android] Warning: there were 8 unresolved references to program class members.[2014-01-06 08:58:44 - emp_android] Your input classes appear to be inconsistent.[2014-01-06 08:58:44 - emp_android] You may need to recompile them and try again.[2014-01-06 08:58:44 - emp_android] Alternatively, you may have to specify the option [2014-01-06 08:58:44 - emp_android] '-dontskipnonpubliclibraryclassmembers'.[2014-01-06 08:58:44 - emp_android] java.io.IOException: Please correct the above warnings first.[2014-01-06 08:58:44 - emp_android]at proguard.Initializer.execute(Initializer.java:321)[2014-01-06 08:58:44 - emp_android]at proguard.ProGuard.initialize(ProGuard.java:211)[2014-01-06 08:58:44 - emp_android]at proguard.ProGuard.execute(ProGuard.java:86)[2014-01-06 08:58:44 - emp_android]at proguard.ProGuard.main(ProGuard.java:492)

**大体意思是找不到相关的类或者方法,因为工程引入了第三方包,混淆的时候如果把第三方包也混淆了,那么相关的类在使用这些包的时候就会找不到相关方法。 因此在proguard.cfg加上以下代码:**

-dontwarn com.baidu.** -keep class com.baidu.** { *;} -dontwarn com.lakala.** -keep class com.lakala.** { *;} -dontwarn com.lingtu.** -keep class com.lingtu.** { *;} -dontwarn com.xx.bbb.**-keep class com.xx.bbb.** { *;}

参数来保持第三方库中的类而不乱,-dontwarn和-keep 结合使用,意思是保持com.xx.bbb.这个包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到com.xx.bbb.这个包里面的类的相关引用。 配置好后,配置混淆打开,

buildTypes { release { signingConfig signingConfigs.release //打印的开关,关闭 buildConfigField "boolean", "LOG_DEBUG", "false" minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug {

重新打包,就可以打包成功了。

–>路要一步一步走,记住自己走过的路,不再犯同样的错误,才是真正的成长!欢迎指点、交流。<–


上一篇:Handler系列(一)之ThreadLocal

下一篇:11

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表