Android杂文Android多渠道打包Android技术知识

Android 多渠道打包(二)--动态多渠道资源替换技巧

2016-09-04  本文已影响2020人  wutongke

Android多渠道打包最佳实践中介绍了几种快速进行Android渠道包构建的方式,嫌弃多渠道速度慢的同学可以先去看一下,一定会有所收获。
<br /> 有时多渠道打包时不仅仅需要进行渠道号的设置,还需要对不同版本进行资源的替换或者在代码中对于某些渠道的用户进行一些特殊设置(运营的同学也不容易)。这时仅仅依靠前边的方法就不灵了,除非你想手动打包。
<br /> 这里有两种思路:

流程分析

这里我们明确自己的目标:动态资源替换多渠道打包,同时过程要快速、自动化。基本流程如下:

Paste_Image.png

代码实现

//读取首发渠道号
ArrayList channelList = new File("xxx").readLines()
java.lang.StringBuffer channels = new StringBuffer()
channelList.each {    
       channel -> channels.append(channel + ","
)}
//在这里进行渠道号到配置
productFlavors {  
    //自动打包每个渠道号,需要包各个渠道的资源放置在相应的目录下 
    //这里可以参考利用gradle进行多渠道打包,方法是一样的,网上资源也比较多 
     channelList.each {       
            flavorName -> "$flavorName" {}    
     }    
     //首发渠道号到Androidmanifest,这样代码中可以读取到
     productFlavors.all { 
             flavor ->  flavor.manifestPlaceholders = [Channel: channels]   
     }
}
try {    
    ApplicationInfo ai = getPackageManager().getApplicationInfo( getPackageName(), PackageManager.GET_META_DATA);    
    if (null != ai) {        
         metaData = ai.metaData;   
     }    
    if (null != metaData) {        
        metaValue = metaData.getString(metaKey);    
     }
} catch (PackageManager.NameNotFoundException e) {
}
return metaValue;

至此,基本动态多渠道资源替换完成。

Other

贴个不定期更新的公众号,欢迎交流:

wutongke
上一篇 下一篇

猜你喜欢

热点阅读