首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin AAR库w/ proguard:如何只保留类和方法名?

Kotlin AAR库是一种Android Archive(AAR)库,其中包含使用Kotlin编写的代码和资源。Proguard是一个Java字节码优化和混淆工具,可以在构建过程中对代码进行优化和混淆,以减小应用的大小并增加安全性。

要在Kotlin AAR库中只保留类和方法名,可以通过在Proguard配置文件中进行相应的设置来实现。以下是一种可能的配置:

  1. 创建一个名为proguard-rules.pro的文件,并将其放置在Kotlin AAR库的根目录下。
  2. 在proguard-rules.pro文件中添加以下内容:
代码语言:txt
复制
-keepnames class * {
    public protected *;
}

上述配置指示Proguard保留所有类和方法的名称,同时删除其他不必要的代码和资源。

  1. 在Kotlin AAR库的构建脚本(例如build.gradle)中,添加以下配置:
代码语言:txt
复制
android {
    // ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

上述配置指示构建过程在发布版本中启用代码混淆,并使用proguard-rules.pro文件中的规则。

完成上述配置后,构建Kotlin AAR库时,Proguard将只保留类和方法名,并删除其他不必要的代码和资源,从而减小库的大小并提高安全性。

对于Kotlin AAR库的应用场景和推荐的腾讯云相关产品,由于题目要求不能提及具体的云计算品牌商,无法给出相关链接和产品介绍。但是Kotlin AAR库可以用于开发Android应用程序的各个方面,包括前端开发、后端开发、移动开发等。它提供了丰富的功能和工具,可以帮助开发人员更高效地构建和管理Android应用程序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

编写 Android Library 的最佳实践

'), 'proguard-rules.pro' } 这样一来,调用者依赖了你的之后,除了你自己暴露的方法或者,一些内部实现就不那么容易找到了。...把自己的 ProGuard 配置文件打包进 aar 我们经常在一些开源的主页介绍下面看到一段 Proguard 内容,目的是让调用者把他加到自己 app 模块的 Proguard 配置文件中去。...但是你没有办法保证接入应用的 armeabi 文件里也是空的,一旦这里面有 so ,android 就会去这里面找;还有一种可能就是现在很多应用会设置 abiFilter 去过滤掉一些 abi,万一人家只想保留...第三依赖 JCenter() 能引用到的,不要打包进你自己里面 本着“不要重复造轮子”的原则,我们在开发第三的时候,自身难免也会依赖一些第三。...这些本身都是 jar 文件的,所以之前会有一些第三的作者在用到这些的时候,把对应的 jar 下载到 libs 下面参与编译,最终编译到自己的jar或者aar里面。

1.2K01

Android全量编译加速——(透明依赖)

而对于全量编译加速,我们遇到了一些困难: K歌的项目里,总代码量160w行,kotlin代码占比43%左右,编译耗时占比却高达70%,必须要压缩这个比例。...工程重复冲突 ? share_mshare是同一个代码仓库,开发便于验证更改了name,路由不一样代码一样,gradle认为是两个aar,报错重复。 3. 三版本冲突 ?...修改B依赖C的依赖类型改为compileOnly,不过如果B使用了C的资源打包aar会报错。 第二个问题:K歌的做法是要求name保持一致,开发修改代码发布时改变version。...B在发布aar时,不保留pom里对三的任何依赖元数据,编译时统一由app依赖。...计算出md5后按照maven的寻址规则拼接到路径上访问远端maven仓库是否存在此aar

2.3K30

【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )

中 开启 Proguard , 在编译时 , 会自动进行如下一系列优化 : 压缩 Shrink : 检查 并 删除 没有使用的 , 字段 , 方法 , 属性 ; 这里要注意 , 如果通过反射使用一个时..., 可能会在该步骤被删除 ; 这里需要配置混淆文件 , 保留反射中使用的 ; 优化 Optimize : 优化字节码 , 移除无用指令 ; 混淆 Obfuscate : 混淆 Java...层代码 , 使用无意义的标识符替代 Java 中的名 , 变量名 , 方法名 等名称 ; 预检 Preveirfy : 预检 Java 平台上预处理的代码 ; 开启 ProGuard 配置..., 在进行打包时 , 将这两个 ProGuard 配置文件进行合并处理 ; 二、混淆文件编写 ---- 混淆文件编写 : 引用的第三及服务 , 一般不进行混淆 , 去相应的开源页面 , 查找混淆配置...:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.3.2' // 矢量图支持 , 支持

