使用 gradle buildTypes 的 Android 的不同 Apk

Posted

技术标签:

【中文标题】使用 gradle buildTypes 的 Android 的不同 Apk【英文标题】:Different Apks for android using gradle buildTypes 【发布时间】:2018-09-26 23:49:13 【问题描述】:

我正在尝试在同一设备上同时安装调试版本和发布版本,因此尝试将 applicationIdSuffix 添加到 gradle 文件的 buildTypes 块中,如文档中所述。没有提到要创建任何包,而是说找不到包错误。请帮忙。

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

def versionMajor = 1
def versionMinor = 0
def versionPatch = 4
def versionBuild = 0

android 
    compileSdkVersion 26
    defaultConfig 
        applicationId "com.edu.gcfapp"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
        versionName "$versionMajor.$versionMinor.$versionPatch"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        javaCompileOptions 
            annotationProcessorOptions 
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            
        
    
    buildTypes 

        debug 
            applicationIdSuffix ".debug"
        

        release 
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    
    flavorDimensions "default"

我得到的错误是这个..

Error:FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDevDebugGoogleServices'.
> No matching client found for package name 'com.edu.gcfapp.debug'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 9s

【问题讨论】:

【参考方案1】:

看起来您正在使用 Google 服务,尽管您从 gradle 中省略了它。

您的 google 配置文件(我认为是 google-services.json 文件)不包含 com.edu.gcfapp.debug 的任何配置信息

返回您的 google 控制台并为您的发布和调试包名称创建一个文件,并将它们放在相关的构建文件夹中。

【讨论】:

以上是关于使用 gradle buildTypes 的 Android 的不同 Apk的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件BuildType 编译类型配置 ⑦ ( BuildType#testCoverageEnabled 配置 )

Android Gradle 插件BuildType 编译类型配置 ⑥ ( BuildType#signingConfig 配置 )

Gradle buildType/productFlavor 使用意外的 buildConfigField

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.1——使用Build Types

Gradle:如何为需要相同 Activity 但具有不同意图过滤器的不同 buildType 合并 Android 清单文件

Android Gradle 插件DexOptions 配置 ④ ( additionalParameters 属性配置 | 使用 BuildType 配置多 dex 机制 )