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

Gradle在发布模式下生成可调试的APK

柯乐童
2023-03-14

我的构建中有以下代码。格拉德尔:

productFlavors {
        juridico {
            applicationId "br.com.eit.appprovaconcursos"
        }
        enem {
            applicationId "com.ioasys.appprova"
        }
    }

    buildTypes {
        defaultConfig {
            debuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            testCoverageEnabled true
        }
        release {
            debuggable false
            testCoverageEnabled true
            //noinspection GroovyAssignabilityCheck
            signingConfig signingConfigs.release
        }
    }

要生成去释放APK,我使用以下命令:

/gradlew assembleEnemRelease

当上传生成的APK(app-enem-release.apk)在谷歌播放我得到了以下错误:

您上载了一个可调试的APK。出于安全原因,您需要先禁用调试,然后才能将其发布到Google Play中。了解有关可调试APK的更多信息。

我能够通过在android清单上硬编码生成一个不可调试的APKandroid:debuggable=“false”。但是构建配置仍然像一个可调试的构建,正如您在生成构建中看到的那样。配置(我仔细检查,这个构建配置来自release文件夹,而且我没有收到Crashlytics上的任何数据,我从调试构建中禁用了它)。

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.ioasys.appprova";
  public static final String BUILD_TYPE = "release";
  public static final String FLAVOR = "enem";
  public static final int VERSION_CODE = 20135;
  public static final String VERSION_NAME = "3.0.1";
}

共有2个答案

岳池暝
2023-03-14

作为解决方案,我在defaultConfig中将可调试设置为true,在发行版中,我覆盖了配置,并将可调试设置为false。

上官英哲
2023-03-14

我发现这个奇怪的结果来自testCoverageEnabled true

如果您的发布版本启用了测试覆盖率,它将生成覆盖率报告,然后您的APK将成为可调试的APK。

testCoverageEnabled设置为false可以解决这个问题,并且在发布构建时不生成覆盖率报告也是有意义的。

 类似资料: