如果工程引入了android-support-v4的jar类库,那么在工程打包混淆时,就会出现报错提示。例如提示你:You may need to specify additional library jars (using '-libraryjars')。
这里先给出解决方案,稍后我们再来解释如何处理类似情况:
在proguard.cfg里的后面,添加如下内容:
[java]
-libraryjars /android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
然后你再打包看看,应该可以正常生成apk安装包了。
打包出错:
情况一:
"类1 can't find referenced class 类2" 字面上的意思就是类1找不到类2的引用;它会建议你:"You may need to specify additional library jars (using '-libraryjars').";
需要使用-libraryjars加上项目中使用到的第三方库就OK了。
例如:-libraryjars /android-support-v4.jar
注意:这里引用方式是当前工程的根目录(也可以配置其他目录),也就是说,你要把第三方jar放到当前目录下,否则就会警告说找不到jar文件!
情况二:
例如: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator,碰到这样的情况,可以使用-dontwarn com.xx.yy.**,不对错误提出警告。
注意:使用这个方式的话,要确保自己没有用到这个库里面的类!否则就会抛ClassNotFoundException!
情况三:
在工程中确实用到了该类,采用上面方式还是不行。这个时候就要再增加一项:-keep class com.xx.yy.** { *;},让当前类不混淆。
小结:
对于引用第三方包的情况,可以采用下面方式避免打包出错:
-libraryjars /aaa.jar
-dontwarn com.xx.yy.**
-keep class com.xx.yy.** { *;}
最后打包成功,还要在机子上跑跑,看看有没有问题。
相关推荐
-keep class android.support.v4.** { *; } -keep class com.google.zxing.** { *; } -keep class Decoder.BASE64Encoder.** { *; } -keepattributes Signature -keepclassmembers class * implements java.io....
EVE Online是一款深度策略性的太空模拟游戏,玩家在游戏中可以积累大量的虚拟资产,包括飞船、装备、物品等,而jEveAssets-legacy就是为了解决这些资产的记录、分析和管理问题。 在项目描述中提到的链接可能是下载...
在这个示例中,开发者使用了`android.support.v4.widget.DrawerLayout`作为基础布局,它是Android Support Library的一部分,用于实现抽屉效果。同时,可能还使用了`NavigationView`来构建抽屉内的菜单项,它允许...
- `android.support.v4.widget.DrawerLayout` 是实现导航抽屉的关键组件,它是Android支持库的一部分,可以兼容多个Android版本。 2. **可扩展列表视图(ExpandableListView)** - `ExpandableListView` 是...
此外,应用还依赖于Android Support Library v4,这是一个重要的库,提供了对早期Android版本的兼容性支持,同时包含了许多对开发有帮助的组件和服务,如Fragment、Loader、ViewModel等。这些组件可以帮助开发者创建...