Android Studio详细使用教程
感谢作者stormzhang的分享Android Studio系列教程一--下载与安装:http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1/Android Studio系列教程二--基本设置与运行:http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/Android Studio系列教程三--快捷键:
http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/Android Studio系列教程四--Gradle基础:
http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/Android Studio系列教程五--Gradle命令详解与导入第三方包:
http://stormzhang.com/devtools/2015/01/05/android-studio-tutorial5/Android Studio系列教程六--Gradle多渠道打包:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/
<h2 style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em; background-color: rgb(243, 243, 243);">Android Studio系列教程一--下载与安装</h2><div><br></div><div><h2 id="section" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em; background-color: rgb(243, 243, 243);">背景</h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢?</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">虽然推出了很久,但是国内貌似普及的程度并不高,鉴于很多朋友求studio的详细教程,那么今天我就手把手教大家下载、安装、使用,Studio之路从这里开始。</p><h2 id="android-studio-vs-eclipse" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em; background-color: rgb(243, 243, 243);">Android Studio VS Eclipse</h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">相信目前国内用Eclipse的还是大多数,那么首先就来说一下Studio的一些优点,比较才能更有说服力,才能说明为什么我们要从Eclipse迁移到Studio。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">1、Google推出的</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">毫无疑问,这个是它的最大优势,Android Stuido是Google推出,专门为Android“量身订做”的,是Google大力支持的一款基于IntelliJ IDEA改造的IDE,这个应该能说明为什么它是Android的未来</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">2、速度更快</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Eclipse的启动速度、响应速度、内存占用一直被诟病,相信大家这点应该深有体会,而且经常遇到卡死状态。Studio不管哪一个方面都全面领先Eclipse</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">3、UI更漂亮</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">I/O上演示的那款黑色主题真是太棒了,极客范,Stuido自带的Darcula主题的炫酷黑界面实在是高大上,相比而言Eclipse下的黑色主题太low了</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">4、更加智能</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">提示补全对于开发来说意义重大, Studio则更加智能,智能保存,从此再也不用每次都 Ctrl + S了。熟悉Studio以后效率会大大提升。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">5、整合了Gradle构建工具</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Gradle是一个新的构建工具,自Studio亮相之处就支持Gradle,可以说Gradle集合了Ant和Maven的优点,不管是配置、编译、打包都非常棒。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">6、强大的UI编辑器</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Android Studio的编辑器非常的智能,除了吸收Eclipse+ADT的优点之外,还自带了多设备的实时预览,相对这对Android开发者来说简直是神器啊。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">7、内置终端</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Studio内置终端,这对于习惯命令行操作的人来说简直是福音啊,再也不用来回切换了,一个Studio全部搞定。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">8、更完善的插件系统</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Studio下支持各种插件,如Git、Markdown、Gradle等等,你想要什么插件,直接搜索下载。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">9、完美整合版本控制系统</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">安装的时候就自带了如GitHub, Git, SVN等流行的版本控制系统,可以直接check out你的项目。</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">大家看完以上是不是很动心呢,优点是很多,但是大家学习的时候会遇到很多问题,如Studio和Eclipse的目录结构、快捷键等等完全不一样,需要适应一段时间,Gradle同样增加了学习成本,虽然Google的更新速度已经相当快了,但是目前最新的是1.0RC版本,仍未推出正式版,说明可能会有一些小问题等,Studio官方解释暂未支持NDK,所以如果你的项目用到了NDK最好也不要使用Studio。</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">但是相信Google会越来越完善的,学习成本与适应阶段是我们做技术一直要保持的心态,一旦上手相信你要离不开它了。</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">最后这里先上一张我本地Studio的截图:</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_preview.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><h2 id="section-1" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em; background-color: rgb(243, 243, 243);">准备</h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">因为Google Android的一些官方网站在国内访问有限制,原因你懂得。所以在开始下载安装Studio之前,你需要自备梯子,关于如何翻墙有很多种方法,这里就不做过多介绍,私以为作为一个Android开发者,不懂翻墙基本没法做下去。所以这点投入是值得的,这里推荐大家直接购买VPN吧,因为我曾经折腾了很多翻墙的玩意,要么不稳定,要么速度慢,后来想通了,凡是花点钱能解决的问题都不是问题,这里推荐<a href="https://www.ytvpn.com/?r=a9b90a505050781a" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">云梯VPN</a>,价格算是很便宜的了,别再问我速度、稳定性如何,我已经使用并续费快两年了。(通过这个链接购买的,你的账户可以优惠10元)</p><h2 id="section-2" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em; background-color: rgb(243, 243, 243);">下载</h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">官方下载有两个地方,均需要翻墙。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;"><a href="http://developer.android.com/sdk/installing/studio.html" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Android Developer官网</a></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Android开发者官网的网站,可直接下载,但是这个网站貌似只更新Beta和正式版,目前只更新到Beta 0.8.14版本。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;"><a href="http://tools.android.com/download/studio/canary" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Android Tools Project Site</a></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">Android开发工具的网站,上面链接是Studio的canary渠道,列出了Studio各种实时预览版等,目前最新的是1.0RC版本。</p><h2 id="helloworld" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em; background-color: rgb(243, 243, 243);">创建HelloWorld项目</h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">至于安装就没什么可说的了,点击直接运行了。这里我以Mac系统的1.0RC版本为例,来创建第一个HelloWorld项目。其他平台基本上差不多,在这之前假设你已经配置好了JDK和Android SDK环境,并且你是第一次安装Studio。</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">1、首先运行时的欢迎画面</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_splash.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">2、之后第一次的话会进入到设置向导页</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">点击Next进入选择设置类型向导页</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">这里有两个选项“Standard”和“Custom”,即标准和自定义,如果你本机的Android SDK没有配置过,那么建议直接选择“Standard”, 点击“Finish”按钮</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">因为我本地已经下载SDK并配置好了环境变量,所以我选择”Custom”,然后到下一步:</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard3.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">这一步选择你本地SDK的位置,可以看到有个2.25GB的SDK要下载,那是因为Studio 1.0默认要下载5.0的SDK以及一些Tools之类的,然后点击”Finish”按钮</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">(PS: 这个选择并下载2.25G的组件是studio的一个bug,评论里有人提醒,感谢这位同学。如果网速不行想跳过这步的可以在bin目录的idea.properties增加一行:disable.android.first.run=true就行了,mac平台的右键安装包->Show Package Contents 就找到bin目录了。)</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">3、下载依赖组件</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard4.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">之后便到下载组件页面,这个过程需要翻墙,而且依赖你的网速,时间有点久,大家耐心等待…</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard5.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">下载完成后点击”Finish”按钮</p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><li style="line-height: 20px;">4、新建项目</li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard6.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">在这个页面我们可以新建项目,也可以导入项目本地或者GitHub上的项目等,左边可以查看最近打开的项目等,这里我直接新建项目</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">然后到如下界面</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard7.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">我们填上项目名称和报名以及项目路径等然后”Next”</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard8.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">这个页面支持你适配TV、Wear、Glass等,我们只选择第一项就ok,选好最小SDK然后”Next”</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard9.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">这个页面选择一个Activity模板,和Eclipse很像,我们直接选择一个Blank Activity好了</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard10.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">点击”Finish”后等一会出来如下一个进度条,很多人容易卡在这里,这里需要下载Gradle,只第一次会下载,有点慢,需要翻墙,大家也耐心等待下</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_wizard11.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">下载成功后变看到如下完整的项目界面</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/setup.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">至此一个简单的Studio项目就完成了,图片中也可以看到默认是一个白色主题,不够酷炫?Studio默认自带一款高大上的黑色主题,只需要简单修改下就OK。</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">到Preference -> Appearance下更改主题到Darcula</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/studio_theme.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">之后我们再来看一下更改后的主题</p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);"><img src="http://stormzhang.com/image/setup2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px; background-color: rgb(243, 243, 243);">很酷炫有木有?至此第一期的Studio简单介绍就到这里,后面会介绍目录结构、快捷键、导入项目、集成GitHub、Gradle等等,敬请期待。</p></div><p></p> 本帖最后由 破晓 于 2016-1-25 18:09 编辑 <br /><br /><b><font style="background-color: white;">Android Studio系列教程二--基本设置与运行</font></b><div align="left"><span style="background-color: white;"><br></span></div><div align="left"><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">上面一篇博客,介绍了Studio的优点与1.0 RC的安装与上手体验,没想到google的更新速度这么快,已经出了RC 2版本,主要是修复一些bug。那么今天就带大家预览下Stduio的界面与基本功能。</span></p><h2 id="section" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">项目结构</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">当我们新建一个项目的目录结构默认是这样的</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/summary1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">可以看到和Eclipse的目录结构有很大区别,Studio一个窗口只能有一个项目,而Eclipse则可以同时存在很多项目,如果你看着不习惯可以点击左上角进行切换</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/summary2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">切换到“project”模式下的目录结构是这样的,我个人也更习惯这种格式</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/summary3.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">和Eclipse的区别有如下:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">1、Studio中有Project和Module的概念,前面说到Studio中一个窗口只能有一个项目,即Project,代表一个workspace,但是一个Project可以包含多个Module,比如你项目引用的Android Library, Java Library等,这些都可以看做是一个Module;</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">2、上述目录中将java代码和资源文件(图片、布局文件等)全部归结为src,在src目录下有一个main的分组,同时划分出java和res两个文件夹,java文件夹则相当于Eclipse下的src文件夹,res目录结构则一样.</span></p></li></ul><h2 id="section-1" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">偏好设置</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">进入后你也许发现字体大小或者样式不符合你的习惯,比如我是觉得代码太小看起来伤眼,Darcular主题默认的字体是12,我个人更习惯14的字体大小。没关系,到 <strong>Preferences</strong> (设置)页面搜索 <strong>Font</strong>找到 <strong>Colors&Fonts</strong> 下的 <strong>Font</strong> 选项,我们可以看到默认字体大小是12,但是无法修改,需要先保存才可以修改,点击 <strong>Save as</strong> 输入一个名字,比如 <strong>MyDarcular</strong>,然后就可以修改字体大小和字体样式了.</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/preference_font1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">点击确定之后再回到页面发现字体是变大了,但是Studio默认的一些字体大小如侧边栏等确没有变化,看起来很不协调,如下图</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/preference_font2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">强迫症的你肯定无法忍受,没关系,这里也同样可以设置,到 <strong>Preferences</strong> -> <strong>Appearance</strong> 修改如图所示就ok,这里同样不仅可以更改字体大小,也可以选择不同的字体,点击OK,这次页面字体就完全对你胃口了。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/preference_font3.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">调整之后再看下效果</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/preference_font4.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><h2 id="section-2" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">运行</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">接下来运行程序,运行和 <strong>Eclipse</strong> 中比较像,点击菜单栏的绿色箭头直接运行</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/menu1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><strong>Studio</strong> 默认安装会启动模拟器,如果想让安装到真机上可以配置一下。在下拉菜单中选择 <strong>Edit Configurations</strong> 选择提示或者是USB设备。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/menu2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/menu3.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><h2 id="section-3" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">常用功能</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">在Studio菜单栏的右边有这样几个常用的功能,如图分别是 <strong>Gradle同步</strong>、<strong>AVD Manager</strong>、<strong>SDK Manager</strong>、<strong>DDMS</strong></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/menu4.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><strong>Gradle同步</strong> 在你项目运行或者更改Gradle配置的时候都要点击下这个按钮,会下载相应的依赖</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><strong>AVD Manager</strong> 模拟器管理</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><strong>SDK Manager</strong> 就是管理你的SDK版本</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><strong>DDMS</strong> 即 Dalvik Debug Monitor Service,Dalvik调试监控服务。</span></p><h2 id="section-4" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">创建模拟器</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">建议在创建模拟器前把 <strong>SDK Manager</strong> 中的 <strong>Tools</strong>、<strong>Extras</strong> 都更新到最新。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">点击 <strong>AVD Manager</strong> 按钮</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/avd1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">点击图中的创建按钮</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/avd2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">选择一个设备,这里我选择 Nexus 5,然后Next</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/avd3.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这里选择一个系统版本,这里以5.0为例,然后Next</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/avd4.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">由于各位的屏幕尺寸不一样,建议这里Scale一栏选择Auto,然后点击Finish接着可以看到我们已经创建好一个5.0的模拟器了</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/avd5.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这次我们再运行,选择模拟器启动看下最终效果(模拟器的启动很慢,大家耐心等待)</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/select_avd.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/avd6.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p></div> <h2 style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Android Studio系列教程三--快捷键</span></h2><div><span style="background-color: white;"><br></span></div><div><h2 id="android-studio-10" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Android Studio 1.0正式版发布啦</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">今天是个大日子,Android Studio 1.0 终于发布了正式版, 这对于Android开发者来说简直是喜大普奔的大消息啊,那么就果断来下载使用。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/studio1.0.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">官方下载地址: <a href="http://developer.android.com/sdk/index.html" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">http://developer.android.com/sdk/index.html</a></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">如果你之前已经使用其他版本的Studio,那么直接覆盖就好了,如果是第一次使用,那么参照<a href="http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1/" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Android Studio系列教程一</a>进行安装配置。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">于此同时一起更新的还有SDK Tools等,打开SDK Manager进行更新就OK。如果之前有在使用RC版本的Studio,更新覆盖之后应该会出错,那是因为Stuido 1.0默认使用1.0的Gradle插件,所以只需到项目根目录的 <strong>build.gradle</strong> 更新成如下代码然后同步下就OK了</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/update_gradle.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><h2 id="section" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">快捷键</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">对于很多Eclipse转过来的同学,不适应的最主要就是快捷键部分了,Studio默认的快捷键和Eclipse差别很大,但是Studio强大的地方在于通过设置你可以一直沿用Eclipse风格的快捷键,这样对于那些Eclipse过渡来的同学省了很多学习成本。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><strong>Preferences</strong> -> <strong>Keymap</strong> 然后就可以选择你想要的快捷键,这里不止可以选择Eclipse,还可以选择 <strong>Emacs</strong>、<strong>Net Beans</strong> 等编辑器的快捷键</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/keymap.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">对于新手们或者对Eclipse没有好感的同学们,肯定想学习默认的Studio快捷键,下面整理了下常用的一些快捷键,更多的快捷键还需要大家自己去习惯适应。(我自己选择的是Mac OS X 10.5+)</span></p><table style="max-width: 100%; border-spacing: 0px; margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><thead><tr><th style="border: 1px solid rgb(221, 221, 221); padding: 5px 10px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="background-color: white;">Action</span></th><th style="border: 1px solid rgb(221, 221, 221); padding: 5px 10px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="background-color: white;">Mac OSX</span></th><th style="border: 1px solid rgb(221, 221, 221); padding: 5px 10px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="background-color: white;">Win/Linux</span></th></tr></thead><tbody><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">注释代码(//)</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + /</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + /</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">注释代码(/**/)</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Option + /</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Shift + /</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">格式化代码</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Option + L</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Alt + L</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">清除无效包引用</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Option + Control + O</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Alt + Ctrl + O</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">查找</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + F</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + F</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">查找+替换</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + R</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + R</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">上下移动代码</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Option + Shift + Up/Down</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Alt + Shift + Up/Down</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">删除行</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Delete</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Y</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">扩大缩小选中范围</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Option + Up/Down</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + W/Ctrl + Shift + W</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">快捷生成结构体</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Option + T</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Alt + T</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">快捷覆写方法</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + O</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + O</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">快捷定位到行首/尾</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Left/Right</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Left/Right</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">折叠展开代码块</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Plus,Minus</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Plus/Minus</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">折叠展开全部代码块</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Shift + Plus,Minus</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Shift + Plus,Minus</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">文件方法结构</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + F12</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + F12</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">查找调用的位置</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Option + H</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Alt + H</span></td></tr><tr><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">大小写转换</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Cmd + Shift + U</span></td><td style="border-color: rgb(221, 221, 221); padding: 5px 10px;"><span style="background-color: white;">Ctrl + Shift + U</span></td></tr></tbody></table><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><strong style="background-color: white;">(PS: 以上快捷键没有在win平台尝试确认,欢迎反馈错误与补充)</strong></p><h2 id="section-1" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">自动导包</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">最后再介绍一个最有用的设置,我们只有每次引用一些类的时候必须要导包,而Studio可以通过设置自动导包,简直太实用了.</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">到 <strong>Preferences</strong> -> <strong>Editor</strong> -> <strong>Auto Import</strong> -> <strong>Java</strong> 把以下选项勾上就OK了</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/auto_import.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">从此世界清静了。。。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">至此Android Studio的基本使用相信大家都已经会了,从下一系列开始介绍Gradle语法以及基本配置与多渠道打包等,敬请期待!</span></p></div><p></p> <h2 style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Android Studio系列教程四--Gradle基础</span></h2><div><span style="background-color: white;"><br></span></div><div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴们直接跟我一步步来学习吧。</span></p><h2 id="gradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">什么是Gradle?</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。</span></p><h2 id="gradle-1" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">安装Gradle</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">在<a href="http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1/" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Android Studio系列教程一–下载与安装</a>中新建项目成功后会下载Gradle,貌似这个过程不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。那么下载的Gradle到什么地方呢?</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">Mac上会默认下载到 **/Users/<用户名>/.gradle/wrapper/dists** 目录</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">Win平台会默认下载到 <strong>C:\Documents and Settings<用户名>.gradle\wrapper\dists</strong> 目录</span></p></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">你会看到这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,但是又不想翻墙的话,可以自己手动到<a href="http://www.gradle.org/downloads" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Gradle官网</a>下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下,不过还是建议让它直接下载的好。</span></p><h2 id="gradle-" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Gradle 基本概念</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">下面就以我的开源项目 <a href="https://github.com/stormzhang/9GAG" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;"><strong>9GAG</strong></a> 来详细讲解下和Gradle相关的知识, 和Gradle相关的几个文件一般有如下几个:</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/gradle1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">红色标记部分从上到下咱们来一步步分析:</span></p><h4 id="gagappbuildgradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.2em;"><span style="background-color: white;">1. 9GAG/app/build.gradle</span></h4><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这个文件是app文件夹下这个Module的gradle配置文件,也可以算是整个项目最主要的gradle配置文件,我们来看下这个文件的内容:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">声明是</span><span class="no" style="color: rgb(203, 75, 22);">Android</span><span class="err">程序</span>
<span class="n">apply</span> <span class="ss" style="color: rgb(42, 161, 152);">plugin</span><span class="p">:</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.android.application'</span>
<span class="n">android</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">编译</span><span class="no" style="color: rgb(203, 75, 22);">SDK</span><span class="err">的版本</span>
<span class="n">compileSdkVersion</span> <span class="mi" style="color: rgb(42, 161, 152);">21</span>
<span class="o" style="color: rgb(133, 153, 0);">//</span> <span class="n">build</span> <span class="n">tools</span><span class="err">的版本</span>
<span class="n">buildToolsVersion</span> <span class="s2" style="color: rgb(42, 161, 152);">"21.1.1"</span>
<span class="n">defaultConfig</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">应用的包名</span>
<span class="n">applicationId</span> <span class="s2" style="color: rgb(42, 161, 152);">"me.storm.ninegag"</span>
<span class="n">minSdkVersion</span> <span class="mi" style="color: rgb(42, 161, 152);">14</span>
<span class="n">targetSdkVersion</span> <span class="mi" style="color: rgb(42, 161, 152);">21</span>
<span class="n">versionCode</span> <span class="mi" style="color: rgb(42, 161, 152);">1</span>
<span class="n">versionName</span> <span class="s2" style="color: rgb(42, 161, 152);">"1.0.0"</span>
<span class="p">}</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="n">java</span><span class="err">版本</span>
<span class="n">compileOptions</span> <span class="p">{</span>
<span class="n">sourceCompatibility</span> <span class="no" style="color: rgb(203, 75, 22);">JavaVersion</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">VERSION_1_7</span>
<span class="n">targetCompatibility</span> <span class="no" style="color: rgb(203, 75, 22);">JavaVersion</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">VERSION_1_7</span>
<span class="p">}</span>
<span class="n">buildTypes</span> <span class="p">{</span>
<span class="n">debug</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="n">debug</span><span class="err">模式</span>
<span class="p">}</span>
<span class="n">release</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">是否进行混淆</span>
<span class="n">minifyEnabled</span> <span class="kp" style="color: rgb(133, 153, 0);">false</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">混淆文件的位置</span>
<span class="n">proguardFiles</span> <span class="n">getDefaultProguardFile</span><span class="p">(</span><span class="s1" style="color: rgb(42, 161, 152);">'proguard-android.txt'</span><span class="p">),</span> <span class="s1" style="color: rgb(42, 161, 152);">'proguard-rules.txt'</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">移除</span><span class="n">lint</span><span class="err">检查的</span><span class="n">error</span>
<span class="n">lintOptions</span> <span class="p">{</span>
<span class="n">abortOnError</span> <span class="kp" style="color: rgb(133, 153, 0);">false</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">dependencies</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">编译</span><span class="n">libs</span><span class="err">目录下的所有</span><span class="n">jar</span><span class="err">包</span>
<span class="n">compile</span> <span class="n">fileTree</span><span class="p">(</span><span class="ss" style="color: rgb(42, 161, 152);">dir</span><span class="p">:</span> <span class="s1" style="color: rgb(42, 161, 152);">'libs'</span><span class="p">,</span> <span class="kp" style="color: rgb(133, 153, 0);">include</span><span class="p">:</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="s1" style="color: rgb(42, 161, 152);">'*.jar'</span><span class="o" style="color: rgb(133, 153, 0);">]</span><span class="p">)</span>
<span class="n">compile</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.android.support:support-v4:21.0.2'</span>
<span class="n">compile</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.etsy.android.grid:library:1.0.5'</span>
<span class="n">compile</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.alexvasilkov:foldable-layout:1.0.1'</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">编译</span><span class="n">extras</span><span class="err">目录下的</span><span class="no" style="color: rgb(203, 75, 22);">ShimmerAndroid</span><span class="err">模块</span>
<span class="n">compile</span> <span class="n">project</span><span class="p">(</span><span class="s1" style="color: rgb(42, 161, 152);">':extras:ShimmerAndroid'</span><span class="p">)</span>
<span class="p">}</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这里需要说明几点:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">文件开头apply plugin是最新gradle版本的写法,以前的写法是apply plugin: ‘android’, 如果还是以前的写法,请改正过来。</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 <strong>SDK Manager</strong> 去下载对应版本。</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">applicationId代表应用的包名,也是最新的写法,这里就不在多说了。</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">android 5.0开始默认安装jdk1.7才能编译,但是由于mac系统自带jdk的版本是1.6,所以需要手动下载jdk1.7并配置下,具体可以见我这篇博客<a href="http://stormzhang.com/android/2014/06/27/manage-java-on-macosx/" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Mac下安装和管理Java</a></span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">minifyEnabled也是最新的语法,很早之前是runProguard,这个也需要更新下。</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在 **<sdk目录>/tools/proguard/proguard-android.txt** , 后一部分是我们项目里的自定义的混淆文件,目录就在 **app/proguard-rules.txt** , 如果你用Studio 1.0创建的新项目默认生成的文件名是 **proguard-rules.pro** , 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则,由于是开源项目,9GAG里并未进行混淆,具体混淆的语法也不是本篇博客讨论的范围。最终混淆的结果是这两部分文件共同作用的。</sdk目录></span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">compile project(‘:extras:ShimmerAndroid’)这一行是因为9GAG中存在其他Module,不知道Module的概念可以看下这篇博客<a href="http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Android Studio系列教程二–基本设置与运行</a>, 总之你可以理解成Android Library,由于Gradle的普及以及远程仓库的完善,这种依赖渐渐的会变得非常不常见,但是你需要知道有这种依赖的。</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">以上文件里的内容只是基本配置,其实还有很多自定义部分,如自动打包debug,release,beta等环境,签名,多渠道打包等,后续会单独拿出来讲解。</span></p></li></ul><h4 id="gagextrasshimmerandroidbuildgradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.2em;"><span style="background-color: white;">2. 9GAG/extras/ShimmerAndroid/build.gradle</span></h4><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是 <strong>apply plugin: ‘com.android.library’</strong></span></p><h4 id="gaggradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.2em;"><span style="background-color: white;">3. 9GAG/gradle</span></h4><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这个目录下有个 <strong>wrapper</strong> 文件夹,里面可以看到有两个文件,我们主要看下 <strong>gradle-wrapper.properties</strong> 这个文件的内容:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="c1" style="color: rgb(88, 110, 117);">#Thu Dec 18 16:02:24 CST 2014</span>
<span class="n">distributionBase</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="no" style="color: rgb(203, 75, 22);">GRADLE_USER_HOME</span>
<span class="n">distributionPath</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="n">wrapper</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">dists</span>
<span class="n">zipStoreBase</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="no" style="color: rgb(203, 75, 22);">GRADLE_USER_HOME</span>
<span class="n">zipStorePath</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="n">wrapper</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">dists</span>
<span class="n">distributionUrl</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="n">https</span><span class="p">\</span><span class="ss" style="color: rgb(42, 161, 152);">:/</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">services</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">gradle</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">org</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">distributions</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">gradle</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">1</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">all</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">zip</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。</span></p><h2 id="gagbuildgradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">4. 9GAG/build.gradle</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这个文件是整个项目的gradle基础配置文件,我们来看看这里面的内容</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="no" style="color: rgb(203, 75, 22);">Top</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">level</span> <span class="n">build</span> <span class="n">file</span> <span class="n">where</span> <span class="n">you</span> <span class="n">can</span> <span class="n">add</span> <span class="n">configuration</span> <span class="n">options</span> <span class="n">common</span> <span class="n">to</span> <span class="n">all</span> <span class="nb" style="color: rgb(181, 137, 0);">sub</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">projects</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">modules</span><span class="o" style="color: rgb(133, 153, 0);">.</span>
<span class="n">buildscript</span> <span class="p">{</span>
<span class="n">repositories</span> <span class="p">{</span>
<span class="n">jcenter</span><span class="p">()</span>
<span class="p">}</span>
<span class="n">dependencies</span> <span class="p">{</span>
<span class="n">classpath</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.android.tools.build:gradle:1.0.0'</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">allprojects</span> <span class="p">{</span>
<span class="n">repositories</span> <span class="p">{</span>
<span class="n">jcenter</span><span class="p">()</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了android gradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本。</span></p><h2 id="gagsettingsgradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">5. 9GAG/settings.gradle</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们来看看9GAG该文件的内容:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="kp" style="color: rgb(133, 153, 0);">include</span> <span class="s1" style="color: rgb(42, 161, 152);">':app'</span><span class="p">,</span> <span class="s1" style="color: rgb(42, 161, 152);">':extras:ShimmerAndroid'</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">文件中的 <strong>app</strong>, <strong>extras:ShimmerAndroid</strong> 都是module,如果还有其他module都需要按照如上格式加进去。</span></p><h2 id="section" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">总结</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">关于gradle的基础知识就介绍到这里,接下来会介绍一种我常用的快速方便的编译查看第三方开源项目的方法,如何导入Android Studio,Gradle常用基本命令,多渠道打包配置等。有疑问或者发现错误欢迎大家直接博客留言。</span></p></div><p></p> <h2 style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Android Studio系列教程五--Gradle命令详解与导入第三方包</span></h2><div><span style="background-color: white;"><br></span></div><div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看、编译并导入第三方开源项目的方法。</span></p><h2 id="sublime--terminal" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Sublime + Terminal编译并查看源码</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">首先来给大家介绍一种简便并且个人最喜欢的一种办法。很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim,sublime等,vim不是很熟练,所以个人一种都习惯用sublime来查看并阅读源码(实际开发还是Android Studio、Eclipse等IDE更有效率);至于查看运行效果首先得需要apk,对于一些开源项目已提供apk下载,那就好办,直接安装到手机即可。 而对于一些没有提供apk下载的,则需要自己手动编译打包。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">下面以<a href="https://github.com/stormzhang/9GAG" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">9GAG</a>为例来讲解下命令行Gradle编译的过程。</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">1、切换到9GAG项目的根目录,执行 <strong>./gradlew -v</strong> 来查看下项目所用的Gradle版本</span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">如果你是第一次执行会去下载Gradle,这个过程如果不翻墙非常慢,建议翻墙</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/gradle_download1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">紧接着下载成功会看到如下信息:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="o" style="color: rgb(133, 153, 0);">------------------------------------------------------------</span>
<span class="no" style="color: rgb(203, 75, 22);">Gradle</span> <span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">1</span>
<span class="o" style="color: rgb(133, 153, 0);">------------------------------------------------------------</span>
<span class="no" style="color: rgb(203, 75, 22);">Build</span> <span class="ss" style="color: rgb(42, 161, 152);">time</span><span class="p">:</span> <span class="mi" style="color: rgb(42, 161, 152);">2014</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="mi" style="color: rgb(42, 161, 152);">11</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="mi" style="color: rgb(42, 161, 152);">24</span> <span class="mi" style="color: rgb(42, 161, 152);">09</span><span class="p">:</span><span class="mi" style="color: rgb(42, 161, 152);">45</span><span class="p">:</span><span class="mi" style="color: rgb(42, 161, 152);">35</span> <span class="no" style="color: rgb(203, 75, 22);">UTC</span>
<span class="no" style="color: rgb(203, 75, 22);">Build</span> <span class="ss" style="color: rgb(42, 161, 152);">number</span><span class="p">:</span> <span class="n">none</span>
<span class="ss" style="color: rgb(42, 161, 152);">Revision</span><span class="p">:</span> <span class="mi" style="color: rgb(42, 161, 152);">6</span><span class="n">fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a</span>
<span class="ss" style="color: rgb(42, 161, 152);">Groovy</span><span class="p">:</span> <span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">3</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">6</span>
<span class="ss" style="color: rgb(42, 161, 152);">Ant</span><span class="p">:</span> <span class="no" style="color: rgb(203, 75, 22);">Apache</span> <span class="no" style="color: rgb(203, 75, 22);">Ant</span><span class="p">(</span><span class="no" style="color: rgb(203, 75, 22);">TM</span><span class="p">)</span> <span class="n">version</span> <span class="mi" style="color: rgb(42, 161, 152);">1</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">9</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">3</span> <span class="n">compiled</span> <span class="n">on</span> <span class="no" style="color: rgb(203, 75, 22);">December</span> <span class="mi" style="color: rgb(42, 161, 152);">23</span> <span class="mi" style="color: rgb(42, 161, 152);">2013</span>
<span class="ss" style="color: rgb(42, 161, 152);">JVM</span><span class="p">:</span> <span class="mi" style="color: rgb(42, 161, 152);">1</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">7</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mo" style="color: rgb(42, 161, 152);">0_60</span> <span class="p">(</span><span class="no" style="color: rgb(203, 75, 22);">Oracle</span> <span class="no" style="color: rgb(203, 75, 22);">Corporation</span> <span class="mi" style="color: rgb(42, 161, 152);">24</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">60</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">b09</span><span class="p">)</span>
<span class="ss" style="color: rgb(42, 161, 152);">OS</span><span class="p">:</span> <span class="no" style="color: rgb(203, 75, 22);">Mac</span> <span class="no" style="color: rgb(203, 75, 22);">OS</span> <span class="n">X</span> <span class="mi" style="color: rgb(42, 161, 152);">10</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">9</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">5</span> <span class="n">x86_64</span></code></pre></div><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">2、接着执行 <strong>./gradlew clean</strong></span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">执行这个命令会去下载Gradle的一些依赖,下载成功并编译通过时会看到如下信息:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="ss" style="color: rgb(42, 161, 152);">:app:clean</span> <span class="no" style="color: rgb(203, 75, 22);">UP</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="no" style="color: rgb(203, 75, 22);">TO</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="no" style="color: rgb(203, 75, 22);">DATE</span>
<span class="ss" style="color: rgb(42, 161, 152);">:extras:ShimmerAndroid:clean</span> <span class="no" style="color: rgb(203, 75, 22);">UP</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="no" style="color: rgb(203, 75, 22);">TO</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="no" style="color: rgb(203, 75, 22);">DATE</span>
<span class="no" style="color: rgb(203, 75, 22);">BUILD</span> <span class="no" style="color: rgb(203, 75, 22);">SUCCESSFUL</span></code></pre></div><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">3、最后执行 <strong>./gradlew build</strong></span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="no" style="color: rgb(203, 75, 22);">BUILD</span> <span class="no" style="color: rgb(203, 75, 22);">SUCCESSFUL</span>
<span class="no" style="color: rgb(203, 75, 22);">Total</span> <span class="ss" style="color: rgb(42, 161, 152);">time</span><span class="p">:</span> <span class="mi" style="color: rgb(42, 161, 152);">31</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">456</span> <span class="n">secs</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">紧接着在 <strong>9GAG/app/build/outputs/apk</strong> 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签名的。然后就可以直接安装apk查看运行效果了。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">以上是我个人习惯的一种阅读第三方源码的习惯,关于上面提到的一些gradle命令大家应该还不理解,后面会一一进行说明的。</span></p><h2 id="android-studio" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">导入Android Studio</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">但是如果你还是想导入Android Studio的话,下面就来简单介绍下导入Studio的方法以及一些注意事项。</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">1、选择File->Import Project, 选择本地9GAG项目的目录</span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/studio_import1.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">2、第一次依然会下载Gradle,其实自己在命令行已经下载过了,但是这次依然还要下载一次(依然要翻墙),可能是个bug</span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/gradle_download2.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">3、导入之后你需要注意以下几个地方</span></li></ul><ol style="margin-bottom: 1em; margin-left: 1.9em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">每个Module下的 <strong>build.gradle</strong> 下的buildToolsVersion,即<strong>9GAG/app/build.gradle</strong> 和 <strong>9GAG/extras/ShimmerAndroid/build.gradle</strong> , 可以打开 <strong>SDK Manager</strong> 查看本地你安装的 <strong>SDK Build-tools</strong>, 如下图,如果相应版本没有安装请先下载。</span></li></ol><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;"><img src="http://stormzhang.com/image/build-tools.png" style="max-width: 100%; height: auto; vertical-align: middle; border: 0px;"></span></p><ol style="margin-bottom: 1em; margin-left: 1.9em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">项目根目录下的 <strong>build.gradle</strong> 下gradle插件的版本,如 <strong>9GAG/build.gradle</strong> 的内容:</span></p><p style="margin-bottom: 1em;"><span style="background-color: white;">classpath ‘com.android.tools.build:gradle:1.0.0’</span></p></li></ol><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">Android Studio 1.0必须指定gradle插件1.0的版本</span></p><ol style="margin-bottom: 1em; margin-left: 1.9em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">Gradle Wrapper的版本,在 <strong>9GAG/gradle/wrapper/gralde-wrapper.properties</strong> 文件里有如下内容:</span></li></ol><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="c1" style="color: rgb(88, 110, 117);">#Thu Dec 18 16:02:24 CST 2014</span>
<span class="n">distributionBase</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="no" style="color: rgb(203, 75, 22);">GRADLE_USER_HOME</span>
<span class="n">distributionPath</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="n">wrapper</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">dists</span>
<span class="n">zipStoreBase</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="no" style="color: rgb(203, 75, 22);">GRADLE_USER_HOME</span>
<span class="n">zipStorePath</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="n">wrapper</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">dists</span>
<span class="n">distributionUrl</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="n">https</span><span class="p">\</span><span class="ss" style="color: rgb(42, 161, 152);">:/</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">services</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">gradle</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">org</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">distributions</span><span class="o" style="color: rgb(133, 153, 0);">/</span><span class="n">gradle</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">2</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mi" style="color: rgb(42, 161, 152);">1</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">all</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">zip</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">上述内容制定了gradle的版本使用2.2.1,在Studio中如果你手动改了gradle插件的版本会有提示要不要更新Gradle Wrapper的版本。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">如果以上几个地方确定版本是ok的,那么导入Android Studio应该没有问题,有些老的项目可能gradle版本比较老,仍然在使用一些老的语法,如果编译还通不过参考<a href="http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/" target="_blank" style="color: rgb(255, 102, 153); text-decoration: none;">Android Studio系列教程四–Gradle基础</a>更改成最新的语法。</span></p><h2 id="gradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Gradle常用命令</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">上面大家接触了一些命令如 <strong>./gradlew -v</strong> <strong>./gradlew clean</strong> <strong>./gradlew build</strong>, 这里注意是<strong>./gradlew</strong>, <strong>./</strong>代表当前目录,<strong>gradlew</strong>代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在<strong>9GAG/gradle/wrapper/gralde-wrapper.properties</strong>文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew -v 版本号</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew clean 清除9GAG/app目录下的build文件夹</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew build 检查依赖并编译打包</span></p></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这里注意的是 <strong>./gradlew build</strong> 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 **assemble<build type="" name="">**, 如</build></span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew assembleDebug 编译并打Debug包</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew assembleRelease 编译并打Release的包</span></p></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">除此之外,assemble还可以和productFlavors结合使用,具体在下一篇多渠道打包进一步解释。</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew installRelease Release模式打包并安装</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew uninstallRelease 卸载Release模式包</span></p></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">下一篇来介绍用Gradle进行方便的多渠道打包,以及项目中完整的Gradle配置。有问题或建议欢迎大家直接博客留言。</span></p></div><p></p> <h2 style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">Android Studio系列教程六--Gradle多渠道打包</span></h2><div><span style="background-color: white;"><br></span></div><div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了。</span></p><h2 id="section" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">友盟多渠道打包</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="o" style="color: rgb(133, 153, 0);"><</span><span class="n">meta</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">data</span>
<span class="ss" style="color: rgb(42, 161, 152);">android</span><span class="p">:</span><span class="nb" style="color: rgb(181, 137, 0);">name</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="s2" style="color: rgb(42, 161, 152);">"UMENG_CHANNEL"</span>
<span class="ss" style="color: rgb(42, 161, 152);">android</span><span class="p">:</span><span class="n">value</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="s2" style="color: rgb(42, 161, 152);">"Channel_ID"</span> <span class="sr" style="color: rgb(220, 50, 47);">/></span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">里面的Channel_ID就是渠道标示。我们的目标就是在编译的时候这个值能够自动变化。</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">第一步 在AndroidManifest.xml里配置PlaceHolder</span></li></ul><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="o" style="color: rgb(133, 153, 0);"><</span><span class="n">meta</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="n">data</span>
<span class="ss" style="color: rgb(42, 161, 152);">android</span><span class="p">:</span><span class="nb" style="color: rgb(181, 137, 0);">name</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="s2" style="color: rgb(42, 161, 152);">"UMENG_CHANNEL"</span>
<span class="ss" style="color: rgb(42, 161, 152);">android</span><span class="p">:</span><span class="n">value</span><span class="o" style="color: rgb(133, 153, 0);">=</span><span class="s2" style="color: rgb(42, 161, 152);">"${UMENG_CHANNEL_VALUE}"</span> <span class="sr" style="color: rgb(220, 50, 47);">/></span></code></pre></div><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">第二步 在build.gradle设置productFlavors</span></li></ul><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="n">android</span> <span class="p">{</span>
<span class="n">productFlavors</span> <span class="p">{</span>
<span class="n">xiaomi</span> <span class="p">{</span>
<span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="s2" style="color: rgb(42, 161, 152);">"xiaomi"</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="n">_360</span> <span class="p">{</span>
<span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="s2" style="color: rgb(42, 161, 152);">"_360"</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="n">baidu</span> <span class="p">{</span>
<span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="s2" style="color: rgb(42, 161, 152);">"baidu"</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="n">wandoujia</span> <span class="p">{</span>
<span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="s2" style="color: rgb(42, 161, 152);">"wandoujia"</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">或者批量修改</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="n">android</span> <span class="p">{</span>
<span class="n">productFlavors</span> <span class="p">{</span>
<span class="n">xiaomi</span> <span class="p">{}</span>
<span class="n">_360</span> <span class="p">{}</span>
<span class="n">baidu</span> <span class="p">{}</span>
<span class="n">wandoujia</span> <span class="p">{}</span>
<span class="p">}</span>
<span class="n">productFlavors</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">all</span> <span class="p">{</span>
<span class="n">flavor</span> <span class="o" style="color: rgb(133, 153, 0);">-></span> <span class="n">flavor</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="nb" style="color: rgb(181, 137, 0);">name</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">很简单清晰有没有?直接执行 <strong>./gradlew assembleRelease</strong> , 然后就可以静静的喝杯咖啡等待打包完成吧。</span></p><h2 id="assemblebuild-variantstask" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">assemble结合Build Variants来创建task</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">上一篇博客介绍了 <strong>assemble</strong> 这个命令,会结合 <strong>Build Type</strong> 创建自己的task,如:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew assembleDebug</span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">./gradlew assembleRelease</span></p></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">除此之外 <strong>assemble</strong> 还能和 <strong>Product Flavor</strong> 结合创建新的任务,其实 <strong>assemble</strong> 是和 <strong>Build Variants</strong> 一起结合使用的,而 <strong>Build Variants</strong> = <strong>Build Type</strong> + <strong>Product Flavor</strong> , 举个例子大家就明白了:</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">./gradlew assembleWandoujiaRelease</span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">如果我们只打wandoujia渠道版本,则:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">./gradlew assembleWandoujia</span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">此命令会生成wandoujia渠道的Release和Debug版本</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">同理我想打全部Release版本:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><span style="background-color: white;">./gradlew assembleRelease</span></li></ul><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">这条命令会把Product Flavor下的所有渠道的Release版本都打出来。</span></p><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">总之,<strong>assemble</strong> 命令创建task有如下用法:</span></p><ul style="margin-bottom: 1em; margin-left: 1.3em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">**assemble<variant name="">**: 允许直接构建一个Variant版本,例如assembleFlavor1Debug。</variant></span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">**assemble<build type="" name="">**: 允许构建指定Build Type的所有APK,例如assembleDebug将会构建Flavor1Debug和Flavor2Debug两个Variant版本。</build></span></p></li><li style="line-height: 20px;"><p style="margin-bottom: 1em;"><span style="background-color: white;">**assemble<product flavor="" name="">**: 允许构建指定flavor的所有APK,例如assembleFlavor1将会构建Flavor1Debug和Flavor1Release两个Variant版本。</product></span></p></li></ul><h2 id="gradle" style="margin-top: 10px; margin-bottom: 0.4em; font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; font-weight: 500; line-height: 1.5; color: rgb(51, 51, 51); text-rendering: optimizeLegibility; font-size: 1.6em;"><span style="background-color: white;">完整的gradle脚本</span></h2><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">最后福利大放送,来一份我在项目中使用的完整的gradle文件配置:</span></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><pre style="padding: 10px; font-family: 'Courier New', Courier, monospace; font-size: 15px; color: rgb(147, 161, 161); border-radius: 4px; margin-bottom: 1em; line-height: 20px; word-break: break-all; white-space: pre-wrap; border-width: 1px 1px 1px 0.4em; border-style: solid; border-color: rgb(221, 221, 221); background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><code class="language-ruby" data-lang="ruby" style="font-family: 'Courier New', Courier, monospace; color: inherit; border-radius: 3px; border: 0px; background-color: white;"><span class="n">apply</span> <span class="ss" style="color: rgb(42, 161, 152);">plugin</span><span class="p">:</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.android.application'</span>
<span class="k" style="color: rgb(133, 153, 0);">def</span> <span class="nf" style="color: rgb(38, 139, 210);">releaseTime</span><span class="p">()</span> <span class="p">{</span>
<span class="k" style="color: rgb(133, 153, 0);">return</span> <span class="kp" style="color: rgb(133, 153, 0);">new</span> <span class="no" style="color: rgb(203, 75, 22);">Date</span><span class="p">()</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">format</span><span class="p">(</span><span class="s2" style="color: rgb(42, 161, 152);">"yyyy-MM-dd"</span><span class="p">,</span> <span class="no" style="color: rgb(203, 75, 22);">TimeZone</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">getTimeZone</span><span class="p">(</span><span class="s2" style="color: rgb(42, 161, 152);">"UTC"</span><span class="p">))</span>
<span class="p">}</span>
<span class="n">android</span> <span class="p">{</span>
<span class="n">compileSdkVersion</span> <span class="mi" style="color: rgb(42, 161, 152);">21</span>
<span class="n">buildToolsVersion</span> <span class="s1" style="color: rgb(42, 161, 152);">'21.1.2'</span>
<span class="n">defaultConfig</span> <span class="p">{</span>
<span class="n">applicationId</span> <span class="s2" style="color: rgb(42, 161, 152);">"com.boohee.*"</span>
<span class="n">minSdkVersion</span> <span class="mi" style="color: rgb(42, 161, 152);">14</span>
<span class="n">targetSdkVersion</span> <span class="mi" style="color: rgb(42, 161, 152);">21</span>
<span class="n">versionCode</span> <span class="mi" style="color: rgb(42, 161, 152);">1</span>
<span class="n">versionName</span> <span class="s2" style="color: rgb(42, 161, 152);">"1.0"</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="n">dex</span><span class="err">突破</span><span class="mi" style="color: rgb(42, 161, 152);">65535</span><span class="err">的限制</span>
<span class="n">multiDexEnabled</span> <span class="kp" style="color: rgb(133, 153, 0);">true</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">默认是</span><span class="n">umeng</span><span class="err">的渠道</span>
<span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="s2" style="color: rgb(42, 161, 152);">"umeng"</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="n">lintOptions</span> <span class="p">{</span>
<span class="n">abortOnError</span> <span class="kp" style="color: rgb(133, 153, 0);">false</span>
<span class="p">}</span>
<span class="n">signingConfigs</span> <span class="p">{</span>
<span class="n">debug</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="no" style="color: rgb(203, 75, 22);">No</span> <span class="n">debug</span> <span class="n">config</span>
<span class="p">}</span>
<span class="n">release</span> <span class="p">{</span>
<span class="n">storeFile</span> <span class="n">file</span><span class="p">(</span><span class="s2" style="color: rgb(42, 161, 152);">"../yourapp.keystore"</span><span class="p">)</span>
<span class="n">storePassword</span> <span class="s2" style="color: rgb(42, 161, 152);">"your password"</span>
<span class="n">keyAlias</span> <span class="s2" style="color: rgb(42, 161, 152);">"your alias"</span>
<span class="n">keyPassword</span> <span class="s2" style="color: rgb(42, 161, 152);">"your password"</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">buildTypes</span> <span class="p">{</span>
<span class="n">debug</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">显示</span><span class="no" style="color: rgb(203, 75, 22);">Log</span>
<span class="n">buildConfigField</span> <span class="s2" style="color: rgb(42, 161, 152);">"boolean"</span><span class="p">,</span> <span class="s2" style="color: rgb(42, 161, 152);">"LOG_DEBUG"</span><span class="p">,</span> <span class="s2" style="color: rgb(42, 161, 152);">"true"</span>
<span class="n">versionNameSuffix</span> <span class="s2" style="color: rgb(42, 161, 152);">"-debug"</span>
<span class="n">minifyEnabled</span> <span class="kp" style="color: rgb(133, 153, 0);">false</span>
<span class="n">zipAlignEnabled</span> <span class="kp" style="color: rgb(133, 153, 0);">false</span>
<span class="n">shrinkResources</span> <span class="kp" style="color: rgb(133, 153, 0);">false</span>
<span class="n">signingConfig</span> <span class="n">signingConfigs</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">debug</span>
<span class="p">}</span>
<span class="n">release</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">不显示</span><span class="no" style="color: rgb(203, 75, 22);">Log</span>
<span class="n">buildConfigField</span> <span class="s2" style="color: rgb(42, 161, 152);">"boolean"</span><span class="p">,</span> <span class="s2" style="color: rgb(42, 161, 152);">"LOG_DEBUG"</span><span class="p">,</span> <span class="s2" style="color: rgb(42, 161, 152);">"false"</span>
<span class="n">minifyEnabled</span> <span class="kp" style="color: rgb(133, 153, 0);">true</span>
<span class="n">zipAlignEnabled</span> <span class="kp" style="color: rgb(133, 153, 0);">true</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">移除无用的</span><span class="n">resource</span><span class="err">文件</span>
<span class="n">shrinkResources</span> <span class="kp" style="color: rgb(133, 153, 0);">true</span>
<span class="n">proguardFiles</span> <span class="n">getDefaultProguardFile</span><span class="p">(</span><span class="s1" style="color: rgb(42, 161, 152);">'proguard-android.txt'</span><span class="p">),</span> <span class="s1" style="color: rgb(42, 161, 152);">'proguard-rules.pro'</span>
<span class="n">signingConfig</span> <span class="n">signingConfigs</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">release</span>
<span class="n">applicationVariants</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">all</span> <span class="p">{</span> <span class="n">variant</span> <span class="o" style="color: rgb(133, 153, 0);">-></span>
<span class="n">variant</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">outputs</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">each</span> <span class="p">{</span> <span class="n">output</span> <span class="o" style="color: rgb(133, 153, 0);">-></span>
<span class="k" style="color: rgb(133, 153, 0);">def</span> <span class="nf" style="color: rgb(38, 139, 210);">outputFile</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="n">output</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">outputFile</span>
<span class="k" style="color: rgb(133, 153, 0);">if</span> <span class="p">(</span><span class="n">outputFile</span> <span class="o" style="color: rgb(133, 153, 0);">!=</span> <span class="n">null</span> <span class="o" style="color: rgb(133, 153, 0);">&&</span> <span class="n">outputFile</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">name</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">endsWith</span><span class="p">(</span><span class="s1" style="color: rgb(42, 161, 152);">'.apk'</span><span class="p">))</span> <span class="p">{</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">输出</span><span class="n">apk</span><span class="err">名称为</span><span class="n">boohee_v1</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="mo" style="color: rgb(42, 161, 152);">0_2015</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="mo" style="color: rgb(42, 161, 152);">01</span><span class="o" style="color: rgb(133, 153, 0);">-</span><span class="mi" style="color: rgb(42, 161, 152);">15</span><span class="n">_wandoujia</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">apk</span>
<span class="k" style="color: rgb(133, 153, 0);">def</span> <span class="nf" style="color: rgb(38, 139, 210);">fileName</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="s2" style="color: rgb(42, 161, 152);">"boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors.name}.apk"</span>
<span class="n">output</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">outputFile</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="kp" style="color: rgb(133, 153, 0);">new</span> <span class="no" style="color: rgb(203, 75, 22);">File</span><span class="p">(</span><span class="n">outputFile</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">fileName</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="sr" style="color: rgb(220, 50, 47);">//</span> <span class="err">友盟多渠道打包</span>
<span class="n">productFlavors</span> <span class="p">{</span>
<span class="n">wandoujia</span> <span class="p">{}</span>
<span class="n">_360</span> <span class="p">{}</span>
<span class="n">baidu</span> <span class="p">{}</span>
<span class="n">xiaomi</span> <span class="p">{}</span>
<span class="n">tencent</span> <span class="p">{}</span>
<span class="n">taobao</span> <span class="p">{}</span>
<span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">.</span><span class="o" style="color: rgb(133, 153, 0);">.</span>
<span class="p">}</span>
<span class="n">productFlavors</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">all</span> <span class="p">{</span> <span class="n">flavor</span> <span class="o" style="color: rgb(133, 153, 0);">-></span>
<span class="n">flavor</span><span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">manifestPlaceholders</span> <span class="o" style="color: rgb(133, 153, 0);">=</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="ss" style="color: rgb(42, 161, 152);">UMENG_CHANNEL_VALUE</span><span class="p">:</span> <span class="nb" style="color: rgb(181, 137, 0);">name</span><span class="o" style="color: rgb(133, 153, 0);">]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">dependencies</span> <span class="p">{</span>
<span class="n">compile</span> <span class="n">fileTree</span><span class="p">(</span><span class="ss" style="color: rgb(42, 161, 152);">dir</span><span class="p">:</span> <span class="s1" style="color: rgb(42, 161, 152);">'libs'</span><span class="p">,</span> <span class="kp" style="color: rgb(133, 153, 0);">include</span><span class="p">:</span> <span class="o" style="color: rgb(133, 153, 0);">[</span><span class="s1" style="color: rgb(42, 161, 152);">'*.jar'</span><span class="o" style="color: rgb(133, 153, 0);">]</span><span class="p">)</span>
<span class="n">compile</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.android.support:support-v4:21.0.3'</span>
<span class="n">compile</span> <span class="s1" style="color: rgb(42, 161, 152);">'com.jakewharton:butterknife:6.0.0'</span>
<span class="o" style="color: rgb(133, 153, 0);">.</span><span class="n">.</span><span class="o" style="color: rgb(133, 153, 0);">.</span>
<span class="p">}</span></code></pre></div><p style="margin-bottom: 1em; color: rgb(51, 51, 51); font-family: 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; line-height: 25.2px;"><span style="background-color: white;">大家有问题或疑问、建议欢迎博客留言,Android Studio的教程暂且到这里结束了,相信大家基本的都已会使用了,还有其他技巧与操作靠大家自己摸索了,之后有时间也会在博客上整理下一些Tips之类的,欢迎大家关注。</span></p></div><p></p>
页:
[1]