【问题标题】:Testing the release app in android with the test apk not being `proguarded`在 android 中测试发布应用程序,测试 apk 没有被“保护”
【发布时间】:2026-01-22 17:30:01
【问题描述】:

我想在启用了 proguard 的 android 中测试发布 apk。但我不希望 android 测试 apk 启用 proguard。

有什么方法可以禁用对 android 测试 apk 的保护。

我添加了这个

defaultConfig { 
   ....
   testBuildType 'release'`
  }

    buildTypes {
        release {
            minifyEnabled true
            signingConfig signingConfigs.Release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            //proguard files for the android test apk
            testProguardFile('proguard-test-rules.pro')
        }
}

正在寻找一种禁用 android 测试的 proguard 的方法。

【问题讨论】:

  • 创建另一个 buildType,从 release 复制它的配置,但禁用 minifyEnabled,并在其上运行测试
  • 我想测试发布本身,而不是创建单独的构建类型。我正在寻找一些可以在发布本身中做的事情。
  • release 只是构建类型的名称。你实际上说你想要一个不同的配置而不创建不同的配置。添加新的构建类型是完全免费的,所以我看不出你不能这样做的单一原因。

标签: android gradle proguard android-proguard


【解决方案1】:

让它按如下方式工作。

android {

    defaultConfig {

        /**
         * switch to testBuildType release when the parameter has androidTestRelease
         * ./gradlew :app:assembleReleaseAndroidTest -PandroidTestRelease
         **/
        if (project.hasProperty('androidTestRelease')) {
            testBuildType 'release'
        } else {
            testBuildType 'debug'
        }
    }


    buildTypes {
        release {

            /***
             * Disable proguard when building the android test release apk
             * ./gradlew :app:assembleReleaseAndroidTest -PandroidTestRelease
             */
            if (project.hasProperty('androidTestRelease')) {
                minifyEnabled false
            } else {
                minifyEnabled true
            }

            signingConfig signingConfigs.Release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            testCoverageEnabled = true
        }
    }

}

您可以使用

构建 apk
./gradlew :app:assembleReleaseAndroidTest -PandroidTestRelease

【讨论】:

    【解决方案2】:

    禁用 ProGuard (可能)没用...最好创建一个 debuggable 包:

    staging {
    
        signingConfig signingConfigs.Release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
        testCoverageEnabled true
        minifyEnabled false
        zipAlignEnabled true
        shrinkResources true
        pseudoLocalesEnabled false
        renderscriptDebuggable true
        jniDebuggable true
        debuggable true
    }
    

    虽然还不确定,但可以对发布版本进行测试(按设计)。

    【讨论】:

    • 没有。我想使用用于发布的相同 apk 对其进行测试。也许有一些方法可以单独禁用测试 apk 的保护。我正在寻找那个
    最近更新 更多