【问题标题】:how to apply proguard on both android project and service project at the same time如何同时在android项目和服务项目上应用proguard
【发布时间】:2011-05-14 20:00:54
【问题描述】:

我正在尝试在我的 android 应用程序中使用 proguard,我已将所有服务编写在一个单独的项目中,并通过 maven 打包为服务 jar。我在我的 UI 项目中使用此服务 jar 作为依赖项。

我正在使用 maven android 和 proguard-maven-plugin 来构建/发布我的 UI 项目。我的问题是如何同时为两个项目申请 Proguard,可以吗?

我尝试在服务项目上单独运行 proguard 并将该 jar 添加到 UI 项目但它不起作用。请指导我解决这个问题。

【问题讨论】:

    标签: android jar proguard


    【解决方案1】:

    您不应该在您的 android 应用程序引用的 jar 文件上运行 proguard(在您的特定情况下,不是一般情况下)。

    下面是编译android应用程序的方式:

    1. 将所有.java文件编译成.class
    2. 解压所有 jar 文件并从中提取 .class 文件。
    3. 将 proguard 应用于所有 .class 文件(您的应用程序的 .class 文件 + 所有 jar 的 .class 文件)。
    4. .class 文件转换为dex 格式,生成classes.dex 文件

    基本上,您不应该对 Android 应用程序使用的 jar 文件应用 proguard。如果您必须应用 proguard,请确保您的 Android 应用程序使用的所有类、接口等都没有被 proguard 混淆。

    我建议只使用名为-obfuscate 的Android 构建系统保护步骤。这将是最简单的方法(当崩溃报告开始出现时,您的生活会变得更加轻松)。

    【讨论】:

    • 好吧,我所做的是将我的服务 jar 作为 -injars 添加到我的 android 应用程序 proguard.cfg 文件中。并且我的服务项目中的所有依赖项都作为-libraryjars,当我运行proguard并运行我的应用程序时会崩溃,我认为这是因为proguard已经混淆了所有libraryjars,有什么办法可以阻止外部jar在运行proguard时被混淆
    • 你说你认为它的proguard,你确定吗?是什么让你这么认为?
    • 我是这个 android 和 proguard 的新手,我可能做错了,但我使用了以下选项来让应用程序正常工作 - 保持公共类 org.springframework.http。 **{ *;} -keep public class org.codehaus.jackson.**{ *;},如果我这样做,请纠正我 inazruk...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多