android - Android风格签名无法正常工作

标签 android gradle android-gradle-plugin build.gradle code-signing

我需要使用特定的签名配置来签名产品 flavor 。我在stackoverflow上找到了一些引用,例如thisthis。它适用于我的flavor发布版本,但不适用于调试版本。我在gradle中有此配置:

...
signingConfigs {
    release {
        storeFile file("../config/keystores/release_keystore")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }

    debug {
        storeFile file("../config/keystores/debug.keystore")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }

    other {
        storeFile file("../config/keystores/other")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }
}

flavorDimensions "dim"

productFlavors {
    production {
        dimension "dim"
    }

    other {
        dimension "dim"
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        
        productFlavors.other.signingConfig signingConfigs.other
        productFlavors.production.signingConfig signingConfigs.release
    }

    debug {
        productFlavors.other.signingConfig signingConfigs.other
        productFlavors.production.signingConfig signingConfigs.debug
    }
}

这对于otherRelease风格非常有效。但是当我使用构建配置other时,我的APK没有被otherDebug签名配置所吸引。release版本已正确签名。

有谁知道为什么在 Debug模式下签名配置未按配置应用?

最佳答案

我终于弄清楚了什么地方出了问题,这要归功于@AllanHasegawa在另一个问题Signing product flavors with gradle中的评论。简而言之,我必须在signingConfig null中添加buildTypes,因为Android添加了一些默认的签名配置。即使我试图覆盖它。根据我的问题的完整示例:

...
signingConfigs {
    release {
        storeFile file("../config/keystores/release_keystore")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }

    debug {
        storeFile file("../config/keystores/debug.keystore")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }

    other {
        storeFile file("../config/keystores/other")
        storePassword "mysecurepassword"
        keyAlias "myultrasecurealias"
        keyPassword "myreallysecurekeypassword"
    }
}

flavorDimensions "dim"

productFlavors {
    production {
        dimension "dim"
    }

    other {
        dimension "dim"
    }
}

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

        // this loop is a better implementation than my previous example
        productFlavors.all { flavor ->
                flavor.signingConfig signingConfigs.release
        }        
        productFlavors.other.signingConfig signingConfigs.other
    }

    debug {
        signingConfig null
        // this loop is a better implementation than my previous example
        productFlavors.all { flavor ->
                flavor.signingConfig signingConfigs.debug
        }
        productFlavors.other.signingConfig signingConfigs.other
    }
}

关于android - Android风格签名无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59426636/

相关文章:

android - 从 Android 应用程序打开 Facebook 页面?

android - gradle 从编译中排除组

java - 使用 gradle 迁移到 Java 11;不支持的操作异常

Android Studio Gradle 读取 ZIP 文件时出错

android - 有没有办法从根 build.gradle 文件共享 buildTypes 和 signingConfigs?

git - 你应该包含还是忽略 gradle-wrapper.properties

Android Gradle Apache HttpClient 不存在?

android - 在带有角度的 native 脚本中,当键盘打开时,它将我的元素(操作栏)推出屏幕(ANDROID)

java - 通过改造进行最小的发布请求

android - 字体更改时处理运行时 Activity 配置