这是我在Android Studio中的第一个项目,我的应用程序代码没有混淆.我在build.gradle文件中使用此配置:

我正在使用Build> Generate Signed APK ...检查Run Proguard.而且,当我使用Apk_OneClick.v4.2进行测试时,我的代码完全易于理解:

请帮我.:(
我混淆了我的apk,但文件大小只从12MB减少到10.5MB.
它只是一个相对较小的减少的原因可能是因为我的应用程序使用了几个大型库,但有没有办法可以检查已经执行的混淆程度?
以防万一,这是我的proguard-project.txt文件......
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options …Run Code Online (Sandbox Code Playgroud) 我现在面临一个非常奇怪的问题......
我有一个带有两个模块的Gradle应用程序,一个主模块和一个库模块.
这是第一个问题:即使minifyEnabled在库中为false,它也会被混淆.它完全没有效果,似乎取决于主模块的设置.我现在使用proguard一段时间了,我从来没有经历过这样的行为.
此外,库的proguard-rules.pro似乎完全被忽略了.我在那里声明的并不重要,它没有被使用,结果总是相同的(总是反编译为查看结果).它使用默认设置进行模糊处理.
我使用了一个无效的proguard文件名来查看该文件是否被触摸,并且确实存在错误名称的错误,并且它还抱怨了proguard文件中的语法错误...
我不知道它是否与Android Studio的更新有关,因为它还建议我使用"minifyEnabled"而不是"runProguard".
如何管理proguard以使用库的proguard-rules.pro?
编辑:
我做了一个示例项目来澄清我的问题

我的库的proguard配置

我的图书馆的gradle:

最后我得到的结果.我在proguard配置中排除/包含的内容并不重要

如您所见,proguard规则在主模块上运行良好.它做了应有的事情.但它总是完全混淆我的图书馆...
它还完全删除了图书馆的活动,这根本不应该发生
我想使用proguard 混淆.aar库,以进行分发,我尝试了许多Internet解决方案,但到目前为止没有任何效果,仅混淆了一些代码。有人可以帮我解决问题吗?
我使用 Kotlin 并且我有很多内部类。我想混淆和缩小所有public类之外的所有内容。
Proguard 规则:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-keep public class * {
public <methods>;
public <fields>;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它的-keep public class *行为具有防御性并保留所有名称,也用于内部类。
我开发了一个Android AAR库,其中包含客户所需的所有功能,我想在将其交付给客户之前在库上应用proguard,以便混淆代码,使代码不容易反编译。
在发布这个问题之前我用谷歌搜索了它,我发现库项目本身不运行 ProGuard,因此它们不使用任何配置,如此处提到的单击此处
我已经完成了以下配置,以便在我的库项目上应用 proguard。
buildTypes {
debug {
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
我已应用此规则proguard-rules.pro
-keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class * {
public protected *;
}
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements …Run Code Online (Sandbox Code Playgroud)