0

有没有办法使用 proguard 从 APK 中剥离特定类?我需要这样做来构建 2 个不同的 APK,其中一个具有受限的功能。例如,某些活动不应该在 2 个 APK 之一中可用,因此不应该在其中。

我不能使用一个库和 2 个项目来实现这一点,因为实际用例要复杂得多,并且已经涉及构建 4 个 APK,应该从同一个库中再构建 2 个 APK,从 APK 中剥离特定组件。

我尝试了类似的方法,但它根本不起作用,也没有从构建的 APK 中删除任何内容。

-assumenosideeffects class app.package.activities.classes_to_strip.** {
    public *** *(...);
    public static *** *(...);
    public *;
    private *;
    protected *;
}

更新:我更改了标题以更好地反映我想要实现的目标。

到目前为止,我已经能够构建一个精简的 APK(活动较少),但是所有其他活动代码仍然存在于最终 APK 中,因为它们是从代码的各个部分引用的(这并不是真正的问题,因为这样代码不会运行)。

4

3 回答 3

1

Android 的 Ant/Eclipse/Gradle 构建过程会自动生成 ProGuard 配置 (bin/proguard.txt),以保存 AndroidManifest.xml(和其他 XML 文件)中引用的活动(和其他类)。因此,您应该以某种方式使用不同的 AndroidManifest.xml 文件开始构建。

于 2013-08-15T10:27:28.410 回答
0

不,proguard 用于代码混合,而不是代码“构建选项”。

于 2013-08-15T06:33:15.593 回答
0

使用 Proguard,您可以轻松混合大部分代码并使用 -keep class *排除一些代码。然而,你想做的恰恰相反。

我认为您可以手动删除 AndroidManifest.xml 中的一些代码

于 2013-08-15T08:15:36.663 回答