3.6K20

Android安全攻防战,反编译与混淆技术完全解析(下)

keepnames 保留中的成员,防止它们被混淆,但当成员没有被引用时会被移除。 keepclassmembers 保留中的成员,防止它们被混淆或移除。...keepclassmembernames 保留中的成员,防止它们被混淆,但当成员没有被引用时会被移除。...native ; } 这段代码的意思其实很明显,就是保留所有含有native方法的native方法名,而如果某个中没有含有native方法,那就还是会被混淆。...对第三进行保留,不混淆android-support,以及LitePal中的代码。 下面我们就来逐一实现这些目标。...class com.example.guolin.androidtest.Utils { public void methodUnused(); } 最后不要混淆第三,目前我们使用了两种方式来引入第三

1.6K70

ProGuard 在 Android 上的使用姿势

在您读 ProGuard 手册时,您没必要看那些 输入 / 输出的部分,因为这些 Android Gradle 打包插件会替您指定输入源(您第三的代码) Android jar (您构建应用时用到的...您有很多选项来配置您的 ProGuard: **keep **— 保留所有匹配的方法 **keepclassmembers **— 当且仅当它们的因为其他的原因被保留时(被其他调用点引用到或者被其他的规则...这样的话当您看 ANRs & crashes 页面时,上报的堆栈都会现实真实的名、方法名行号而不是缩短的混淆后的那些。...关于 ProGuard 第三 就像您有责任为您自己的代码提供 keep 规则一样,那些第三的作者们也有义务向您提供必要的混淆规则配置来避免开启 Proguard 导致的构建失败或者应用崩溃。...不过有个更好的方法,第三的维护者们如果发布的AAR ,那么可以指定规则打包在 AAR 中并会在应用构建时自动暴露给构建系统,通过添加下面几行代码到模块的 build.gradle 文件中:

2.5K40

Android Proguard(混淆)

-libraryjars classpaath 指定输入文件引用的。这些不会被写入到输出文件中。每个至少要有一个被引用。 在查找的时候,proguard运行时的是不算在内的。...-dontskipnonpubliclibraryclassmembers 指定不忽略中的非public成员(成员变量方法)。...这项配置在混淆一些的时候特别有用,因为根据IDE提示的参数名参数类型,开发者可以根据他们的语义获得一些信息,这样的更友好。...例如,在你的代码中有大量的名对应的字符串的hard-code,并且不想保留他们的本名,那就可以利用这项配置完成。这项配置在混淆阶段有效,但是在压缩/优化阶段,涉及到的会自动保留下来。...如果声明保护一个,并没有指定受保护的成员。proguard只会保护它的名和它的无参构造函数。其它成员依旧会被压缩、优化、混淆。

2.5K30

Android 代码混淆

文件中编写混淆代码即可 混淆语法 命令 作用 -keep 防止成员被移除或者被重命名 -keepnames 防止成员被重命名 -keepclassmembers 防止成员被移除或者被重命名...防止拥有该成员的成员被重命名 通配符 * 匹配任意长度字符,但不含包名分隔符(.)...# 包含有名->混淆后名的映射关系 -verbose # 指定不去忽略非公共成员 -dontskipnonpubliclibraryclassmembers # 不做预校验,preverify...org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties { *; } 不混淆第三...(包括jar、aar、依赖) -keep class 第三包名.** { *;} 如: -keep class com.baidu.map.** { *;} 发布者:全栈程序员栈长,转载请注明出处:

1.3K30

创建Android的方法及Android .aar文件用法小结

与 JAR 文件不同,AAR 文件可以包含 Android 资源一个清单文件,这样,除了 Java 与方法外,您还可以捆绑布局可绘制对象等共享资源。...每个模块都会创建自己的 R 在您构建相关应用模块时,模块将先编译到 AAR 文件中,然后再添加到应用模块中。因此,每个都有其自己的 R ,并根据的软件包名称命名。...从主模块模块生成的 R 会在所需的所有软件包(包括主模块的软件包的软件包)中创建。...当 ProGuard 在 Android 应用模块上运行时,它会同时使用来自应用模块的指令,因此您不应当在库上运行 ProGuard。...尝试协助开发者的规则可能会与应用模块或它的其他中的现有代码冲突,因此不应包含这些规则。例如,您的ProGuard 文件可以指定在应用模块的压缩期间需要保留的代码。

2.9K10

Android制作AAR包并混淆后加载调用

实现效果 上图中可以看到,制作了一个TAAR的包,打开后里面可以看到MathFun的下公开的Add方法。 在新的工程中直接引入AAR包,调用里面的实现方法后,在虚拟机中直接显示了出来。...实现效果 ‍ 代码混淆基本规则‍ ‍ 01‍ 混淆配置 通过配置proguard-rules.pro文件,对生成的apkjar进行加密,在‍build.gradle 来开启混淆功能。‍‍...等 Parcelable的子类Creator静态成员变量不混淆 第三开源或者引用其他第三的SDK包不进行混淆 先看如下两个比较常用的命令,很多童鞋可能会比较迷惑以下两者的区别。...保留 防止被移除或者被重命名 防止被重命名 成员 -keep -keepnames 仅成员 -keepclassmembers -keepclassmembernames 如果拥有某成员,保留成员...# 指定不去忽略非公共 -dontskipnonpubliclibraryclasses # 指定不去忽略非公共的成员 -dontskipnonpubliclibraryclassmembers

4.8K30

Android 混淆那些事儿

我们来看一下Proguard的几个步骤如何处理Entry Points。 在压缩阶段,Proguard从上述Entry Points开始遍历搜索哪些成员被使用。...这里需要特别注意的一点是,gradle默认的keepattributes属性不全,保留了Annotation,Signature,InnerClasses,EnclosingMethod,为了混淆之后定位...由于native方法与对应so中的方法名称对应,方法名被混淆会导致调用出现问题,所以native方法不能被混淆。...下面是自定义混淆文件的一个范例,四大组件,native方法,反射用到的,一些引入的第三等都不能进行混淆: # 代码混淆压缩比,在0~7之间 -optimizationpasses 5# 混合时不使用大小写混合...$Creator *; } #第三jar包不被混淆 -keep class com.github.test.** {*;} #保留自定义的Test成员不被混淆 -keep class com.lily.Test

3.2K50

一篇文章带你领略Android混淆的魅力

以上代码中的 proguard-android.txt 表示 Android 系统为我们提供的默认混淆规则文件,而 proguard-rules.pro 则是我们想要自定义的混淆规则,至于如何自定义混淆规则我们将在接下来会讲到...以下是常见的 -keep 命令: -keep: 保留指定的成员,防止被混淆处理。...-dontpreverify #关闭优化 -dontoptimize #保留注解 -keepattributes *Annotation* #保留所有拥有本地方法的名及本地方法名 -keepclasseswithmembernames...4.6 其他不应该被混淆的 自定义控件不需要被混淆 JavaScript 调用 Java 的方法不应混淆 Java 的 native 方法不应该被混淆 项目中引用的第三也不建议混淆 5 混淆后的堆栈跟踪...由于方法名的名称都经过混淆处理,即使程序发生崩溃问题,也很难定位问题所在。

93620

Android开发:请你吃一顿史上最全的Android混淆大餐

以上代码中的 proguard-android.txt 表示 Android 系统为我们提供的默认混淆规则文件,而 proguard-rules.pro 则是我们想要自定义的混淆规则,至于如何自定义混淆规则我们将在接下来会讲到...以下是常见的 -keep 命令: -keep 作用:保留指定的成员,防止被混淆处理。...-dontpreverify #关闭优化 -dontoptimize #保留注解 -keepattributes *Annotation* #保留所有拥有本地方法的名及本地方法名 -keepclasseswithmembernames...其他不应该被混淆的 自定义控件不需要被混淆 JavaScript 调用 Java 的方法不应混淆 Java 的 native 方法不应该被混淆 项目中引用的第三也不建议混淆 混淆后的堆栈跟踪 代码经过...由于方法名的名称都经过混淆处理,即使程序发生崩溃问题,也很难定位问题所在。

4K30

使用 R8 压缩您的应用

不过,大多数应用都会使用 Jetpack、OkHttp、Guava、Gson Google Play 服务 等第三,并且用 Kotlin 编写的应用始终包含 Kotlin 标准。...当您使用这其中的某个第三时,您的应用中通常使用其中很小一部分。若不压缩,所有代码都会保留在您的应用中。...第三也可能用到反射,并且由于第三实际上是您的应用的一部分,您 (作为应用开发者) 将负责这些以及您自己的代码中使用的反射。...以一个 Kotlin 为例,该类具有一个名为 name 的字段一个 main 方法,该方法创建一个实例并将该实例序列化为 JSON: class Person(val name: String)...'proguard-rules.pro' } } } 了解更多 有兴趣更深入了解 R8 压缩器如何运作吗?

