如何为每种风格生成单独的签名APK?

时间:2018-02-27 11:26:38

标签: android android-studio android-gradle apk

我正在使用Android Studio 3更新Android应用。以前的版本是使用Android Studio 2创建的。

当我使用Android Studio 2构建最后一个版本时,已经创建了两个单独的APK,一个用于我配置的每个产品风格。现在在Android Studio 3中,“Generate Signed APK”对话框仅提供“组合”风格,可创建包含两种风格的单个APK:

App Gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.MyApp"
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 42
        versionName "2.0.1"
    }

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

    flavorDimensions "freemium", "free"
    productFlavors {
        MyApp {
            dimension "freemium"
        }
        MyAppFree {
            dimension "free"
            applicationId 'com.example.MyApp.Free'
        }
    }
}
  • 在Android Studio中选择“构建/生成已签名的APK ...”
  • 输入我的密钥库密码,然后单击“下一步”
  • 在下一页中,我可以选择目标文件夹,构建类型(发布)和风格。虽然v2在这里提供了两种风格(MyApp和MyAppFree),但v3仅提供MyApp-MyAppFree
  • app-MyApp-MyAppFree-release.apk已创建,而非app-MyApp-release.apkapp-MyAppFree-release.apk

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

好的,问题是由两种口味使用不同的风味维度引起的。 Gradle为每个维度组合创建一个汇编任务:在我的情况下为MyAppMyAppFree

我添加维度只是为了使警告静音"当从Android Studio 2更新为3时,所有口味现在必须属于命名风味维度" 。因为我没有实际上,使用解决方案的维度只是为两种风格使用一个维度:

flavorDimensions "default"
    productFlavors {
        MyApp {
            dimension "default"
        }
        MyAppFree {
            dimension "default"
            applicationId 'com.example.MyApp.Free'
        }
    }