如何使用 proguard 混淆 android 库(.aar)?

2024-04-22

我想混淆.aar使用 proguard 进行分发的库,我在互联网上尝试了很多解决方案,但到目前为止没有任何效果,只有一些代码被混淆了。有人可以帮我解决这个问题吗?


在 build.gradle 中,在 defaultConfig 下添加 ConsumerProguardFiles :

 android {
        compileSdkVersion Integer.parseInt("${COMPILE_SDK}")
        buildToolsVersion "${BUILD_TOOLS_VERSION}"

        defaultConfig {
            targetSdkVersion Integer.parseInt("${TARGET_SDK}")
            minSdkVersion Integer.parseInt("${MIN_SDK}")
            consumerProguardFiles 'consumer-proguard-rules.pro'
        }
    }

您在库项目的根文件夹下添加一个名为 Consumer-proguard-rules.pro 的文件。该文件应包含库项目的 build.gradle 中提到的依赖项的所有 proguard 规则。您应该为您的 POJO 类、带有注释的接口以及任何其他您需要防止混淆的类添加保留规则。 如果缩小资源,则应在资源中的 res 下(例如 res/raw)添加 keep.xml 文件。在此文件中,您指定要保留的可绘制对象或布局。您检查您的代码,使用反射通过 getResources().getIdentifier(..) 调用资源,如果是这样,您可以像这样添加可绘制对象。

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="safe"
    tools:keep="@layout/layout1, @drawable/icon1,@drawable/icon2,@drawable/img_*"/>

您可以使用 * 告诉 proguard 将所有以 img_ 开头的可绘制对象保留在可绘制文件夹下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 proguard 混淆 android 库(.aar)? 的相关文章

随机推荐

  • 如何开发 Eclipse 搜索插件?

    我想开发一个插件视图 它将自动调用Eclipse中的搜索插件并显示包中调用特定函数的所有位置 帮我 我该怎么办 谢谢 这是另一个很好的插件开发教程http www vogella de articles EclipsePlugIn arti
  • matplotlib savefig() 大小控制

    我编写了一个函数 它采用 Pandas 生成的数据帧并生成热图 def drawHeatMap df city province collector classtype color titleposy try thePlot pl mats
  • TinyMCE 和 Laravel

    我正在尝试在我的 Laravel 项目中使用tinyMCE 问题是当我存储新文章时 html 标签不起作用 它们像纯文本一样显示在我的 laravel 视图上 这是在create blade php中实现的代码
  • cygwin g++ std::stoi“错误:‘stoi’不是‘std’的成员

    I have Windows 7 32 位上的 cygwin 1 7 25 g 版本 gt g GCC 4 8 2 libstdc a gt gcc g 4 8 2 1 试图制作一个c 你好世界 include
  • React Context API - 在页面刷新时保留数据

    假设我们设置了一个上下文提供程序以及一些初始数据属性值 在此过程中 假设消费者随后修改了这些属性 页面重新加载时 这些更改将丢失 保存数据以便我们可以保留这些数据修改的最佳方法是什么 除了本地存储之外还有其他方法吗 是的 如果您希望数据在重
  • 为什么需要在 createToken 方法中传递一个字符串?

    为了在 Laravel Sanctum 中创建访问令牌 需要在createToken方法 我觉得这很奇怪 因为您传入的任何内容都会使用 SHA 256 进行哈希处理 或者您可以获取纯文本令牌 为什么访问令牌不是基于随机字符串创建的 它可以很
  • 从非 UI 线程更新 Windows 窗体上的标签?

    我已经尝试了 2 天来做到这一点 我查看了大量的 stackoverflow 答案并尝试了所有答案 但仍然遇到同样的问题 我在 Windows 窗体上有一个标签 此 Windows 窗体上的唯一代码是 var thread1 new Thr
  • PowerShell参数值建议

    我用 C 编写了一个 Cmdlet 是否可以为特定字符串参数提供所有可能的值 此示例为 PackageId public sealed class InstallPackageCommand PSCmdlet Parameter Posit
  • c++17 有效地将参数包参数与 std::array 元素相乘

    我想有效地将 参数包中的参数与 std array 的元素相乘 int index auto Is std array
  • 散景布局的背景颜色

    我正在玩散景滑块演示 https demo bokehplots com apps sliders 源代码here https github com bokeh bokeh blob master examples app sliders
  • 在WPF中设置鼠标位置[重复]

    这个问题在这里已经有答案了 我打算用 Kinect 手势替换我的鼠标 但我找不到为 WPF 应用程序设置鼠标位置的方法 无法使用 NET BCL 但是 如果您确实想要它 您可以使用本机SetCursorPos in User32 dll D
  • 使用 JPA 和 Hibernate 将 Java 布尔值映射到 Oracle Number 列

    我在我的模型中创建了这样的属性 public class Client private Boolean active 我的 RDBMS 是 Oracle active列的类型NUMBER 1 0 如何使用Restrictions API实现
  • MySQL:具有授予选项的用户无法授予创建用户

    我创建了一个具有 root 的用户 new user 如下所示 GRANT ALL ON labor TO new user WITH GRANT OPTION GRANT ALL ON labor TO new user localhos
  • 姜戈 - 403 禁止。 CSRF 令牌缺失或不正确

    我尝试为我的模型添加 ModelForm 但每次 POST 尝试都以 403 Forbidden CSRF 验证失败 请求中止 失败原因给出 CSRF 令牌丢失或不正确 结束 我没有 render to response 方法 因此无法通过
  • 如何禁用/覆盖 PowerShell 点表示法

    PowerShell 中的命令几乎与 Bash 类似 但点符号扩展给我带来了很多工作 目前我必须将很多命令参数用引号引起来 mvnw cmd Dmaven repo local m2 repository deploy deploy fil
  • winkler的Python性能改进请求

    我是一个 python n00b 我想要一些关于如何改进算法的建议 以提高计算两个名字的 Jaro Winkler 距离的方法的性能 def winklerCompareP str1 str2 Return approximate stri
  • 为什么 ng-mouseover 不能与 ng-if 一起使用

    我试图在具有 ng if 的图像上使用 ng mouseover 指令 但它不起作用 但如果我使用 ng show 指令它起作用 每个人都可以告诉我为什么吗 或者这是 AngularJS 的问题 在 AngularJS 文档中 我无法阅读任
  • WooCommerce 挂钩 woocommerce_cancelled_order

    再会 这是我第一次使用 stackoverflow 很高兴认识大家 不管怎样 我正在为 WooCommerce 编写一个插件 当订单取消时我会自动退款 当我在没有钩子的情况下在单独的文件中手动执行它时 我的代码工作正常 但是 使用我的钩子它
  • Azure 移动服务和 Azure Web 应用身份验证

    当用户通过 Azure Web 应用程序 ASP NET MVC 和 Xamarin iOS 应用程序登录时 我为同一用户获得两个不同的 SID Setup 带有 API 控制器的 Azure WebApp ASP NET 5 带有 Mic
  • 如何使用 proguard 混淆 android 库(.aar)?

    我想混淆 aar使用 proguard 进行分发的库 我在互联网上尝试了很多解决方案 但到目前为止没有任何效果 只有一些代码被混淆了 有人可以帮我解决这个问题吗 在 build gradle 中 在 defaultConfig 下添加 Co