一个关于安卓打包提速的小改进

AshlyParnel 8年前
   <p>作为App开发者,打包和发包是经常要进行的工作。鉴于国内的特殊情况,造就了不可胜举的应用市场。为了便于跟踪统计必要的数据信息,我们通常会针对每个市场都进行打包。这些包总的来说几乎是一致的,可能唯一的的差别就是渠道号信息不一样。</p>    <p>Flipboard中国版本目前覆盖了大概10几个渠道,目前唯一不同的就是渠道号信息。</p>    <p>最早的实现方式为</p>    <pre>  buildConfigField "String", "CHANNEL_ID", null == versionProps['CHANNEL_ID'] ? /""/ : '"' + versionProps['CHANNEL_ID'] + '"'  </pre>    <p>上述实现的缺点有</p>    <ul>     <li>无法在manifest中配置包含渠道号信息的meta数据</li>     <li>会导致每次重新编译代码,以及后续的多次Proguard优化,相对很耗时。打包时间将近4分钟</li>    </ul>    <p>后来改进的方式为</p>    <pre>  resValue "string", "channel_id", null == versionProps['CHANNEL_ID'] ? /""/ : '"' + versionProps['CHANNEL_ID'] + '"'  </pre>    <p>新的实现解决了上面的两个问题</p>    <ul>     <li>可以在manifest中实现配置渠道号信息</li>     <li>无需重新编译源码,也无需后续的proguard的代码优化。只更新resource资源即可。打包时间缩短到14秒左右。</li>    </ul>    <p>经过如此一个小改动,从此我们不再需要漫长的等待和浪费机器性能。</p>    <p> </p>    <p>来自:http://droidyue.com/blog/2017/02/19/a-little-improvement-for-speeding-up-gradle-building-apks/</p>    <p> </p>