【问题标题】:Using proguard with dagger 1.2.2使用带有匕首 1.2.2 的 proguard
【发布时间】:2014-12-15 16:01:54
【问题描述】:

是否有任何捷径(我知道,我知道,我不应该要求灵丹妙药)让 dagger 1.2.2 与 proguard 一起工作?

我们目前遇到问题,并且我们知道我们必须转移到 Dagger 2.0 才能让 proguard 工作,从这个问题

Dagger + Proguard obfuscation, Errors creating object graph

然而,Dagger 2.0 中不再存在 ObjectGraph,所以在我们坐下来进行中等大小的重构之前,我只是想知道是否可以在我的 proguard 文件中放入任何忽略规则,以便在超短线?

谢谢

【问题讨论】:

    标签: android proguard dagger


    【解决方案1】:

    您可以使用这个利用 Java 注释处理的 Dagger Proguard Helper 库。

    【讨论】:

      【解决方案2】:

      对于 Dagger,你需要保留生成的类:

      -keep class **$$ModuleAdapter
      -keep class **$$InjectAdapter
      -keep class **$$StaticInjection
      

      很遗憾,您还需要从项目中保留相应的基类:

      -keep class com.example.SomeClass
      

      这样,Dagger 仍然可以组合相应的类对。您可以通过在项目的 gen 目录中列出生成的类来找出基类(例如 com/examples/SomeClass$$ModuleAdapter.class)。

      最后,你需要保留一个 Dagger 类:

      -keep class dagger.Lazy
      

      【讨论】:

        【解决方案3】:
        #-dontobfuscate
        -keepnames class your.package.**
        

        最大的问题是 dagger 1.2.2 创建了像“method/your.package.YourClass”这样的字符串,这些字符串不会被 -adaptclassstrings 改变

        这将让您在构建过程中运行混淆,以及其他人添加的关于在其他答案中保留类的内容。

        您不会混淆类名,但字段和方法会。有总比没有好!或者您可以在任何地方禁用混淆,只需使用收缩。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-02
          • 1970-01-01
          • 2021-07-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多