【问题标题】:Remove activity from apk via Proguard通过 Proguard 从 apk 中删除活动
【发布时间】:2016-06-07 06:26:14
【问题描述】:

我有一个特殊情况,我需要删除一个Activity,它没有在代码本身中使用,也没有在清单中引用。换句话说,它是没有被混淆的死代码,所以我想摆脱它。

正常约束保留扩展 Activity 的类,这通常很好,但保留了死代码。

我怎样才能排除这个特殊的Activity 被保留?

【问题讨论】:

  • 您是否从 AndroidManifest 文件中删除了 Activity?
  • @Vyacheslav 是的,它已从问题中提到的清单中删除。
  • 如果您在 jar-reader 中打开类,Activity 中会显示哪些方法?
  • 我的意思是解压 apk > jar。并打开它。
  • 在这种特殊情况下,只有 onCreate() 方法,该类不会被删除,因为它是 proguard 规则中的引用(实际上所有扩展 Activity 的类都被保留)。

标签: java android proguard


【解决方案1】:

aapt 进程将生成 ProGuard 规则,这些规则将自动附加并包含资源文件中的任何引用类。

规则在以下目录中创建:

build/intermediates/proguard-rules/<variant>/aapt_rules.txt

此文件中的规则也引用了原点:

# view AndroidManifest.xml #generated:14
-keep class com.example.HelloWorldActivity { <init>(...); }

在此示例中,com.example.HelloWorldActivity 类在 AndroidManifest.xml 中被引用。

【讨论】:

    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 2011-06-16
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多