Android混淆配置(含androidx、kotlin)

本文详细介绍了Android应用的混淆配置,包括关键字认知、基本指令、通用配置(涵盖androidx和Kotlin)、实体类混淆以及第三方库的混淆设置。并提供了混淆配置的实例和下载链接。

一、首先认识几个关键字

#libraryjars  声明lib jar文件
#dontwarn 不提示警告 dontwarn是一个和keep可以说是形影不离,尤其是处理引入的library时.
#引入的library可能存在一些无法找到的引用和其他问题,在build时可能会发出警告,
#如果我们不进行处理,通常会导致build中止.
#因此为了保证build继续,我们需要使用dontwarn处理这些我们无法解决的library的警告.
#dontnote:指定不去输出打印该类产生的错误或遗漏
#keep 保留类和类中的成员,防止被混淆或移除
#keepnames 保留类和类中的成员,防止被混淆,成员没有被引用会被移除
#keepclassmembers 只保留类中的成员,防止被混淆或移除
#keepclassmembernames 只保留类中的成员,防止被混淆,成员没有引用会被移除
#keepclasseswithmembers 保留类和类中的成员,防止被混淆或移除,保留指明的成员
#keepclasseswithmembernames 保留类和类中的成员,防止被混淆,保留指明的成员,成员没有引用会被移除

二、基本指令区

#----------------------基本指令区-----------------
# 设置混淆的压缩比率 0 ~ 7
-optimizationpasses 5
# 混淆后类名都为小写   Aa aA
-dontusemixedcaseclassnames
# 指定不去忽略非公共库的类
-dontskipnonpubliclibraryclasses
# 不优化输入的类文件
-dontoptimize
# 不做预校验的操作
-dontpreverify
# 混淆时不记录日志
-verbose
# 保留代码行号,方便异常信息的追踪
-keepattributes SourceFile,LineNumberTable
# 混淆采用的算法.
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

# dump文件列出apk包内所有class的内部结构
-dump class_files.txt
# seeds.txt文件列出未混淆的类和成员
-printseeds seeds.txt
# usage.txt文件列出从apk中删除的代码
-printusage unused.txt
# mapping文件列出混淆前后的映射
-printmapping mapping.txt
# 忽略警告 不加的话某些情况下打包会报错中断
-ignorewarnings

三、Android通用配置(含androidx、kotlin)

#----------------------Android通用-----------------

# 避免混淆Android基本组件,下面是兼容性比较高的规则
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService

# 保留support下的所有类及其内部类
-keep class android.support.** {
   
   *;}
-keep interface android.support.** {
   
   *;}
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.v7.**
-keep public class * extends android.support.annotation.**
-dontwarn android.support.**

# 保留androidx下的所有类及其内部类
-keep class androidx.** {
   
   *;}
-keep public class * extends androidx.**
-keep interface androidx.** {
   
   *;}
-keep class com.google.android.material.** {
   
   *;}
-dontwarn androidx.**
-dontwarn com.google.android.material.**
-dontnote com.google
<think>嗯,用户问的是如何在Android项目中配置Kotlin版本2.1.20。首先,我需要回想一下Android项目通常是如何管理依赖版本的。一般来说,Kotlin的版本配置是在项目的build.gradle文件中,具体来说是在根项目的build.gradle里,使用ext.kotlin_version来指定版本号。不过,现在可能有变化,比如使用新的插件方式或者在buildscript里配置。 然后,用户提到的版本是2.1.20,但根据之前的引用信息,比如引用[1]提到的是2.1.0-Beta1,这说明用户可能混淆了版本号。需要确认Kotlin是否有2.1.20这个版本。查一下Kotlin的发布历史,实际上Kotlin的版本号通常是1.x.x,比如1.5.30,或者之后转为更简化的版本号,比如1.6.0,而2.x.x可能是指Kotlin Multiplatform或其他重大更新。所以这里可能存在版本号的误解,用户可能想要配置的是某个特定版本,但版本号可能输入错误。 接下来,考虑用户的实际需求。如果用户确实需要配置Kotlin版本,但版本号可能有误,我应该先指出这一点,并给出正确的方法。例如,建议用户检查官方发布的版本,或者确认是否有2.1.20的存在。如果不存在,可能需要建议相近的版本,或者指导如何查找正确的版本号。 另外,根据引用[1],配置Kotlin版本是在构建脚本中修改版本号,然后同步项目。所以步骤应该是:打开项目根目录的build.gradle,找到kotlin-gradle-plugin的版本,修改为所需的版本,然后同步Gradle。同时需要注意,某些版本可能需要特定的Gradle版本或Android Studio版本支持,比如Beta版可能需要选择加入或配置其他参数。 还可能涉及到模块级build.gradle中的插件应用,例如apply plugin: 'kotlin-android',确保插件版本与项目级别的配置一致。此外,依赖项中的kotlin-stdlib也需要对应版本,避免版本冲突。 用户可能在配置过程中遇到问题,比如无法找到指定版本,这时候需要引导他们检查仓库是否包该版本,比如jcenter()或mavenCentral()是否正确配置。或者建议他们查看Kotlin官方文档,确认可用的版本列表。 最后,生成相关问题时要考虑用户可能遇到的后续问题,比如版本兼容性、Gradle同步失败、如何处理依赖冲突等。同时,提醒用户注意版本号的正确性,避免因输入错误导致配置失败。</think>根据Android项目的Gradle配置要求,配置Kotlin版本需要修改两个核心文件: ### 配置步骤 1. **项目级build.gradle** 在`buildscript`块中指定Kotlin插件版本: ```groovy buildscript { ext.kotlin_version = '2.1.20' // 注意:截至2024年,此版本号不存在 repositories { google() mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` 2. **模块级build.gradle** 确保应用Kotlin插件并指定标准库版本: ```groovy plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } ``` ### 重要说明 1. 当前Kotlin稳定版本为1.9.0,2.0.0-Beta1发布于2023年[^1] 2. 若需使用实验性版本,需在gradle.properties添加: ```properties kotlin.version=2.1.20 ``` ### 版本验证 执行以下命令检查配置结果: ```bash ./gradlew dependencies --configuration kotlinCompilerClasspath ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值