网上淘来的,收藏一下!
    android打包apk的时候一般都会混淆,而在eclipse中常使用的是proguard来混淆。有很多时候引用了第三方包的时候会导致打包不成功,或者打包成功不能运行的情况。

首先看看正常的proguard.cfg文件里面可以怎么写:

简单的android系统,没有第三方包

  1. -injars      bin/classes
  2. -outjars     bin/classes-processed.jar
  3. -libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar
  4. -dontpreverify
  5. -repackageclasses ''
  6. -allowaccessmodification
  7. -optimizations !code/simplification/arithmetic
  8. -keep public class mypackage.MyActivity

完整的android系统

  1. -injars bin/classes
  2. -injars libs
  3. -outjars bin/classes-processed.jar
  4. -libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar
  5. -dontpreverify
  6. -repackageclasses ''
  7. -allowaccessmodification
  8. -optimizations !code/simplification/arithmetic
  9. -keepattributes *Annotation*
  10. -keep public class * extends android.app.Activity
  11. -keep public class * extends android.app.Application
  12. -keep public class * extends android.app.Service
  13. -keep public class * extends android.content.BroadcastReceiver
  14. -keep public class * extends android.content.ContentProvider
  15. -keep public class * extends android.view.View {
  16. public <</span>init>(android.content.Context);
  17. public <</span>init>(android.content.Context, android.util.AttributeSet);
  18. public <</span>init>(android.content.Context, android.util.AttributeSet, int);
  19. public void set*(...);}
  20. -keepclasseswithmembers class * {
  21. public <</span>init>(android.content.Context, android.util.AttributeSet);}
  22. -keepclasseswithmembers class * {
  23. public <</span>init>(android.content.Context, android.util.AttributeSet, int);}
  24. -keepclassmembers class * extends android.content.Context {
  25. public void *(android.view.View);
  26. public void *(android.view.MenuItem);}
  27. -keepclassmembers class * implements android.os.Parcelable {
  28. static android.os.Parcelable$Creator CREATOR;}
  29. -keepclassmembers class **.R$* { public static <</span>fields>;}

如果加了android.support包的话,那么要加上

  1. -keep class android.support.**{*;}
  1. -dontwarn android.support.**

一劳永逸,免得打包的时候就报错。加上keep就是 告诉proguard不用混淆这个包里面的类,如果不加这个,报错会比较明显,会报出support包的错,其它的第三方的包最好也不要混淆,原样就可以了。

还有一些是打包的时候不会出错,但是在打成包之后安装运行就不行了。这时候要注意观察一下提示的信息,比如空指针异常,或者是反射的时候报错,那么 这个时候要注意了,是不是实体类被混淆了。导致找不到实体类无法get或者set,那么这个时候应该做的事情是阻止proguard对实体类的混淆,比 如:

  1. -keep public class mypackage.MyBean { public void setMyProperty(int); public int getMyProperty();}

这样的话实体类被保存下来了,就不会出现找不到的情况了,一般引用了json类的包或者orm类的包可能会有这样的错误出现。

当有注解的时候

  1. -keepattributes Signature
  2. -keepattributes *Annotation*

别忘了加上这两句,减少错误的发生。

如果还有一些不明的错误的话,可以试着更新一下proguard的版本,使用最新的版本。毕竟再成熟的系统也是有BUG的。

转载于:https://www.cnblogs.com/crane13/archive/2013/05/31/3150150.html

