Android多包技术之Apk版本共存

    Googe默认的额打包方式为单打包模式包含release和debug两种,但是并不能同时安装在同一Android设备上,因为Google默认同一Apk 的唯一识别ID就是一个应用,无论是改变apk的签名还是做其他的操作,在没有变动唯一识别ID的情况下,是不能实现版本共存的。因此想要做到版本共存,一定要先改变唯一ID,当然,如果手动修改的话,是作为开发人员所能忍受的事情,通过强悍的标识”applicationIdSuffix“可以实现手动修改ID的麻烦事,如下:

在主项目的bulid.gradle下面加上

applicationIdSuffix 
buildTypes {
      release {
           //开启混淆
           minifyEnabled false
           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           signingConfig signingConfigs.config
           applicationIdSuffix "AA"
//         applicationIdSuffix "BB"
      }
applicationIdSuffix 
debug { jniDebuggable = true }}

      此时通过切换”applicationIDSuffix“的值,然后打包版本就可以实现版本共存了,当然我们需要做到的不仅仅是这样而已,在实际的开发过程中,遇到共享同一套核心代码的事情必然是会出现,这时候根据不同的版本需求,可能会需要我们准备两套甚至是更多的资源文件。

      所以单纯的版本共存上面的方式足够了,但是这并不影响我们继续学习的心。为了实现资源文件的分离模式,我们需要寻求新的解决方案。

productFlavors
    
signingConfigs {
    configAA {
        keyAlias 'AA'
        keyPassword 'AA'
        storeFile file('AA.jks')
        storePassword 'AA'
    }
}

signingConfigs {
    configBB {
        keyAlias 'BB'
        keyPassword 'BB'
        storeFile file('BB.jks')
        storePassword 'BB'
    }
}

productFlavors{
    AA{
        applicationId "com.xx.xx.AA"
        buildTypes {
            release {
                //开启混淆
                minifyEnabled false
                //shrinkResources false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.configAA
                applicationIdSuffix "AA"
            }
            debug {
                jniDebuggable = true
            }
        }
    }

    BB{
        applicationId "com.xx.xx.BB"
        buildTypes {
            release {
                //开启混淆
                minifyEnabled false
                //shrinkResources false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.configBB
                applicationIdSuffix "BB"
            }
            debug {
                jniDebuggable = true
            }
        }
    }
}

”productFlavors“ 中放置AA,BB,CC......等等多个不同的共存版本问题,通过在各自的版本中配置新的唯一识别ID,配置新的各自的签名文件以便在同一android市场上可以实现共同上架。build.gradle方面的工作完成,关键的因素来了,如何自动配置不同的资源文件。

1. 首先在主项目的main同级目录下新建需要的版本文件夹,如下:


2. 其次在版本文件夹下面创建对应的资源文件夹,如下:


不仅仅是strings.xml文件哦,像drawable,layout等等文件下的资源文件都可以重新配置。需要注意的是如果在版本文件的资源中有出现的如:<string name="app_name">"AA"<string/>,那么在main文件下的资源文件就不能出现这个字段了,同理其他的资源文件也是一样。因为productFlavors会做资源文件的覆盖操作。

3. 通过Build Variant 可以运行想要的版本了,如下:


这样就可可打包出不同资源,不同ID的共存版本了。




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值