发布网友 发布时间:2022-04-23 13:40
共1个回答
热心网友 时间:2023-06-24 09:34
混淆代码的时候注意事项:android使用打包过程中proguard混淆后,会导致一些错误1.写在视图xml中的onClick响应出错.因为写在xml中的onClick是通过反射调用的,proguard认为它们没有在代码中被调用过,所以将它们从代码中除掉或改名了.解决方法:在proguard.cfg中添加以下代码,就可以防止被配在视图xml中的onClick方法被proguard优化掉-keepclassmembersclass*extendsandroid.app.Activity{publicvoid*(android.view.View);}2.jni反调java方法这些类或方法同样可能会被proguard认为没有调用过而被除掉,或都被改名.这些方法最好统一写在一个类中,然后这个类不作优化,或是找出所有jni调用过的类与方法,在proguard.cfg中配置,不对它们作优化3.其它反射调用的java类与方法使用反射时一定要注意proguard可能会认为那些方法未被调用过,会在代码优化过程中将它们改名或除去.在使用反射的地方一定要在proguard.cfg中配置,不优化反射调用过的类和方法最后在proguard优化过后会产生一些文件mp.txt–描述.apk文件中所有类文件间的内部结构mapping.txt–列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。seeds.txt–列出了未被混淆的类和成员usage.txt–列出了从.apk中删除的代码要注意分析mapping.txt与usage.txt看xml视图中写的onClick响应函数,jni调用到的java类与方法,反射调用过的类与方法是否被混淆或重命名-keepclasscom.badlogic.gdx.backends.android.**{*;}像这样的只是不混淆:这个包下的类(不包括子包里的东西),用到一个第三文的类就要把这个类所在的包,像上面加上还要注意的是android-support-v4.jar这个包问题,这里加上了对这个jar包的处理详细可参见:9928801