【问题标题】:Different keyStore for different product flavors in GradleGradle 中不同产品风格的不同 keyStore
【发布时间】:2016-07-11 17:20:23
【问题描述】:

我在 build.gradle 文件中指定了不同的 productFlavors

 dev {
            applicationId "com.advancedprogressive.chare.dev"
            versionCode 83
            versionName "2.2.1"
        }
staging {
            applicationId "com.advancedprogressive.chare.qa"
            versionCode 119
            versionName "2.8.1"
        }

并且有像

这样的签名配置
signingConfigs {
        release {
            storeFile 
            storePassword 
            keyAlias 
            keyPassword         }
        debug {
            keyPassword 
            storeFile 
            keyAlias 
            storePassword 
        }
    }

我对两种口味都有不同的键盘。我可以为不同的构建类型指定不同的密钥库,例如调试/发布,但我如何为每种风格指定不同的密钥库。

【问题讨论】:

    标签: android android-studio gradle build.gradle android-keystore


    【解决方案1】:

    使用下面的gradle可以实现多种productFlavors:

       android {
      signingConfigs {
        release {
            keyAlias 'alias'
            keyPassword 'password'
            storeFile file('first.keystore')
            storePassword 'password'
        }
    
        debug {
            keyAlias 'alias'
            keyPassword 'password'
            storeFile file('second.keystore')
            storePassword 'password'
        }
      }
    
      compileSdkVersion 23
      buildToolsVersion "23.0.2"
      defaultConfig {
            minSdkVersion 14
            targetSdkVersion 23
         }
    
          productFlavors{
            dev {
                applicationId "com.advancedprogressive.chare.dev"
                versionCode 83
                versionName "2.2.1"
                signingConfig signingConfigs.debug 
            }
            staging {
                applicationId "com.advancedprogressive.chare.qa"
                versionCode 119
                versionName "2.8.1"
                signingConfig signingConfigs.release
            }
      }
    
          }
    

    希望对你有所帮助。

    【讨论】:

    • 知道了。现在我如何指定构建是否应该可以调试。我应该在哪里放置“可调试”标志
    • 你可以在这里得到答案:run/debug release version of app
    【解决方案2】:

    你可以使用这样的东西:

    android {
        signingConfigs {
            dev {
            }
    
            staging {
            }
        }
    
        productFlavors {
            dev {
                signingConfig signingConfigs.dev
            }
    
            staging {
                signingConfig signingConfigs.staging
            } 
        }
    }
    

    【讨论】:

    • 如何为 stagingRelease 而不是 stagingDebug 指定签名配置?
    【解决方案3】:

    在互联网上搜索后,我在任何地方都找不到明确的例子。我试过了,终于成功了!

    在你的 app/build.gradle 文件中

    android{
        signingConfigs {
            free {
                def keystorePropertiesFile = rootProject.file("app/src/free/keystore.properties")
                def keystoreProperties = new Properties()
                keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
    
            paid {
                def keystorePropertiesFile = rootProject.file("app/src/paid/keystore.properties")
                def keystoreProperties = new Properties()
                keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
    
        ...
    
        flavorDimensions "default"
        productFlavors {
            free {
                applicationId "com.example.freeapp"
                versionCode 1
                versionName "1.0"
                signingConfig signingConfigs.free
    
            }
            paid {
                applicationId 'com.example.paidapp'
                versionCode 1
                versionName '1.0'
                signingConfig signingConfigs.paid
            }
        }
    }
    

    在您的 app/src/flavor_name/keystore.properties 中

    storePassword=...
    keyPassword=..
    keyAlias=...
    storeFile=src/flavor_name/keystore_file.jks //or any other path of jks file
    

    【讨论】:

    • 只是为了确定。将关键属性放在 src/flavor 中不会也将其包含到最终的 APK 中,对吗?
    • @Cristiano build.gradle 没有编译成 APK 文件。它仅用于获取所有依赖项、创建风味、进行版本控制和登录应用程序。所以关键细节不会被包括在内。
    猜你喜欢
    • 2015-11-26
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2013-08-14
    • 2013-10-01
    相关资源
    最近更新 更多