Proguard打包混淆报错:can't find superclass or interface

来源:互联网 发布:mac ruby rvm 编辑:程序博客网 时间:2024/06/07 18:59

转载:http://blog.csdn.net/lvxiangan/article/details/17911623


在Eclipse打包工程时报如下错误:

[2014-01-06 08:58:44 - emp_android] Proguard returned with error code 1. See console

[2014-01-06 08:58:44 - emp_android] Warning: com.baidu.location.b$a: can't find superclass or interface android.location.GpsStatus$NmeaListener

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced class android.telephony.cdma.CdmaCellLocation

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced method 'int getLac()' in class android.telephony.NeighboringCellInfo

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced class android.telephony.cdma.CdmaCellLocation

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced class android.telephony.cdma.CdmaCellLocation

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced class android.telephony.cdma.CdmaCellLocation

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced class android.telephony.cdma.CdmaCellLocation

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.APS: can't find referenced class android.telephony.cdma.CdmaCellLocation

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.e: can't find referenced class android.telephony.SignalStrength

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.e: can't find referenced method 'void onSignalStrengthsChanged(android.telephony.SignalStrength)' in class android.telephony.PhoneStateListener

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.e: can't find referenced class android.telephony.SignalStrength

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.e: can't find referenced class android.telephony.SignalStrength

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.i: can't find referenced class android.telephony.SignalStrength

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.i: can't find referenced method 'void onSignalStrengthsChanged(android.telephony.SignalStrength)' in class android.telephony.PhoneStateListener

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.i: can't find referenced class android.telephony.SignalStrength

[2014-01-06 08:58:44 - emp_android] Warning: com.autonavi.aps.api.i: can't find referenced class android.telephony.SignalStrength

[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加上以下代码:

[html] view plain copy
  1. -dontwarn com.baidu.**  
  2. -keep class com.baidu.** { *;}  
  3.   
  4. -dontwarn com.lakala.**  
  5. -keep class com.lakala.** { *;}  
  6.   
  7. -dontwarn com.lingtu.**  
  8. -keep class com.lingtu.** { *;}  
  9.   
  10. -dontwarn com.autonavi.**  
  11. -keep class com.autonavi.** { *;}  

          其实找不到引用的这个类是第三方包里面的,而且很多时候我们只需要打乱自己的代码就行了,第三方包的代码就是否要打乱就不要管了。我们可以使用

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

参数来保持第三方库中的类而不乱,-dontwarn和-keep 结合使用,意思是保持com.xx.bbb.**这个包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到com.xx.bbb.**这个包里面的类的相关引用。
配置好后,重新打包,一切OK!而且程序能正确运行

(本文参考http://blog.csdn.net/u_xtian/article/details/7495023)

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 钓鲤鱼用饵一年四季口诀 全世爱之丝婚四年 四库 四库影库 四库一平台 四库平台 四库影院 四库影视 四库书 四库网 虎影四库 成人四库 四库虎1515h 四库影音 四库虎 四库网址 四库全书是哪四库 四库一 四库影库免费新网站 四库成语人精品 四库成语人精品884 四库影视76194 四库一平台查询入口 221ddaom四库影院进入2 四库虎开放90后 住建部四库一平台查询 四库全书总目 四库影视库在线播放 四库免费成语人精品国库 四库影视在线播放 四库一平台查询系统 四库影视库在线看 四库成语人精品国库 四库全书总目提要 全国四库一平台入口 四库全书一套多少钱 四库影视更新 红楼老太太四库书 四库影音884t 9869k四库影院 四库书手机版