使用applicationIdSuffix来佩戴应用程序和自定义构建类型

Tom*_*Tom 23 android gradle android-gradle-plugin wear-os

我有一个应用程序,我想添加Android Wear应用程序扩展.主应用程序有三种构建类型(调试,测试和发布).Beta版本applicationIdSuffix允许我在同一设备上并行安装Play-store版本和当前开发版本.这一切都很好,直到我添加了磨损应用程序.

主应用程序build.gradle看起来像这样:

apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        ...
        applicationId "com.example.mainApp"
        ...
    }
    buildTypes {
        debug {
            applicationIdSuffix '.debug'                
        }
        beta {
            applicationIdSuffix '.beta'
        }
        release {
        }
    }
}

dependencies {
    ...
    wearApp project(':wear')
}
Run Code Online (Sandbox Code Playgroud)

Wear-App具有相同的构建类型,具有相同的applicationIdSuffix值.但是,当我构建beta应用程序(通过调用gradle assembleBeta)时,构建过程构建:wear:assembleRelease而不是:wear:assembleBeta为什么我在构建期间收到以下错误消息:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:handleBetaMicroApk'.
> The main and the micro apps do not have the same package name.
Run Code Online (Sandbox Code Playgroud)

在使用构建类型打包主应用程序时,如何告诉构建过程构建正确的构建类型beta

Cyr*_*oux 19

按照Scott Barta发布的链接(http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication),我想到了这个:

在wear应用程序的build.gradle中,添加publishNonDefault true(发布所有变体):

android {
    publishNonDefault true
}
Run Code Online (Sandbox Code Playgroud)

在主应用程序的build.gradle中,
替换

wearApp project(':wear')
Run Code Online (Sandbox Code Playgroud)

通过

debugWearApp project(path:':wear', configuration: 'debug')
releaseWearApp project(path:':wear', configuration: 'release')
Run Code Online (Sandbox Code Playgroud)

  • 如何将其与口味相结合? (5认同)