当前位置: 首页 > 知识库问答 >
问题:

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

柳英资
2023-03-14

我读过这篇文章。作者认为每个Android应用程序都应该使用代码收缩。

我使用以下代码来收缩和模糊代码,proguard规则。pro是原始的、空白的,proguard android优化。txt是原始文件。这是Android Studio的默认设置。

你知道有些项目可以在Android Studio中运行良好,但在发布到Google Play后失败了,你可以看到这篇文章。

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

当我生成。为了在Android Studio中发布aab文件,ProGuard将收缩和模糊代码,但它可能会由于不正确的收缩和模糊操作而导致运行时错误。

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

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

    debug {
    }
}

添加内容:

M:谢谢!

似乎我可以通过文章测试ProGuard是否在Android Studio中正确工作。

您可以看到代码A和图像A。

是这样吗?

代码A

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

图像A


共有3个答案

强烨
2023-03-14

我认为最简单的测试方法是在发布版本中构建应用程序并将其安装到设备上。这是最简单的方法。

郜振国
2023-03-14

有几种方法可以确认代码是否被适当地最小化。一个是检查youapp模块/构建/输出/映射/释放/mapping.txt文件。这将包括像

com.example.somepackage.SomeClass -> a.b.c.d:

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

另一个好方法是检查Android Studio中的输出APK。在Android Studio 4.1中,您可以通过转到Build来完成此操作

长孙知
2023-03-14

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

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

您还可以使用播放中的Alpha/Beta测试曲目来测试完整的播放体验,而无需向更广泛的受众发布或摆弄bundletool。

 类似资料:
  • 问题内容: 我已经安装了django-redis-cache和redis- py。我关注了Django的缓存文档。据我所知,下面的设置是我所需要的。但是我怎么知道它是否正常工作呢? … 问题答案: 尚未与Django一起使用,但是我的默认方法是在开发过程中检查某个组件是否确实写入了Redis: 首先,我刷新存储在redis中的所有键,以删除旧的缓存条目(在生产中绝对不要这样做,因为这会从redis

  • 我去了我的应用服务 在那里我启用了:应用程序日志记录(Blob)和Web服务器日志记录(存储) 上面的设置开始记录一个. log文件,其中每一行都是对我的应用的HTTP请求,标题如下: 我感兴趣的是为服务器响应HTTP 500的请求记录发布的JSON。我如何从Azure门户实现这一点?

  • 我想测试我的石英触发器是否在实践中像它假设的那样工作。我的石英配置如下所示: 我的工作类看起来像: 当我在日志中启动Spring Boot应用程序时,我可以意识到作业正在工作并周期性触发,但这不足以确认正确的工作。 这就是为什么我决定创建一个JUnit测试。我发现了一个教程:点击但是一个所有者使用了一个子句while(true ),根据这个主题:点击不是一个更可取的选项。这里出现了一个问题,是否有

  • 我也想过把所有东西都保存在配置文件中,但目前我还不知道是否可以这样做(我正在研究),以及是否方便 sharedPreferences我了解它是如何工作的。 1)我想知道是否有一个方法在应用程序调试与否时返回一个值。

  • 因此,当我在Google Play商店发布我的应用程序时,我不得不将Firebase和Google Play API控制台上的SHA1键更改为Google Play控制台生成的新键。 现在的问题是,如果我想从Android Studio测试我的应用程序,我需要将SHA1键更改回原来的键。如果我这样做,那么已经登录我的应用程序的当前用户将不再能够重新登录。 当我的应用程序依赖谷歌登录且不影响当前用户

  • 我开发了一个包含地图活动的Android应用程序。在发布应用程序之前和现在地图在模拟器中工作正常,但是在google play中发布的应用程序中的地图并没有出现。在设备的位置或在我搜索的位置没有问题,还计算了设备的位置和我搜索的位置之间的距离,但地图是完全灰色的。我该如何解决这个问题呢?