Android--混淆打包找不到资源类的…相关推荐

  1. Android 找不到资源异常,Android 问题之找不到资源解决办法

    今天遇到了一个问题,给我报了个找不到资源 04-28 09:34:51.591: E/AndroidRuntime(1849): FATAL EXCEPTION: main 04-28 09:34:5 ...

  2. Android混淆打包

    在这之前,看了下proguard官网介绍,并搜了下相关资料. ProGuard简单介绍 ProGuard是一个SourceForge上很知名的开源项目.官网网址是:http://proguard.so ...

  3. Android 混淆打包不混淆第三方jar包

    项目由于要公布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件里加入不须要混淆的类和第三方的jar包 这个是保持自己包中不须要混淆的类,假设有些类调用了jni也不 ...

  4. android 混淆打包教程,Android studio 混淆打包

    AndroidStudio中的项目可以用compile的形式引入github上的开源项目,可以引用module,而不一定都要用libs文件夹中添加jar包的形式. 在最终realease打包时,混淆的 ...

  5. Android 混淆打包

    2019独角兽企业重金招聘Python工程师标准>>> 修改project.properties文件 [html] view plaincopy #proguard.config=$ ...

  6. Android中打包含有Activity以及资源文件的jar包在工程中调用

    如何将资源以及activity文件打包成jar文件供项目调用,从android的官方文档中找到的完美的解决,这里做一个总结. 最近刚刚发布了一款小应用<诗词大全>,有兴趣的朋友请实用提出您 ...

  7. 关于android R 中找不到资源的文件问题的解决

    今天下午遇到一个很蛋疼的问题,忽然中R文件下的所有资源都不能用,提示错误. 开始以为是R文件消息,clean之后文件已存在,然后看了R文件,其实是有生成的,找了很久都不知道什么原因. 后来发现原来是在 ...

  8. android 开发sdk 找不到java类_开发Cordova插件(Android)时找不到源Java类

    我正在开发Cordova的插件,该插件使用名为pagseguro的巴西付款api. 但这不是重点. 当我将cordova插件添加到项目中并运行" cordova run android&qu ...

  9. 解决android混淆编译出现Proguard returned with error code 1和文件名、目录名或卷标语法不正确错误...

    如果你在用android混淆打包的时候出现形如下面的错误: Proguard returned with error code 1. See console [2012-09-25 09:50:39 ...

最新文章

  1. pd.get_dummies
  2. python 创建空文件的方法
  3. mac安装完python怎么打开-MAC中怎么安装python
  4. iOS --高仿QQ空间页面
  5. salt 执行命令等待_saltstack异步执行命令
  6. iOS之多线程的使用和优缺点比较
  7. 从入门到放弃,C++ 真这么难?
  8. aop源码分析之 —— 创建代理对象
  9. 创建表结构相同的表,表结构相同的表之间复制数据,Oracle 中 insert into XXX select from 的用法...
  10. liunx 加入域控_[整理篇]linux加入windows域之完美方案
  11. 经典机器学习系列(十三)【结构化学习】
  12. (马世龙)Linux下CACTI完全搭建技术文档一
  13. 禁止浏览器记录 文本框之前输入过的内容
  14. 数据挖掘课程设计实战——基于Django开发的音乐推荐系统网站
  15. 涉密计算机检查问题,针对RG涉密信息自检查工具1.0Beta检查出来的电脑泄密问题的应对措施?...
  16. 端午节放假安排出来啦,收藏这些端午节海报为端午节活动做准备吧
  17. yaml 变量引用_yaml语法简介
  18. OpenLayers坐标转换
  19. 遥感小目标检测论文梳理
  20. SEGGER Embedded Studio 4.22 入门之:配合cubemx 快速建立ES工程

热门文章

  1. mfc清空数组_MFC数组的使用
  2. linux基本命令iscsiadm,tgtadm和iscsiadm命令的用法
  3. python数据分析工具包_脑成像数据分析:Python工具包
  4. python搭建可视化管理平台_搭建可视化数据平台 superset
  5. 3.Ubuntu18.04取消警告音
  6. C++知识点9——函数重载,默认实参,内联函数
  7. 曲线拟合切比雪夫法C实现
  8. 记录避免一些逻辑问题的过程
  9. 计算机科技协会竞选书,加入计算机协会申请书
  10. 中班机器人上课视频_中班机器人律动公开课