【问题标题】:Gradle Flavour wise change packageName and applicationIdGradle Flavor 明智地更改 packageName 和 applicationId
【发布时间】:2018-11-06 00:09:16
【问题描述】:

我有一个核心产品(例如 School core)现在我需要为 2 所学校推出它(例如 School ASchool B >)。唯一不同的是应用程序图标启动画面。我尝试通过风味来解决这个问题。我们知道要上传到 google play store 我们需要不同的包名,所以我被卡在那里了。

我的味道是这样的——

productFlavors {
    main {
        applicationId "net.school.main"
        versionCode 7
        versionName "2.12"
    }
    schoolA {
        versionCode 2
        versionName '1.01'
        applicationId 'net.school.schoolA'
    }
    schoolB {
        versionCode 1
        versionName '1.0'
        applicationId 'net.school.schoolB'
    }
}

当我运行风味 schoolA 时,它说找不到包。我正在寻找最好的方法,以便将来可以通过最小的更改添加任何新学校。

【问题讨论】:

  • 你检查过这个SO
  • 是的,这只是在更改 appId。我也需要换包
  • 你不能为不同的口味更改包名称。
  • 克服此类问题的最佳方法应该是什么?

标签: android android-build android-package-managers android-build-type android-build-flavors


【解决方案1】:

很遗憾,您无法更改不同口味的包名称。

每个 Android 应用都有一个唯一的应用 ID,它看起来像一个 Java 包名称,例如 com.example.myapp。此 ID 在设备上和 Google Play 商店中唯一标识您的应用。因此,您可以重新定义完整的 applicationId 属性,也可以使用 applicationIdSuffix 将一个段附加到默认应用程序 ID。详情请参考official document

【讨论】:

  • 我已经根据你所看到的风格添加了 applicationId。但是当我运行应用程序(Flavour schoolA)时,它正在寻找 net.school.main.SplashScreenActivity 但我添加了 SplashScreenActivity net.school.schoolA
  • 你能用 Manifest.xml 更新你的问题吗?如果 SplashScreenActivity 是启动器活动,那么您也必须为 main 定义它
【解决方案2】:

问题解决了吗?

就我而言,它运行良好。试试这样

buildTypes {
        release {

        }
    }

flavorDimensions "main"

productFlavors {
main {
    applicationId "net.school.main"
    versionCode 7
    versionName "2.12"
}
schoolA {
    versionCode 2
    versionName '1.01'
    applicationId 'net.school.schoolA'
}
schoolB {
    versionCode 1
    versionName '1.0'
    applicationId 'net.school.schoolB'
}
}

现在您可以将应用程序图标放入 src/scholA/res/ 标准文件夹,例如 drawable 或 mipmap。 并使用 Build Variants 来调试或发布每种风格。

【讨论】:

    猜你喜欢
    • 2015-12-25
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多