在压缩阶段,Proguard从这些入口点开始递归确定哪些类或类成员要被使用,其余的都会被丢弃。 在优化阶段,ProGuard进一步优化代码。...优化规则 -dontoptimize 指定不优化输入类文件。...只有在最终对Android时,它才不是必需的,因此您可以将其关闭以缩短处理时间。 -android 指定已处理的类文件针对Android平台。...然后ProGuard确保一些功能与Android兼容。 例如,如果您正在处理Android应用程序,则应该指定此选项。 一般规则 -verbose 指定在处理期间写出更多信息。...-dontnote [class_filter] 指定不打印有关配置中可能的错误或遗漏的注释, 例如类名中的拼写错误或缺少可能有用的选项。
文章目录 一、Proguard 简介 二、Proguard 相关网址 三、Proguard 混淆配置 一、Proguard 简介 ---- Android 开发中 Proguard 主要作用是对 Java...proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }...} } 上述 proguard-rules.pro 是开发者自己手动配置的 , 上述 proguard-android-optimize.txt 混淆配置文件是系统自动生成的 , 该 proguard-android-optimize.txt...(‘proguard-android-optimize.txt’)}”) 语句 , 打印了混淆脚本 proguard-android-optimize.txt 的路径 , 其打印结果如下 , 该混淆脚本在...\intermediates\proguard-files\proguard-android-optimize.txt-3.6.1 生成混淆配置脚本 proguard-android-optimize.txt
如果有Android SDK的同学可以在{ANDROID_SDK_ROOT}/tools/proguard/lib/目录下找到proguard.jar这个jar包。...或者,也可以在{ANDROID_SDK_ROOT}/tools/proguard/bin目录下直接使用脚本执行命令。...那我们的命令可以这样写: java -jar proguard.jar @proguard.cfg 这个文件也就是我们在Android Studio中经常配置的混淆文件了。...放在文件名前面表示将某文件排除在外 Filters ---- 匹配的规则与File Filters相似。只是过滤的范围更加广泛。...它放在{android_sdk_home}/tools/proguard/proguard-android.txt文件中,其它的可以参考的例子在{android_sdk_home}/tools/proguard
build.gradle文件中设置minifyEnabled为true,然后可以到proguard-rules.pro文件中加入我们的混淆规则即可。...大家看到了,有两个混淆文件,proguard-android.txt和proguard-rules.pro,proguard-rules.pro是我们需要自己编写的混淆文件,proguard-android.txt...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它包括资源混淆,字符串加密,类加密和dex文件分割等。...,比如用extends,implement等这些Java规则, #如下:保持Android底层组件和类不要混淆 -keep public class * extends android.app.Activity...自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的; 4,与服务端交互时,使用GSON、fastjson等框架解析服务端数据时
文章目录 一、Proguard 配置简介 二、Proguard 完整注释 一、Proguard 配置简介 ---- 更多 ProGuard 混淆配置参考 : https://www.guardsquare.com.../en/products/proguard/manual/usage 1 ....-keepclasseswithmembers class * { @android.support.annotation.Keep (...); } 二、Proguard 完整注释...# 如果想要启用优化 , 不能只在 ProGuard 项目配置中将优化标志设为 true ; # 相反还要在 build.gradle 中指向 "proguard-android-optimize.txt...-dontnote com.google.android.vending.licensing.ILicensingService # 不混淆 Native 函数 # http://proguard.sourceforge.net
ProGuard ProGuard只读取jars,wars,zips,ears等文件格式的文件。然后对它们进行shrinks,optimizes,obfuscates,preverifies。...因此,我们需要在ProGuard的配置文件中进行配置。而最简单的配置则是通过-keep选项。...使用(Usages) 如果想要执行ProGuard,只需: java -jar proguard.jar options ......你可以在ProGuard安装的lib目录下找到proguard的Jar包。或者,把bin目录包含到命令行脚本中去。...参考资料 Proguard官方文档
介绍 之前介绍了如何使用命令行将Jar包根据配置文件进行ProGuard,以及ProGuard的过程,会遇到的问题等。接下来会介绍常用的ProGuard如何配置参数。...而匹配规则如下: :匹配任意构造函数 -:匹配任意属性 -:匹配任意函数 -*:匹配任意属性或者函数 Input / Output Options...默认ProGuard会读取public以及non-public的类。然而,non-public的类通常没有关联的。可以忽略他们,提升ProGuard速度,而且也不会影响output。...如果因为这个option无法找到那个class的话 ,ProGuard会打印出来Warning的。...; } -keepclasseswithmembers Keep住能匹配到规则的类。
之前我们介绍了Kotlin的流程控制和标准库常用扩展,今天我们聊聊类的构造和继承的一些常规 Constructors 在Kotlin的森林法则中一个class有一个Primary Constructor...var firstName: String) { constructor(firstName: String, age: Int) : this(firstName) { } } 继承 在Kotlin
然而我们另辟蹊径,自研一套Inc-Proguard方案,解决了无法增量Proguard问题,实现将耗时降低到分钟级别。 问题出在哪?...目前Android微信采用模块化的Gradle构建方式,也是业界普遍采用的一种方式。...Full Proguard 图3 Apply Mapping Proguard 图4 Proguard部分流程 具体原因主要有几点: Proguard过程深度复杂【图4】,每个阶段都存在一定的耗时...的原因; 从工程架构考虑,业务Feature层次明确,顺其自然的对Feature部分进行混淆即可,但这种方案也是需要工程架构进一步改造,约束规则,并没有解决根本问题; 综上,我们考虑到在日常开发构建过程中...10分钟左右,由于两者优化目的不同,R8也包括的Dalvik字节码方面的内容,后续有可能增加耗时,其他原因上述也提到; Android微信针对dex的部分有自己的优化工作,主要目的是减少dex数量,对Tinker
2.gradle.properties去掉 android.enableAapt2=false 升级到3.4.0后如果里面有android.enableAapt2=false会报错,去掉即可 3.所有依赖库里去掉...buildToolsVersion 这个会提示错误:buildToolsVersion rootProject.ext.buildToolsVersion,一键就可以去掉 4.引入名称修正 3.0.1... inner element must either be a resource reference or empty 错误内部元素必须是资源引用或空 如果是自己的库中出现的情况...release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt...'), 'proguard-rules.pro' resValue "id", "webviewload_monitor_cancel_point","" }
:kotlin-android-extensions:$kotlin_version" } } android下 sourceSets { main.java.srcDirs +..." 添加的有 注意的是要在 module 的build文件下添加 要不会报Error:(6, 8) Unresolved reference: kotlinx 这个错误 apply plugin: '...com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' buildscript...release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt...'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin
虽然有些错误会在构建应用时发生,您能及时发现,但是也有些错误您只能在运行时发现,所以请确保您的应用经过彻底的测试。 如何使用 ProGuard?...当一些类和方法会被动态访问到时(如使用反射),在某些情况下,ProGuard 在构建调用图时不能正确的决定他们的「生死」,导致这些代码被错误的移除掉。...在一次 Android 典型的构建过程中,AAPT(处理资源的工具)会生成一个额外的 ProGuard 规则文件。...所以生产环境的构建(开启 ProGuard 时)一定要注重彻底的测试并正视这些错误。...APK Analyzer 和 ProGuard Android Studio 集成的 APK Analyzer 可以帮您看到哪些类被 ProGuard 移除了并支持为它们生成 keep 规则。
:1055) 二、问题排查 ---- 出现上述错误 , 就是 打包的 so 动态库没有找到 , 有很多问题都会导致该错误 , 如 build.gradle 中没有配置对应的 CPU 架构 , NDK 中调用的外部动态或静态依赖库的...' id 'kotlin-android' } android { compileSdkVersion 29 buildToolsVersion "30.0.2" defaultConfig...release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...' id 'kotlin-android' } android { compileSdkVersion 29 buildToolsVersion "30.0.2" defaultConfig...release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt
文章目录 一、报错信息 二、解决方案 方案一 方案二 方案三 一、报错信息 ---- Android Studio 中打开 Kotlin 代码 , 报如下错误 : kotlin library {...app:dependencies --configuration releaseRuntimeClasspath 命令 , 查询 依赖库情况 , 查询结果如下 : D:\002_Project\002_Android_Learn...See http://developer.android.com/r/tools/jcenter-end-of-service for more information....:kotlin-stdlib:1.7.10 (*) | \--- androidx.appcompat:appcompat-resources:1.5.1 (c) +--- com.google.android.material...= "1.7.10" } 这是由于 Android Studio 中的 Kotlin 插件版本太低 , 当前的 Kotlin 版本 1.7.10 太高导致的 ; 在根目录的 build.gradle
Kotlin?大胆用! Google 早在2017年就官宣了 Android 与 Kotlin 的关系。我在这次写 SDK 的时候最大胆的决定就是全部使用 Kotlin,事实证明我是正确的。...Studio -> Tools -> Kotlin -> Configure Kotlin in project, Android Studio 会自动帮助项目添加依赖插件, Gradle Sync...其实 Android 的编译系统早就支持库模块包含自己的 ProGuard 配置文件了,如果你希望你自己库里的一些代码,在调用者编译时也不被混淆,可以在自己 library 的 proguard-rules.pro...' ... } 加上之后我们可以编译一次 aar,打开看一下,会发现里面多了一个 proguard.txt文件,一旦你的库被依赖,Gradle 会把这个规则与 app 模块的...,请检查参数" ... } } 这样一写,你的调用者只要点点鼠标,进来看一下你这个类,就能迅速把错误码跟错误提示对应上。
sudio为例: android工程中混淆配置文件:proguard-rules.pro (默认文件名) 混淆开关: 在 build.gradle buildTypes { release {...minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro...解读一个混淆配置 proguard的语法规则可参考参考链接ProGuard在线说明手册 下面是我对一个配置加上了注释,详细看过了之后,便可以打造自己的简单配置了。.../proguard-android.txt # You can edit the include path and order by changing the ProGuard # include...在线说明手册 位于sdk中的目录: sdk/tools/proguard Android 混淆代码总结 Android 代码混淆 选项说明 使用proguard混淆android代码
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }...’ 中 , 配置了两个文件, 其中 proguard-android-optimize.txt 是默认的混淆配置文件 , 由系统自动生成 ; proguard-rules.pro 是用户自己配置的混淆配置文件...' id 'kotlin-android' } android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig...:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.3.2' // 矢量图支持库 , 支持...加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息
不过,大多数应用都会使用 Jetpack、OkHttp、Guava、Gson 和 Google Play 服务 等第三方库,并且用 Kotlin 编写的应用始终包含 Kotlin 标准库。...aapt2 工具通过基于 Android Manifest 文件生成 keep 规则来为您处理这些入口点。 除了这些熟知的入口点,Android 应用还需要其他标准的 keep 规则。...这些规则由 Android Gradle 插件提供,您可以在配置构建时指定该默认配置文件: android { buildTypes { release { minifyEnabled...第三方库可能附带了它们自己的规则,但是切记,有些库不一定是为 Android 编写的,抑或是未考虑缩减问题,因此它们可能需要其他配置。...要保留名称字段,请在您的 proguard-rules.pro 文件中添加一个保留规则 -keep: -keep class com.example.myapplication.Person {
你可以检查一下有没有错误匹配的内容,如果有的话,就稍微调整一下正则表达式,或者手动对错误匹配的部分进行修改。..."kotlin-android") apply(plugin: "kotlin-android-extensions") android { compileSdkVersion(28)...//apply(plugin = "com.android.application") //apply(plugin = "kotlin-android") //apply(plugin = "kotlin-android-extensions...") plugins { id("com.android.application") id("kotlin-android") id("kotlin-android-extensions..."), "proguard-rules.pro") } } 当然,Gradle 为 Kotlin 提供了更方便的 API 可以使用: val release by getting {
Android Studio 中配置 Kotlin 和 ButterKnife 步骤 III . Android Studio 中配置 Kotlin 和 ButterKnife 示例 IV ....Kotlin 注解错误使用 V . 错误处理 导入库冲突 ( 与 androidx 冲突 ) I . 特别注意 : ButterKnife 已停止维护 ( 新项目禁止使用该框架 ) ---- 1 ....plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdkVersion 29...release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...Kotlin 注解错误使用 ---- 1 . 报错内容 : @BindView fields must not be private or static.
领取专属 10元无门槛券
手把手带您无忧上云