suchen

Heim  >  Fragen und Antworten  >  Hauptteil

android - 自己写的代码混淆时需要注意什么

自己写的代码混淆时需要注意什么?初学proguard,以及混淆与平时的代码规范有什么联系

天蓬老师天蓬老师2771 Tage vor623

Antworte allen(4)Ich werde antworten

  • 黄舟

    黄舟2017-04-18 09:05:43

    我觉得你应该思考的是你这个类或这个方法是给谁用的,混淆过后它能不能找得到,比如activity,service之类的在清单文件注册,然后系统通过反射来进行调用,所以是不能混淆的。自定义控件也是,它会在布局文件中出现,也是系统通过发射来调用所以也不能混淆。还有native方法,参考方法的命名规则,它也是不能被混淆的。你可以参考这篇博客:http://blog.csdn.net/dai_zhen...。如果有错误还是要思考把什么不该混淆的混淆掉了,比如我之前用ionic,混淆一直出错,后来发现有一种javascript调用的本地的代码的类(不记得叫什么了),这个类是在配置文件声明的,估计也是通过反射来调用,所以是不能混淆的。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:05:43

    混淆中最需要注意的是代码中使用反射的部分,由于反射的使用大多数情况下是基于方法或者属性名称的,所以需要保证这些名词不被混淆才能使代码正常运行。一般Android官方或者第三方提供包的时候,也会给出一些混淆的忽略规则,虽然这些规格各不相同,但几乎所有规则的核心概念都是一致的,就是避免混淆使用反射部分的代码。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:05:43

    反射的代码,系统接口,jni接口,序列化和反序列化的,与服务端交互的javabean这些不能混淆,如果用第三方包的话,需要去查看这些包的混淆规则,如果不知道直接不混淆就可以了,毕竟一般用的第三方包都是开源的,混淆不混淆都一样的

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:05:43

    我之前在项目里遇到的一个bug就是混淆引起的。
    把一个类的名称写死在String里面。混淆之后类名发生改变,找不到这个类。
    找了好久才找到bug原因所在,很坑。

    Antwort
    0
  • StornierenAntwort