android gradle 多渠道打包分发
来源:互联网 发布:seo是什么意思 编辑:程序博客网 时间:2024/06/05 07:43
本文转载自:http://blog.csdn.net/catoop/article/details/50435431
安卓开发完成,对于一个开放应用而言,我们需要发布到不同的应用市场,同时我们也需要统计不同市场的用户下载量。(通过启动应用后获取不同市场apk中的不同值来区分)
下面用一个具体的实例来说明:
1、在AndroidManifest.xml的application内添加meta-data标签
<code class="hljs xml has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial; "><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">application</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:allowBackup</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"true"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:icon</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"@drawable/ic_launcher"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:label</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"@string/app_name"</span>></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">meta-data</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"APP_CHANNEL"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:value</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"${APP_CHANNEL_VALUE}"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">activity</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">".MainActivity"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:label</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"@string/app_name"</span> ></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">intent-filter</span>></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">action</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"android.intent.action.MAIN"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">category</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102); ">android:name</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0); ">"android.intent.category.LAUNCHER"</span> /></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">intent-filter</span>></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">activity</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box; "></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136); ">application</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; "><li style="box-sizing: border-box; padding: 0px 5px; ">1</li><li style="box-sizing: border-box; padding: 0px 5px; ">2</li><li style="box-sizing: border-box; padding: 0px 5px; ">3</li><li style="box-sizing: border-box; padding: 0px 5px; ">4</li><li style="box-sizing: border-box; padding: 0px 5px; ">5</li><li style="box-sizing: border-box; padding: 0px 5px; ">6</li><li style="box-sizing: border-box; padding: 0px 5px; ">7</li><li style="box-sizing: border-box; padding: 0px 5px; ">8</li><li style="box-sizing: border-box; padding: 0px 5px; ">9</li><li style="box-sizing: border-box; padding: 0px 5px; ">10</li><li style="box-sizing: border-box; padding: 0px 5px; ">11</li><li style="box-sizing: border-box; padding: 0px 5px; ">12</li><li style="box-sizing: border-box; padding: 0px 5px; ">13</li><li style="box-sizing: border-box; padding: 0px 5px; ">14</li><li style="box-sizing: border-box; padding: 0px 5px; ">15</li><li style="box-sizing: border-box; padding: 0px 5px; ">16</li><li style="box-sizing: border-box; padding: 0px 5px; ">17</li><li style="box-sizing: border-box; padding: 0px 5px; ">18</li><li style="box-sizing: border-box; padding: 0px 5px; ">19</li></ul>
2、修改build.gradle文件,在android {} 中添加
<code class="hljs cs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial; ">android { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; ">// 打包渠道List</span> productFlavors { wandoujia { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"豌豆荚"</span>] } cn360 { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"360"</span>] } baidu { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"百度"</span>] } tencent { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"应用宝"</span>] } sougou { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"搜狗市场"</span>] } }}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; "><li style="box-sizing: border-box; padding: 0px 5px; ">1</li><li style="box-sizing: border-box; padding: 0px 5px; ">2</li><li style="box-sizing: border-box; padding: 0px 5px; ">3</li><li style="box-sizing: border-box; padding: 0px 5px; ">4</li><li style="box-sizing: border-box; padding: 0px 5px; ">5</li><li style="box-sizing: border-box; padding: 0px 5px; ">6</li><li style="box-sizing: border-box; padding: 0px 5px; ">7</li><li style="box-sizing: border-box; padding: 0px 5px; ">8</li><li style="box-sizing: border-box; padding: 0px 5px; ">9</li><li style="box-sizing: border-box; padding: 0px 5px; ">10</li><li style="box-sizing: border-box; padding: 0px 5px; ">11</li><li style="box-sizing: border-box; padding: 0px 5px; ">12</li><li style="box-sizing: border-box; padding: 0px 5px; ">13</li><li style="box-sizing: border-box; padding: 0px 5px; ">14</li><li style="box-sizing: border-box; padding: 0px 5px; ">15</li><li style="box-sizing: border-box; padding: 0px 5px; ">16</li><li style="box-sizing: border-box; padding: 0px 5px; ">17</li><li style="box-sizing: border-box; padding: 0px 5px; ">18</li><li style="box-sizing: border-box; padding: 0px 5px; ">19</li><li style="box-sizing: border-box; padding: 0px 5px; ">20</li><li style="box-sizing: border-box; padding: 0px 5px; ">21</li><li style="box-sizing: border-box; padding: 0px 5px; ">22</li></ul>
或者使用下面方法,直接使用flavor的name做为${APP_CHANNEL_VALUE}
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial; ">android { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; ">// 打包渠道List</span> productFlavors { wandoujia {} cn360 {} baidu {} tencent {} sougou {} } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; ">// 批量处理,直接使用flavor的name作为APP_CHANNEL_VALUE的值</span> productFlavors<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">.</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box; ">all</span> { flavor <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box; ">-> </span>flavor<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">.</span>manifestPlaceholders <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box; ">=</span> <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; ">[</span>APP_CHANNEL_VALUE: name<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; ">]</span><span class="hljs-markup" style="box-sizing: border-box; "> }}</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; "><li style="box-sizing: border-box; padding: 0px 5px; ">1</li><li style="box-sizing: border-box; padding: 0px 5px; ">2</li><li style="box-sizing: border-box; padding: 0px 5px; ">3</li><li style="box-sizing: border-box; padding: 0px 5px; ">4</li><li style="box-sizing: border-box; padding: 0px 5px; ">5</li><li style="box-sizing: border-box; padding: 0px 5px; ">6</li><li style="box-sizing: border-box; padding: 0px 5px; ">7</li><li style="box-sizing: border-box; padding: 0px 5px; ">8</li><li style="box-sizing: border-box; padding: 0px 5px; ">9</li><li style="box-sizing: border-box; padding: 0px 5px; ">10</li><li style="box-sizing: border-box; padding: 0px 5px; ">11</li><li style="box-sizing: border-box; padding: 0px 5px; ">12</li><li style="box-sizing: border-box; padding: 0px 5px; ">13</li><li style="box-sizing: border-box; padding: 0px 5px; ">14</li><li style="box-sizing: border-box; padding: 0px 5px; ">15</li><li style="box-sizing: border-box; padding: 0px 5px; ">16</li><li style="box-sizing: border-box; padding: 0px 5px; ">17</li></ul>
这样就完成了,执行 gradle assembleRelease 喝口茶坐等便可。
完成后,到build/outputs/apk中就可以看到各种渠道包。
有关assemble可用的命令还有:
<code class="hljs mathematica has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial; ">gradle assembleDebug //所有<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Debug</span>版本gradle assembleRelease //所有<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Release</span>版本gradle assembleBaidu //指定渠道的<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Debug</span>和<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Release</span>版本gradle assembleBaiduDebug //指定渠道的<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Debug</span>版本gradle assembleBaiduRelease //指定渠道的<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Release</span>版本gradle build //所有渠道的<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Debug</span>和<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">Release</span>版本</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; "><li style="box-sizing: border-box; padding: 0px 5px; ">1</li><li style="box-sizing: border-box; padding: 0px 5px; ">2</li><li style="box-sizing: border-box; padding: 0px 5px; ">3</li><li style="box-sizing: border-box; padding: 0px 5px; ">4</li><li style="box-sizing: border-box; padding: 0px 5px; ">5</li><li style="box-sizing: border-box; padding: 0px 5px; ">6</li></ul>
最后附上我的 MainActivity 和 build.gradle
<code class="hljs java has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial; "><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">package</span> com.example.myandroid;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">import</span> android.app.Activity;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">import</span> android.content.pm.ApplicationInfo;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">import</span> android.content.pm.PackageManager;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">import</span> android.content.pm.PackageManager.NameNotFoundException;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">import</span> android.os.Bundle;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">import</span> android.widget.Toast;<span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box; ">/** * 应用入口 * *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box; "> @author</span> SHANHY(365384722@QQ.COM) *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box; "> @date</span> 2015年12月30日 */</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">public</span> <span class="hljs-class" style="box-sizing: border-box; "><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102); ">MainActivity</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102); ">Activity</span> {</span> <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box; ">@Override</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">void</span> <span class="hljs-title" style="box-sizing: border-box; ">onCreate</span>(Bundle savedInstanceState) { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">super</span>.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String channel = getAppMetaData(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"APP_CHANNEL"</span>); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">if</span>(channel != <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">null</span>) Toast.makeText(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">this</span>, channel, Toast.LENGTH_SHORT).show(); } <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box; ">/** * 获取Application下面的metaData * *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box; "> @param</span> name *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box; "> @return</span> *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box; "> @author</span> SHANHY *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box; "> @date</span> 2015年12月30日 */</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">public</span> String <span class="hljs-title" style="box-sizing: border-box; ">getAppMetaData</span>(String meta_name){ <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">try</span> { ApplicationInfo appInfo = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">this</span>.getPackageManager() .getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">return</span> appInfo.metaData.getString(meta_name); } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">catch</span> (NameNotFoundException e) { e.printStackTrace(); } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">return</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">null</span>; }}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; "><li style="box-sizing: border-box; padding: 0px 5px; ">1</li><li style="box-sizing: border-box; padding: 0px 5px; ">2</li><li style="box-sizing: border-box; padding: 0px 5px; ">3</li><li style="box-sizing: border-box; padding: 0px 5px; ">4</li><li style="box-sizing: border-box; padding: 0px 5px; ">5</li><li style="box-sizing: border-box; padding: 0px 5px; ">6</li><li style="box-sizing: border-box; padding: 0px 5px; ">7</li><li style="box-sizing: border-box; padding: 0px 5px; ">8</li><li style="box-sizing: border-box; padding: 0px 5px; ">9</li><li style="box-sizing: border-box; padding: 0px 5px; ">10</li><li style="box-sizing: border-box; padding: 0px 5px; ">11</li><li style="box-sizing: border-box; padding: 0px 5px; ">12</li><li style="box-sizing: border-box; padding: 0px 5px; ">13</li><li style="box-sizing: border-box; padding: 0px 5px; ">14</li><li style="box-sizing: border-box; padding: 0px 5px; ">15</li><li style="box-sizing: border-box; padding: 0px 5px; ">16</li><li style="box-sizing: border-box; padding: 0px 5px; ">17</li><li style="box-sizing: border-box; padding: 0px 5px; ">18</li><li style="box-sizing: border-box; padding: 0px 5px; ">19</li><li style="box-sizing: border-box; padding: 0px 5px; ">20</li><li style="box-sizing: border-box; padding: 0px 5px; ">21</li><li style="box-sizing: border-box; padding: 0px 5px; ">22</li><li style="box-sizing: border-box; padding: 0px 5px; ">23</li><li style="box-sizing: border-box; padding: 0px 5px; ">24</li><li style="box-sizing: border-box; padding: 0px 5px; ">25</li><li style="box-sizing: border-box; padding: 0px 5px; ">26</li><li style="box-sizing: border-box; padding: 0px 5px; ">27</li><li style="box-sizing: border-box; padding: 0px 5px; ">28</li><li style="box-sizing: border-box; padding: 0px 5px; ">29</li><li style="box-sizing: border-box; padding: 0px 5px; ">30</li><li style="box-sizing: border-box; padding: 0px 5px; ">31</li><li style="box-sizing: border-box; padding: 0px 5px; ">32</li><li style="box-sizing: border-box; padding: 0px 5px; ">33</li><li style="box-sizing: border-box; padding: 0px 5px; ">34</li><li style="box-sizing: border-box; padding: 0px 5px; ">35</li><li style="box-sizing: border-box; padding: 0px 5px; ">36</li><li style="box-sizing: border-box; padding: 0px 5px; ">37</li><li style="box-sizing: border-box; padding: 0px 5px; ">38</li><li style="box-sizing: border-box; padding: 0px 5px; ">39</li><li style="box-sizing: border-box; padding: 0px 5px; ">40</li><li style="box-sizing: border-box; padding: 0px 5px; ">41</li><li style="box-sizing: border-box; padding: 0px 5px; ">42</li><li style="box-sizing: border-box; padding: 0px 5px; ">43</li><li style="box-sizing: border-box; padding: 0px 5px; ">44</li><li style="box-sizing: border-box; padding: 0px 5px; ">45</li><li style="box-sizing: border-box; padding: 0px 5px; ">46</li></ul>
完整的 build.gradle 脚本
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial; ">buildscript { repositories { jcenter() } dependencies { classpath <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'com.android.tools.build:gradle:2.0.0-alpha3'</span> }}apply plugin: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'com.android.application'</span>dependencies { compile fileTree(dir: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'libs'</span>, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">include</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'*.jar'</span>)}android { compileSdkVersion <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box; ">14</span> buildToolsVersion <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"23.0.2"</span> defaultConfig { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 可以手动修改如下一些配置,无需改动任何代码便可以生成对应配置的apk</span> applicationId <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"com.example.myandroid.aaa"</span> minSdkVersion <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box; ">8</span> targetSdkVersion <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box; ">21</span> versionCode <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box; ">200</span> versionName <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"2.0.0"</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // dex突破65535限制</span> multiDexEnabled <span class="hljs-constant" style="box-sizing: border-box; ">true</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 默认打包渠道(官方)</span> manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"官方"</span>] } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 打包渠道List</span> productFlavors { myself { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"官方"</span>] } wandoujia { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"豌豆荚"</span>] } cn360 { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"360"</span>] } baidu { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"百度"</span>] } tencent { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"应用宝"</span>] } sougou { manifestPlaceholders = [APP_CHANNEL_VALUE: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"搜狗市场"</span>] } } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 打包渠道List</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //productFlavors {</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // myself {}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // wandoujia {}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // cn360 {}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // baidu {}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // tencent {}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // sougou {}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //}</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 批量处理,直接使用flavor的name作为APP_CHANNEL_VALUE的值(也可以不使用该方法,在productFlavors中逐一配置)</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //productFlavors.all { flavor -></span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // flavor.manifestPlaceholders = [APP_CHANNEL_VALUE: name]</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //}</span> lintOptions { abortOnError <span class="hljs-constant" style="box-sizing: border-box; ">false</span> } sourceSets { main { manifest.srcFile <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'AndroidManifest.xml'</span> java.srcDirs = [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'src'</span>] resources.srcDirs = [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'src'</span>] aidl.srcDirs = [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'src'</span>] renderscript.srcDirs = [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'src'</span>] res.srcDirs = [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'res'</span>] assets.srcDirs = [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'assets'</span>] } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // Move the tests to tests/java, tests/res, etc...</span> instrumentTest.setRoot(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'tests'</span>) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // Move the build types to build-types/<type></span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // This moves them out of them default location under src/<type>/... which would</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // conflict with src/ being used by the main source set.</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // Adding new build types or product flavors should be accompanied</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // by a similar customization.</span> debug.setRoot(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'build-types/debug'</span>) release.setRoot(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'build-types/release'</span>) } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //签名信息</span> signingConfigs { debug{ <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // No Debug Config</span> } release { storeFile <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">file</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"xxxxx.key"</span>) storePassword <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"xxxxx"</span> keyAlias <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"xxxxx"</span> keyPassword <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"xxxxx"</span> } } buildTypes { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //Debug模式</span> debug { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 显示LOG,在java代码中的调用方式为:BuildConfig.LOG_DEBUG,AS工具可以在BuildConfig.java中新增这个字段,如果还要兼容使用eclipse,不建议使用新增字段,因为eclipse在clean后会重新生成BuildConfig.java(默认使用BuildConfig.DEBUG能满足需要就不要特殊处理了)</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //buildConfigField "boolean", "LOG_DEBUG", "true"</span> versionNameSuffix <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"-debug"</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 不开启混淆</span> minifyEnabled <span class="hljs-constant" style="box-sizing: border-box; ">false</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 不需要ZIP优化</span> zipAlignEnabled <span class="hljs-constant" style="box-sizing: border-box; ">false</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 不需要资源压缩</span> shrinkResources <span class="hljs-constant" style="box-sizing: border-box; ">false</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // signingConfig </span> signingConfig signingConfigs.debug } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //Release模式</span> release { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 不显示LOG</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> //buildConfigField "boolean", "LOG_DEBUG", "true"</span> minifyEnabled <span class="hljs-constant" style="box-sizing: border-box; ">true</span> zipAlignEnabled <span class="hljs-constant" style="box-sizing: border-box; ">true</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 资源压缩,移除无用的资源文件</span> shrinkResources <span class="hljs-constant" style="box-sizing: border-box; ">true</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 混淆文件配置</span> proguardFiles getDefaultProguardFile(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'proguard-android.txt'</span>), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'proguard-rules.pro'</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 签名信息配置(如果上面配置了defaultConfig则可以不用指定signingConfig)</span> signingConfig signingConfigs.release applicationVariants.all { variant -> variant.outputs.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">each</span> { output -> def outputFile = output.outputFile <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box; ">if</span> (outputFile != <span class="hljs-constant" style="box-sizing: border-box; ">null</span> && outputFile.name.endsWith(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">'.apk'</span>)) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; "> // 输出apk名称为myandroid_v1.0.0_2015-12-30_baidu.apk</span> def fileName = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"myandroid_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"</span> output.outputFile = <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">new</span> File(outputFile.parent, fileName) } } } } }}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box; ">// 声明一个方法,获取打包时间</span>def releaseTime() { <span class="hljs-constant" style="box-sizing: border-box; ">return</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">new</span> Date().<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box; ">format</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"yyyy-MM-dd"</span>, TimeZone.getTimeZone(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box; ">"UTC"</span>))}</code>
0 0
- android gradle 多渠道打包分发
- android Gradle多渠道打包
- Gradle Android 多渠道打包
- android gradle 多渠道打包
- Android Gradle多渠道打包
- ANDROID --GRADLE多渠道打包
- Android---Gradle 多渠道打包
- Android Studio Gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio--Gradle多渠道打包
- android studion Gradle多渠道打包
- Android studio gradle 多渠道打包
- Android Studio Gradle多渠道打包
- Android 使用 Gradle 多渠道打包
- Android studio gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio Gradle多渠道打包
- Android 使用 Gradle 多渠道打包
- 【虫师--系列】LR有的JMeter也有之三“集合点”
- 任性走通在线教育之路——如鹏创业一年总结
- .Net 环境下,有母版网页中的控件遍历
- iOS UIWebView
- 【虫师--系列】一种简单的数据库性能测试方法
- android gradle 多渠道打包分发
- 不包含特定字符串的匹配
- nyoj465 最大值和最小值
- java.lang.UnsupportedOperationException异常解决办法
- ArcGIS Server Open data output support GeoJSON
- 【虫师--系列】JMeter 聚合报告之 90% Line 参数说明
- iOS开发之UITableviewCell实现两个圆角
- Android中的录音与音频合成
- java好书下载