gpt4 book ai didi

android - GoogleServices - 如何使用 flavorDimensions 为每个 flavor 组合设置不同的 applicationId?

转载 作者:行者123 更新时间:2023-12-03 03:01:12 25 4
gpt4 key购买 nike

我有使用不兼容的 applicationId 的旧应用程序。我试图用 flavorDimensions 迁移它们以共享如此常见的 Assets 和代码。我有这个口味设置:

defaultConfig {
applicationId "com.example"
}

flavorDimensions 'fruit', 'env'

productFlavors {
pear {
dimension 'fruit'
}

banana {
dimension 'fruit'
}

staging {
dimension 'env'
}

prod {
dimension 'env'
}
}

我想通过 flavor 组合获得这些 applicationId:

  • pearStaging:com.example.pear_staging(注意“_”)
  • pearProd : com.example.pear
  • bananaStaging:com.example.banana_staging(注意“_”)
  • bananaProd : com.example.banana

我尝试使用 applicationIdSuffix :

productFlavors {
pear {
dimension 'fruit'
applicationIdSuffix 'pear'
}

banana {
dimension 'fruit'
applicationIdSuffix 'banana'
}

staging {
dimension 'env'
applicationIdSuffix '_staging'
}

prod {
dimension 'env'
}
}

但后缀默认以点分隔。所以它生成了错误的 applicationId,例如:

flavor pearStaging :com.example.pear._staging(注意“_”之前的“.”)

我在这个线程上看到了答案: How to set different applicationId for each flavor combination using flavorDimensions?他们讨论了一种使用 mergedFlavor.setApplicationId(...) 来在最后覆盖 applicationId 的解决方法。但是,如果我与 google services gradle plugin 结合使用,这将不起作用.

因为在插件进程阶段,我得到了这个错误:

* What went wrong:
Execution failed for task ':app:processPearStagingDebugGoogleServices'.
> No matching client found for package name 'com.example'

如您所见,它使用默认的 applicationId/包名称,而不是在 android.applicationVariants.all 阶段覆盖的 appId。

所以有更好的方法来定义我的 applicationId 每个风格组合,适用于谷歌服务任务? (我需要将这些applicationId保留为“_”,不能更改)。

最佳答案

谷歌服务 gradle 插件的当前工作方式是不可能的。也许有办法就此向谷歌反馈,但与此同时,实现带有“_”的应用程序 ID 的唯一方法是在构建 apk 后重命名应用程序 ID。因此,特定 flavor 的应用程序 ID 将使用“.”构建。分隔符,然后在构建 apk 后重命名应用程序 ID。

这可以通过使用 apktool 打开 apk 的标准过程来完成,将应用程序 ID 更改为您需要的,然后使用 apktool 重新打包,zipalign,重新签名等。如果太繁琐,有尝试执行相同操作的 GitHub 项目,但它们可能无法在所有 apk 上运行。

例如:

  1. https://github.com/testwhat/PackageRenamer
  2. https://github.com/sjitech/ApkRename

关于android - GoogleServices - 如何使用 flavorDimensions 为每个 flavor 组合设置不同的 applicationId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61247584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com