编译apk时,出现一些native类找不到的情况,原因是被produard优化掉了。
1.proguard是做什么的,ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法.
ProGuard的使用是为了:
(1).创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.
(2).创建的程序和程序库很难使用反向工程.
(3).所以它能删除来自源文件中的没有调用的代码
(4).充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.
2.因为proguard是混淆工具,所以android的mk文件也对其支持为两种方式:
1.指定不需要混淆的native方法与变量的proguard.flags文件
如:LOCAL_PROGUARD_FLAG_FILES := $(LOCAL_PATH)/proguard.flags
2.制定编译的工程,不要使用代码混淆的工具进行代码混淆
如:LOCAL_PROGUARD_ENABLED := disabled
3.不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆
1.proguard是做什么的,ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法.
ProGuard的使用是为了:
(1).创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.
(2).创建的程序和程序库很难使用反向工程.
(3).所以它能删除来自源文件中的没有调用的代码
(4).充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.
2.因为proguard是混淆工具,所以android的mk文件也对其支持为两种方式:
1.指定不需要混淆的native方法与变量的proguard.flags文件
如:LOCAL_PROGUARD_FLAG_FILES := $(LOCAL_PATH)/proguard.flags
2.制定编译的工程,不要使用代码混淆的工具进行代码混淆
如:LOCAL_PROGUARD_ENABLED := disabled
3.不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