1.3K30

Android混淆你了解多少?

具体效果如何?别急,下面我们来一一探索它的"独特"魅力。 ##1混淆简介 代码混淆(Obfuscated code)是将程序中的代码以某种规则转换为难以阅读理解的代码的一种行为。...以下是常见的 -keep 命令: -keep 作用:保留指定的成员,防止被混淆处理。...#保留所有拥有本地方法的名及本地方法名 -keepclasseswithmembernames class * { native ; } #保留自定义View的get...其他不应该被混淆的 自定义控件不需要被混淆 JavaScript 调用 Java 的方法不应混淆 Java 的 native 方法不应该被混淆 项目中引用的第三也不建议混淆 混淆后的堆栈跟踪 代码经过...由于方法名的名称都经过混淆处理,即使程序发生崩溃问题,也很难定位问题所在。

1.7K00

【Android 安全】Android 应用 APK 加固总结 ( 加固原理 | 应用加固完整的实现方案 | 源码资源 )

替换 二、 应用加固完整的实现方案 1、 代理 Application ( 1 ) ProxyApplication ( 2 ) OpenSSL 解码 Kotlin ( 3 ) 反射工具 (...加密 ( Proguard 简介 | 默认 ProGuard 分析 ) 【Android 安全】DEX 加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留及成员混淆结果...| 保留注解以及被注解修饰的/成员/方法 ) 【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames...生成 dex 文件 , 该 dex 文件中包含解密 其它 dex 的功能 编译工程 会生成 Android 依赖aar 文件 生成目录是 module...| 解压依赖 aar 文件 ) 生成依赖aar 文件 , 然后选择 菜单栏 -> Build -> Build Bundle(s) / APK (s) 选项 , 最后执行 DexEncryption

