相关疑难解决方法(0)

如何在Android Studio中使用ProGuard?

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

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

在此输入图像描述

请帮我.:(

android proguard android-studio

96
推荐指数
3
解决办法
14万
查看次数

Android - 如何检查Proguard混淆有效?

我混淆了我的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)

obfuscation android proguard

32
推荐指数
3
解决办法
2万
查看次数

Proguard忽略了库的配置文件

我现在面临一个非常奇怪的问题......

我有一个带有两个模块的Gradle应用程序,一个主模块和一个库模块.

  • 在这两个模块中,我已经声明了一个正确的proguard-rules.pro文件路径
  • 在两个.gradle文件中,我有minifyEnabled为true

这是第一个问题:即使minifyEnabled在库中为false,它也会被混淆.它完全没有效果,似乎取决于主模块的设置.我现在使用proguard一段时间了,我从来没有经历过这样的行为.

此外,库的proguard-rules.pro似乎完全被忽略了.我在那里声明的并不重要,它没有被使用,结果总是相同的(总是反编译为查看结果).它使用默认设置进行模糊处理.

我使用了一个无效的proguard文件名来查看该文件是否被触摸,并且确实存在错误名称的错误,并且它还抱怨了proguard文件中的语法错误...

我不知道它是否与Android Studio的更新有关,因为它还建议我使用"minifyEnabled"而不是"runProguard".

如何管理proguard以使用库的proguard-rules.pro?

编辑:

我做了一个示例项目来澄清我的问题

在此输入图像描述

我的库的proguard配置

在此输入图像描述

我的图书馆的gradle:

在此输入图像描述

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

在此输入图像描述

如您所见,proguard规则在主模块上运行良好.它做了应有的事情.但它总是完全混淆我的图书馆...

它还完全删除了图书馆的活动,这根本不应该发生

android module proguard android-library android-studio

29
推荐指数
3
解决办法
2万
查看次数

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

我想使用proguard 混淆.aar库,以进行分发,我尝试了许多Internet解决方案,但到目前为止没有任何效果,仅混淆了一些代码。有人可以帮我解决问题吗?

obfuscation android android-library aar android-proguard

5
推荐指数
0
解决办法
2743
查看次数

Proguard 保留公共类、字段和方法

我使用 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 *行为具有防御性并保留所有名称,也用于内部类。

proguard kotlin android-proguard

5
推荐指数
1
解决办法
9769
查看次数

如何在android中将proguard应用到AAR库?

我开发了一个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)

android proguard decompiler aar

4
推荐指数
1
解决办法
5524
查看次数