在将应用发布到 Google Play 之前,如何测试 ProGuard 是否正常工作?

Hel*_*oCW 6 android android-studio

我已经阅读了这篇文章。作者认为每个 Android 应用都应该使用代码收缩。

我用下面的代码对代码进行了缩小和混淆,proguard-rules.pro是原始的空白的,并且proguard-android-optimize.txt是原始的。它是 Android Studio 的默认设置。

您知道某些项目在 Android Studio 中可以正常运行但发布到 Google Play 后失败,您可以查看文章

当应用程序在 Android Studio 中运行时,我认为 ProGuard 不起作用,它不会缩小和混淆代码,因此该应用程序在 Android Studio 中运行良好。

当我生成 .aab 文件在 Android Studio 中发布时,ProGuard 会缩小和混淆代码,但可能由于错误的缩小和混淆操作导致运行时错误。

在将应用发布到 Google Play 之前,如何测试 ProGuard 是否正常工作?

  buildTypes {
        release {         
            minifyEnabled false
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
        }
    }
Run Code Online (Sandbox Code Playgroud)

添加内容:

致瑞安 M:谢谢!

看来我可以通过文章测试ProGuard在Android Studio中是否正常工作。

您可以看到代码 A图像 A

那正确吗?

代码 A

  debugMini {
        initWith debug
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
        matchingFallbacks = ['debug']
    }
Run Code Online (Sandbox Code Playgroud)

图片A

在此处输入图片说明

Bri*_*cho 7

有多种方法可以确认您的代码是否已正确最小化。一是检查youappmodule/build/outputs/mapping/release/mapping.txt文件。这将包括像这样的行

com.example.somepackage.SomeClass -> a.b.c.d:
Run Code Online (Sandbox Code Playgroud)

如果您看到这一点,您就知道哪些类被正确混淆了。您还可以通过确保该类没有此类条目来找出哪些类已被删除。

另一个好方法是在 Android Studio 中检查输出 APK。在 Android Studio 4.1 中,您可以通过转到Build > Analyze APK然后选择应该运行 Proguard 的 APK 来完成此操作。然后您可以检查该classes.dex文件并检查其内容。直接遍历文件结构就可以看到哪些类被混淆删除了。


Rya*_*ley 5

安装并运行您上传到 Google Play 的应用程序的缩小发行版本(请参阅此处此处了解有关安装 AAB 文件的信息),而不是调试版本。

如果您只是在 Studio 中点击“运行”,则您正在安装的调试版本(默认情况下)没有运行 Proguard 或其他缩小版本。如果您在将其上传到 Google Play 之前使用缩小版本,则您将获得与上传后相同的行为:上传后 Google Play 不会在其上运行任何“额外”Proguard 任务。

您还可以使用 Play 中的 Alpha/Beta 测试轨道来测试完整的 Play 体验,而无需发布给更广泛的受众或摆弄捆绑工具。