7.3K61

android开发笔记之 Android代码混淆打包

-keep 指定的成员被保留作为 入口 。 -keepclassmembers 指定的成员被保留。...-keepclasseswithmembers 指定的成员被保留,假如指定的成员存在的话。...本地方法,不能修改本地方法名 annotations 注释 数据驱动 有些resource 文件 用到反射的地方 如何实施 现在的系统已经配置为混淆时候会保留...目录所需要的程序文件 -dontskipnonpubliclibraryclasses 指定不去忽略非公共的。...先说如何使用别人写好的,我们引用的第三 无论开源还是闭源如有特殊情况我们都可以在他的User Guide中找到混 淆代码的配置,如我们引用了大名鼎鼎的guillep PullToRefresh,我们可

74120

代码洁癖症的我,学习Lint学到心态爆炸

App Source Files 源文件包含组成 Android 项目的文件,包括 Java XML 文件、图标 ProGuard 配置文件等。...由于没有相关官方文档第三教程(可能由于lint的api更新太快,没人愿意做这种吃力不讨好的工作),也这就只有这样了。本文通过自定义命名规范规则来讲解整个过程。...UastScanner 扫描Java文件Kotlin文件 ClassScanner 扫描Class文件 XmlScanner 扫描Xml文件 ResourceFolderScanner 扫描资源文件夹...已经是全部代码,检查法名是否符合驼峰命名法,可以根据具体需求,重写抽象AbstractUastVisitor的visitXXX方法。...1lintLibrary->build->outputs->aar 这一小节的步骤也可以通过命令行执行。 使用AAR文件 有本地依赖或者上传远程仓库,这里介绍本地依赖。

1.5K20
领券