Skip to content

一个项目如何编译多个不同签名、包名、资源、依赖等,的apk?

Notifications You must be signed in to change notification settings

xujiaji/OneForAllApk

Repository files navigation

一个项目如何编译多个不同签名、包名、资源、依赖等,的apk?

文章地址:https://blog.xujiaji.com/post/android-project-one-for-more

该项目为该文章Demo

其他的一些问题整理

  1. 微信包名问题请参照这里
  2. sharedUserId变更配置

运行时选择渠道

选择不同渠道将运行不同的apk

这些apk,都有不同的资源配置

  • 不同的应用名称
  • 不同的版本
  • 不同的java文件
  • 不同的图片资源
  • 不同的文本资源
  • 不同的assets文件资源
  • 不同的网络资源
  • 不同的主题颜色
  • 不同的第三方key
  • 不同的依赖类库
  • 等等

后期更新的配置

library中也需要动态改变资源配置,并且打包如何加上中文名 #3

  1. 如需要中文名,只需要switch语句为对应渠道添加上即可,outputFileName拼接的结果就是最终的文件名
    applicationVariants.all {
        variant ->
            variant.outputs.all {
                def chineseName = ""
                switch(variant.productFlavors[0].name) {
                    case "oneApk":
                        chineseName = "第一个APK"
                        break
                    case "twoApk":
                        chineseName = "第二个APK"
                        break
                    case "threeApk":
                        chineseName = "第三个APK"
                        break
                }
                outputFileName = "${chineseName}-${variant.productFlavors[0].name}-v${variant.productFlavors[0].versionName}-${releaseTime()}.apk"
            }
    }
  1. 下图展示了对library的配置,只需在library也添加上对应的渠道和文件夹即可(和主模块同理)。需注意如果使用library的BuildConfig注意包名,如本例子中的MainActivity使用了全路径com.xujiaji.library.BuildConfig

About

一个项目如何编译多个不同签名、包名、资源、依赖等,的apk?

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages