【问题标题】:Generating jar files using progaurd in gradle android build在 gradle android build 中使用 progaurd 生成 jar 文件
【发布时间】:2019-09-14 14:30:50
【问题描述】:

通常通过向 progaurd 提供 -injars 和 -outjars ,我们可以从 -injars 生成过滤后的类的混淆 jar 文件。

在 gradle android build 中是否有任何方法可以使用 proguardFile 属性从项目类组中生成过滤类的混淆 jar 文件。这些过滤后的 jar 文件是 gradle android build 二进制文件的补充。

【问题讨论】:

  • 只需配置 proguard 以混淆该库模块。
  • 为 -injars 赋予什么价值?根据 progaurd 文档,我们可以将 aars、wars、ears、zip、apks、目录作为 -injars 的输入,但是当我将 \build\intermediates\javac\release\compileReleaseJavaWithJavac\classes 作为输入时,它会失败并出现以下错误 - -> 警告:处理任务时出现异常 java.io.IOException:相同的输入 jar [D:\Luavmandroid\luavmandroid\build\intermediates\javac\release\compileReleaseJavaWithJavac\classes] 被指定了两次。
  • 只是不要使用-injars ...并且不要定义默认类路径上的路径。混淆库模块与混淆应用程序模块没有什么不同。
  • 好吧,从您的上述观点来看,我知道类将从默认类路径中选择。我的要求是选择几个类,然后打包到单独的 jar 文件中,除了最终的 gradle android build 二进制文件。

标签: android android-gradle-plugin build.gradle proguard android-proguard


【解决方案1】:

您可能必须在项目中创建一个新的库模块并重构代码以将 jar 中所需的类移动到新的库模块中。

看到这个答案:https://stackoverflow.com/a/47444948/3501286

还有这个:https://stackoverflow.com/a/19037807/3501286

【讨论】:

    【解决方案2】:

    我基于从单个库项目中选择的少数类文件生成单个混淆 jar 文件的要求是通过以下方式实现的。这些单独的 jar 文件是最终 android 二进制文件(即 .aar 文件)的补充。

    调试: 1. android build时,gradle将所有编译好的java文件移动到/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes文件夹下。

    1. 在 proguard 文件中,我将 -injars 作为上述文件夹,将 -outjars 作为带有过滤器的自定义路径。

    2. 使用 'proguardFile' 属性我已将 proguard 文件传递​​给 build.gradle

    3. 使用 -injars 和 -outjars 指定的所有单个 jar 文件都将被混淆,并将放置在 -outjars 路径中

    例如:

    在调试模式下:

    -injars 'D:\projectname\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes'(**.class)

    -outjars 'D:\projectname\build\intermediates\transforms\proguard\debug\1.jar'(com/ui/tab/TabWidget.class,com/ui/Tab.class )

    -injars 'D:\projectname\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes'(**.class)

    -outjars 'D:\projectname\build\intermediates\transforms\proguard\debug\1.jar'(com/ui/CollapsibleWidget.class)

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      相关资源
      最近更新 更多