西甲2015赛程表
最新安卓入门教程
扫码关注
获取更多技术干货

image

作者论坛ID:静心study    

https://github.com/HLQ-Struggle

版权声明:本章节为安卓巴士博主原创文章,未经授权不得以?#25105;廡问?#36716;载发布/发表,违者将依法追究责任


Hello ,Android

Android,你好~

随着Android大军的突起,越来越多的人涌入了Android的阵营中,而本节将分为三步走,带你感受Android历史与将来~

Android简述

什么是Android呢?Android,是一种基于Linux的自由及开放?#21019;?#30721;的操作系统,主要应用于移动设备,例如手机,平板?#21462;?/font>

在这里不得不提,由于Android系统的开放性,使得Android逐日变得越来越优秀,But,?#24425;?#20799;有利有弊,开放性的同时也为我们开发过程中带来了一些难题。

不过,在这里你无需担心这个问题,正所谓上有政策,下有对策,况且Android Bus集结各方力量也不容忽视,大牛很多哦~

Android历史

  • 2003年10月,Andy Rubin等人创建Android公司,并组建Android?#21734;櫻?(意味Android的诞生)

  • 2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其?#21734;櫻?(意味Android拥有了雄厚的资?#20174;?#24378;势的背景,同时也为将来征战四方打下基础)

  • 2007年11月5日,谷歌向外界展示了名为Android的操作系统,并在当天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成 开放手持设备联盟(Open Handset Alliance) 来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的?#21019;?#30721;(新生的系统,强势的背景,雄厚的资源,为我Android造势一波)

  • 2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18?#29275;珹ndroid获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌正式发布了Android 1.0系统,这?#24425;茿ndroid系统最早的版本; (Android正式启航)

  • 2010年2?#36335;藎琇inux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树?#20445;ā皊taging tree?#20445;?#19978;除去,从此,Android与Linux开发主流将分道扬镳。在同年5?#36335;藎?#35895;歌正式发布了Android 2.2操作系统。谷歌将Android 2.2操作系统命名为Froyo,翻译完名为冻酸奶;

  • 2010年10?#36335;藎?#35895;歌宣布Android系统达到了第一个里程碑,即电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。在2010年12月,谷歌正式发布了Android 2.3操作系统Gingerbread (姜饼)

  • 2011年1月,谷歌称每日的Android设备新用户数量达到了30万部,到2011年7月,这个数字增长到55万部,而Android系统设备的用户总数达到了1.35亿,Android系统已经成为智能手机领域占有量最高的系统;(Android翻开新的篇章:辉煌)

  • 2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据?#25345;?#22320;位,?#25112;?#20102;Symbian(塞班系统)的霸主地位,跃居全球第一(一战成名,笑傲江湖)

  • 2013年11月1日,Android4.4 KitKat(奇巧巧克力)正式发布,从具体功能上讲,Android4.4提供了各种实用小功能,新的Android系统更智能,添加更多的Emoji表情?#21450;福琔I的改进也更现代,如全新的HelloiOS7半透明效果;(历史上重大改版,再次翻开新的篇章:巅峰)

  • 2014年11月3日,Android 5.0 Lollipop(棒棒糖)正式发布。 并且从Android 5.0 后,谷歌推出一种全新新的Material Design设计风格,也被称为一门新的设计语言,并逐渐在Android各大应用上尽情绽放光彩;

  • 2015年5月28日,Android 6.0 Marshmallow(棉花糖)正式发布。 新系统的整体设计风格依然保持扁平化的MeterialDesign风格。Android6.0在对软件体验与运行性能上进行了大幅度的优化,并且新增运行时权限、低电耗模式和应用待机模式省电功能、新的协助技术?#21462;?#20363;如普遍耗电问题,据测试,Android6.0可使设?#24863;?#33322;时间提升30%;

  • 2016年8月22日,Android 7.0 Nougat(牛轧糖)正式发布。 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更,重点关于点在于权限的严格控制与管理;

  • 2017年5月,Android 8.0 Oreo(奥利奥)正式发布。引入官方对其描述:更智能、更迅捷、更强大。广受世人喜爱的不仅仅是曲奇饼干,更是为您打造的全新 Android 系统。它主要更新内容便是继续深入优化了电源及性能,并提供了多种全新方式来扩展应用。例如:通知渠道、画中画、自动填充、自适应图标?#21462;?/p>

当然Android的历史之路当然不止上面所述的几个版本而已,这里只是为大家简述,了解即可。谷歌官方版本的不断升级也为自己赢得一个当之无愧的称?#29275;?strong>版本帝~!

而目前移动端,几乎划分为Android、IOS俩大阵营,当然还?#24418;?#36719;的WinPhone和其他一些占比比?#31995;?#30340;阵营,Android几乎属于霸主的地位。

Android系统架构

放出官方图一?#29275;?/p>

image

下面将依?#35859;?#34892;简单?#24471;鰲?/p>

第一层为:系统应用层

Android 随?#25581;?#22871;用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。?#25945;?#38543;附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。

系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果你的应用要发短?#29275;?#26080;需自己构建该功能,可以改为调用已安装的短信应用向你指定的接收者发送消息。

第二层为:Java API 框架

可通过以 Java 语?#21592;?#20889;的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

  • 丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文?#31350;頡?#25353;钮甚?#37327;?#23884;入的网络浏览器;
  • 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件;
  • 通知管理器,可让所有应用在状态栏中显示自定义提醒;
  • Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈;
  • 内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据。

第三层:原生 C/C++ 库

许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android ?#25945;?#25552;供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形; 如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生?#25945;?#24211;

第四层:Android Runtime

对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java ?#21019;?#30721;编译为 DEX 字节码,使其可在 Android ?#25945;?#19978;运行。 ART 的部分主要功能包括:

  • 预先 (AOT) ?#22270;?#26102; (JIT) 编译;
  • 优化的垃圾回收 (GC);
  • 更好的调试支持,包括专用采样分析器、详细的诊断异常和?#35272;?#25253;告,并且能够设置监视点以监控特定字段;
  • 在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。

Android 还包含一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能,包括一些 Java 8 语言功能

第五层:硬件抽象层 (HAL)

硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

第六层:Linux 内核

Android ?#25945;?#30340;基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。

使用 Linux 内核可让 Android 利用主要安全功能,并?#20197;?#35768;设备制造商为著名的内核开发硬件驱动程序

参考文献

  1. 百度百科:https://baike.baidu.com/item/Android/60243?fr=aladdin;
  2. 谷歌官方:

工欲善其事,必先利其器

工欲善其事,必先利其器。掌握好的开发工具,总是使我们开发过程中事半功倍。

话说当年开发Android第一利器当属Eclipse,而随着谷歌BaBa突然对Eclipse以后不支持ADT更新,并且推出Android Studio作为首位开发Android的软件,让我们这些吃?#20808;?#20247;实属大惊。

在这里不得不吐槽的是,早期的Android Studio稳定性相对来讲比较low,随着版本迭代升级,现在Android Studio可谓空前强大,让人爱不释手。

到目前为止,Android Studio稳定版本为2.3.3,而关于Android Studio 3.0却只是Beta 5。而我们今天将依据Android Studio 3.0 Beta 5版本进行举例?#24471;?#22914;何在本机一步步配置到最后使用Android Studio。

Android Studio 3.0 Beta 5 下载

官方地址如下:

解压安装

将下载好的AS解压到本地目录下面,最好新建AndroidStudio3.0目录,方便管理,当然,尊重个人习惯。

解压完成后,进入bin目录下,双击studio64.exe,开始运行安装

image

双击之后,弹出如下提?#31350;潁?#19979;面将分别为大家介绍每个的含义or作用:

image

完成AS安装需要设置如下选项:

  1. 导入之前Android Studio 2.3配置信息;
  2. 自定义位置以及配置文件夹或安装之前的版本;
  3. 不导入任何配置。

这里我们选择不导入任何配置,纯天然,无污染,一切从新开始,I like it。

点击确定后,启动AS 3.0 Beta 5,这速度,666~

image

启动完成后会提示一个找不到SDK位置,不要着?#20445;?#22240;为我们选择的是重新开始~

image

直接关闭,AS会自动查找可用的SDK。

image

运行AS安装向导

Welcome Android Studio~!

简单翻译内容如下:

运行此工作向导将为Android开发设置开发环?#24120;?#27492;外此向导还会帮助开发者创建首个Android项目。

image

选择你想要安装的Android Studio类型,此时有如下俩个选择:

  1. 标准版

Android Studio将安装使用最常见的设置和选项。建议大多数用户选择此项    2. 自定义

你可以自定义安装设置和组件安装

这里我们选择自定义,也就是下面的选项,因为后期会有一个SDK的下载,一般来讲都是我们确定好统一目录,方便管理,这里选择推荐的,它默认下载到C盘中,个人不推荐。

image

选择你的撸码UI界面风格,我?#19981;?#40657;的~嘿嘿

image

这一步可以手动选择SDK下载存放位置。

image

而这一步,就?#33455;?#20986;来将要下载文件的详情。

image

乌拉拉,下载喽~ 这一步,大家可以抽根烟,泡个妹子,喝杯咖啡,不急不急~

image

真想唱一句,我等你等了那么久...

image

久违了,老伙计

image

好了,到此 AS 3.0 Beta 5安?#24052;?#27605;。

了解与Android?#20302;?#30340;语言

走过了序幕,翻过了Hello Android,踏平了工欲善其事必先利其器,来到了了解与Android?#20302;?#30340;语言。

为什么单独作为一小节来?#24471;?#36825;个东西,简单为大家?#24471;?#19968;下:

就好比Java的编程思想是,万物皆对象。在此注明,这个对象和你身边躺着的那位可不一样哦~

我们总是基于各种语言开发,试问,有谁能知道有多少种语言可以开发Android呢?又有谁敢十分肯定的?#30340;兀可?#20043;又少。那我们为何不去简单了解下呢?哪儿怕为了在面试中更好的吹水,要更高的Money,当然,也不是说你知道开发语言越多越能要Money,了解,掌握,熟练方才是根本。

综上所述,简明概括为一句话:多了解还是没有坏处的~!

Android开发语言简述

说到开发Android的语言,首先脑海里一定会浮现Java。那我们就从Java入手。

Java-万物皆对象

Java的编程思想,万物皆对象(OOP),那么这个又该如何理解呢?如何将现实抽象手下的码?#24515;兀?/p>

假设一只可爱的猫咪,它具?#24515;?#20799;些特征呢?

  • 性别?#26680;?#27668;小王子还是傲娇小公主;
  • ...

那么它具?#24515;?#20799;些行为呢?

  • 小?#19968;?#24635;是很?#24052;媯?/li>
  • ...

那么依据以上分析,我们创建如下类去实现将显示中的猫咪转化代码上的猫咪:

public class Cat{

    // 具有的特征 也被称为属性
    private String sex;

    // 具有的行为 可以理解为它具有的方法
    protected void getPlay(){}

}

到此,我们已实现将现实中的猫咪转化为代码界中的猫咪了。那?#21019;?#23478;这时候?#31361;?#38382;了,这和我开发Android有什么关系?

其实,你如果掌握开发Java的基础,那么开发Android对于你来?#25285;?#38590;度便减少了一半。

你要知道,与Java中不同的是,Android有着其独特的机制,而这些机制和在Java中使用类如servlet、mybatis等原理几乎万变不离其宗,只需要按?#23637;?#26041;指定玩法尽情享受撸码的快乐即可,当然由于Android的开源性,你也可以尽情基于Android创造属于你的世界~

Kotlin-谷歌官方开发Android第一语言

随着甲骨文状告谷歌失败起,似乎也给谷歌下了一?#21734;?#24515;丸,So,没过多久,谷歌I/O大会上正?#25945;?#20986;将Kotlin作为Android第一语言,在其官方开发者?#25945;?#19978;也推出了相关Kotlin的介绍,地址如下:

  • 极客React Native教程:http://wiki.jikexueyuan.com/project/react-native/
  • The first Android Project

    经过前?#24863;?#33410;的铺垫,这节正式为你拉开Android开发序幕,学?#24052;?#21315;语言的第一步,Hello Word~

    本节,我们继续采取图文结合的方案进行?#27493;鈤

    开启我们第一个Android Pro

    简单了解首页功能项

    找到昨天安装目录,运行安?#24052;?#27605;的Android Studio 3.0 Beta 5版,如下图:

    image

    每个选项含义如下:

    • 开始一个新的Android Studio项目

    • 打开已存在的Android Studio项目

    • 从版?#31350;?#21046;中检出项目,在此提供GitHub、CVS、Git、Goodle Cloud、Mercurial、SubVersion(SVN)方式

    • 配置或者调试APK

    • 迁移Eclipse项目

    • 导入Android源码示例

    新建项目

    选择新建项目,你可以设置项目名称、项目包名、以及项目保存地址。

    当然如果你是ndk爱好者,你也可以勾选?#36335;?#30340;导入C++?#35272;担?/p>

    如果你也想体验下谷歌新宠儿,Kotlin,你也可以勾选下面的Kotlin?#35272;怠?/p>

    image

    选择最低兼容的SDK版本

    从这一步就可以看出我大Android设计领域之广,你可以创建Android手机(移动端) Pro,也可以创建Android 手表类型Pro,当然还可以创建Android TV Pro 以及 Auto Pro。

    image

    当然,你也可以点击“Help me choose”去查看目前版本在市场占?#26032;剩?#20174;而决定你最低兼容SDK版本。

    image

    选择创建Activity的模板

    image

    创建一个空的Activity

    image

    安装所需组件。

    image

    点击finish,开始构建我们的第一个Android Pro。

    image

    ?#29366;?#26500;建时间比较久,当然大家可以选择进行优化以?#28044;霣uild速?#21462;?/p>

    构建完成后自动打开Android Studio界面,但是我们发现此时抛出一个异常如下:

    image

    猜测应该为Gradle出的问题,这时候需要打开设置,去查看我们的Gradle配置是否出现问题。

    image

    设置使用本地Gradle,然后点击try,ok。

    启动模拟器

    Android Studio中为我们内置了模拟器,当然你也可以下载Genymotion,这里就直接选择使用内置模拟器。

    点击后打开预览界面,接着点击创建模拟器(左下角),开始进行选择心仪的模拟器进行下载安装即可。

    image

    大家可以清晰的看到谷歌为我们提供的一些设?#24863;禿牛?#22909;好挑选一番`

    当我们选择某个型号的手机后,Android Studio会为我们罗列出其型号支持的Android系统版本,按需下载。

    image

    点击下载并勾选用户协议

    image

    进行下载中,稍等片刻即好。

    image

    下载完成准备安装。

    image

    确?#31995;?#21069;设备名称,一般默认即可。

    image

    安?#24052;?#25104;后,当前模拟器便会显示你刚刚下载的那个,随后点击启动,我们先来运行一把~

    运行 查看第一个Android Pro结果

    点击如下图标,开始运行当前项目。

    image

    选择当前我们开启的模拟器设备,双击确定。

    image

    运行结果如下:

    image

    OK,到此为止,我们第一个Android应用已经完成,并且成功运行。

    下面,我们回过头,一起来看下Android Studio的项目结构以及每个所代表的含义。

    Android Studio目录结构简述

    下面将依据官方图例进行?#24471;鰨?/p>

    image

    要查看项目的实际文件结构(包括 Android 视图下隐藏的所有文件),请从 Project 窗口顶部的下拉菜单中选择 Project。

    选择 Project 视图后,你会看到更多文件和目录。最重要的一些文件和目录如下所示:

    模块名称

    • build/:包含构建输出;

    • libs/:包含私有库;

    • src/:包含模块的所有代码和资源文件,分为以下子目录:

      • androidTest/:包含在 Android 设备上运行测试的代码;

      • main/:包含“主”源集文件:所有构建变体共享的 Android 代码和资源(其他构建变体的文件位于同级目录中,例如调试构建类型的文件位于 src/debug/ 中);

        • AndroidManifest.xml?#26680;得?#24212;用及其每个组件的性质;

        • java/:包含 Java 代码源;

        • jni/:包含使用 Java 原生?#28044;?(JNI) 的原生代码;

        • gen/:包含 Android Studio 生成的 Java 文件,例如您的 R.java 文件以及从 AIDL 文件创建的?#28044;冢?/p>

        • res/:包含应用资源,例如可绘制对象文件、布局文件和 UI 字符串;

        • assets/:包含应原封不动地编译到 .apk 文件中的文件。您可以使用 URI 像浏览典型文件系统一样浏览此目录,以及使用 AssetManager 以字节流?#38382;?#35835;取文件;

      • test/:包含在您的主机 JVM 上运行的本地测试的代码;

    • build.gradle(模块):定义模块特定的构建配置;

    build.gradle(项目):定义适用于所?#24515;?#22359;的构建配置。此文件已集成到项目中,因此你应当在所有其他?#21019;?#30721;的修订控制中保留这个文件

    嗯?#25784;?#22522;本介绍到此结束,?#38431;?#22823;家继续观看下面文章以便你更好的掌握Android~

    参考文献

    1. 谷歌官方:

      下载完成后,会有一个Config标识,点击,进行配置。

      这几步只需要按照提示进行即可,配置完成后再次查看Activity内容如下:

      class MainActivity : AppCompatActivity() {
      
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
          }
      }

      到此,完成转化的工作,下面你就可以驾着Kotlin尽情奔驰了~

      玩转Log日志

      Android中为我们提供了Log工具类,而此类的作用就是方便我们在开发中不便调试或者?#21040;?#20165;是需要查看当前某个参数而使用。

      Log有几个级别,分别对应我们开发中遇到的不同情况,这里直接截取源码关于Log级别描述。

          /**
           * Priority constant for the println method; use Log.v.
           */
          public static final int VERBOSE = 2;
      
          /**
           * 输出Debug时调试日志
           */
          public static final int DEBUG = 3;
      
          /**
           * Priority constant for the println method; use Log.i.
           */
          public static final int INFO = 4;
      
          /**
           * 输出警告日志
           */
          public static final int WARN = 5;
      
          /**
           * 输出Error日志
           */
          public static final int ERROR = 6;
      
          /**
           * Priority constant for the println method.
           */
          public static final int ASSERT = 7;

      上面简单为大家写了几个项目中常用的级别,那么如何使用呢?

      很简单,统一格式,统一使用方式:

      (String tag, String msg): tag标识,msg详情

      那么在实?#22763;?#21457;中又是如何使用的呢?

      Log.e("APK_BUS", "this is a error log")

      如上所示,设定Tag为:APK_BUS,Msg为:this is a error log

      运行所示:

      image

      查看时需要选择日志级别以及Tag即可。

      在公司开发时,大多数是多人协作开发,开发过程中不可避免要输出相应?#25285;?#20294;是开发完成后,很多时候我们都忽略了这个日志的输出,那么如何避免这个问题呢?

      定义一个统一工具类,统一进行管理,通过标识符进行管理开关闭日志输出。

      var isStartLog = true
      
      fun logD(tag: String, msg: String) {
          if (isStartLog) {
              Log.d(tag, msg)
          }
      }
      
      fun logE(tag: String, msg: String) {
          if (isStartLog) {
              Log.e(tag, msg)
          }
      }
      
      fun logI(tag: String, msg: String) {
          if (isStartLog) {
              Log.i(tag, msg)
          }
      }
      
      fun logW(tag: String, msg: String) {
          if (isStartLog) {
              Log.w(tag, msg)
          }
      }
      
      fun logV(tag: String, msg: String) {
          if (isStartLog) {
              Log.v(tag, msg)
          }
      }

      调用如下:

      logE("APK_BUS", "Hello LogHelper")

      正式打包前,只需要设置isStartLog为false即可。

      这样一来,是不是很方便了呢?

      build文件初窥

      build文件一个存在项目根目录下,一个存在app下,这俩个分别有什么区别么?

      首先,这个从位置上来?#25285;?#19968;个属于项目级别,一个属于app源码相关级别。一个统筹全局,一个管好自己。

      先来说下项目下的build文件到底是干什么的。

      // Top-level build file where you can add configuration options common to all sub-projects/modules.
      
      buildscript {
          ext.kotlin_version = '1.2.0'
      
          repositories {
              google()
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:3.0.1'
              classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      
              // NOTE: Do not place your application dependencies here; they belong
              // in the individual module build.gradle files
          }
      }
      
      allprojects {
          repositories {
              google()
              jcenter()
          }
      }
      
      task clean(type: Delete) {
          delete rootProject.buildDir
      }
      

      项目下build文件作用就是为整个项目做一个初始化,为什么这么?#30340;兀?/p>

      由于我们的AS推崇的是远程?#35272;?#26041;式使用相关三方库,那么如何使用远程库,或者说是远程库一个基本配置又是什么?我们不得而知,只能往下解析查?#30784;?/p>

      • buildscript:加载gradle脚本自身需要使用的资源以及相关?#35272;?#39033;、第三方插件、maven仓库地址等;

        • repositories:?#35272;?#31649;理的服务器。默认是 jcenter();

        • dependencies:?#35272;?#31649;理,具体到你要用什么;

      • allprojects:所有项目配置

      • task clean:清理Build文件

      而app下的build文件如下:

      apply plugin: 'com.android.application'
      
      android {
          // 编译sdk的版本,也就是API Level,例如API-19,API-20,API-21等
          compileSdkVersion 25
          // build tools的版本,其中包括了打包工具aapt,dx等 这个工具位于你的sdk目录/build-tools/下
          buildToolsVersion "25.0.2"
          // 项目默认配置
          defaultConfig {
              applicationId "应用包名"
              // 最小sdk版本,如果设?#24863;?#20110;这个版本或者大于maxSdkVersion(一般不用)将无法安装这个应用
              minSdkVersion 12
              // 开启分包
              multiDexEnabled = true
              // 目标sdk版本,如果设备等于这个版本,那么android不进行兼容性检查,运行效率会高一点
              targetSdkVersion 23
              // 版本?#29275;?#26356;新频率),暂时规则为 每次在原有版本号上累加此次更新内容数量
              versionCode 1
              // 版本信息 (用户实?#22763;?#21040;的版本?#29275;?        versionName "1.0.0"
              // 自动化测试地址
              testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
      
              ndk {
                  //设置支持的SO库架构
                  abiFilters 'armeabi', 'arm64-v8a' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
              }
          }
          // 配置multiDex,使其Android Studio编译速度更快
          dexOptions {
              // 关闭对Lib做preDexing
              preDexLibraries = false
              // 开启incremental dexing,优化编译效率,这个功能android studio默认是关闭
              //incremental true
              // 增加java堆内存大小
              javaMaxHeapSize "4g"
          }
      
          signingConfigs {
              release {
                  storeFile file('本地key存放地址')
                  storePassword '密码'
                  keyPassword '密码'
                  keyAlias '别名'
              }
          }
      
          buildTypes {
              // release(正式)版本的配置
              release {
                  // 是否支持zip
                  zipAlignEnabled true
                  // 注:Android Studio 2.3版本之后默认开启移除无用资源文件
                  // 是否进行混淆
                  minifyEnabled false
                  // 是否支持调试 测试版开启 正式版关闭
                  debuggable true
                  shrinkResources false
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                  signingConfig signingConfigs.release
              }
              // debug(测试)版本的配置
              debug {
                  minifyEnabled false
                  zipAlignEnabled true
                  shrinkResources false // 移除无用的resource文件
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                  debuggable true
                  //signingConfig signingConfigs.release
              }
          }
          // 关闭Android Studio对PNG合法性检查
          aaptOptions {
              cruncherEnabled = false
              useNewCruncher = false
          }
          // lint检查
          lintOptions {
              // 关闭Android Studio 在打包Release版本时检测
              checkReleaseBuilds false
              // lint时候终止错误上报,防止编译的时候莫名的失败
              abortOnError false
          }
      
          packagingOptions {
              exclude 'META-INF/DEPENDENCIES'
              exclude 'META-INF/LICENSE'
              exclude 'META-INF/LICENSE.txt'
              exclude 'META-INF/license.txt'
              exclude 'META-INF/NOTICE'
              exclude 'META-INF/NOTICE.txt'
              exclude 'META-INF/notice.txt'
              exclude 'META-INF/ASL2.0'
          }
      }
      
      // 项目?#35272;?#24211;地址
      dependencies {
          compile fileTree(include: ['*.jar'], dir: 'libs')
          androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
              exclude group: 'com.android.support', module: 'support-annotations'
          })
          testCompile 'junit:junit:4.12'
      }
      

      嗯?#25784;?#21040;这里,build介绍完毕,剩下只能各位在开发过程中挖掘了~

      第一章总结

      哈喽,恭喜小伙伴完成第一章的学习,接下来,大家静心思考下,阅读完首章,真正的收获了什么?

      为什么要这么做呢?

      因为后面的每一章都是满满的干货,APKBus集结各路人马只想在你Android前?#26032;?#19978;提供有限帮助~

      要知道,后续的每一篇文章都是各位在职伙伴在逆鳞各种比叨叨催促完成的,是一份心血,同时?#24425;?#19968;?#21046;碓浮?/p>

      最后,希望大家在后续观看的同时别忘记分享,get技能的时候别忘记提出意见,?#38431;?#21508;位伙伴可以参与进来,让我们一起让世界变得更美好~!!!


    ?#38431;?#22823;家对本教程的内容进行刊错和纠正,点击此处?#24052;?#35770;坛给你?#19981;?#30340;文章作者给予支持鼓励,若有问题反馈和建议请注明具体章节
    西甲2015赛程表 守财奴讽刺图片 沙漠宝藏2免费试玩 马赛克瓷砖贴图 美国亚特兰大 斗魂试玩 亚眠法国哪个城市 广东快乐10分app下载 辽宁快乐12走势图一定牛 阿尔希拉尔郭泰辉 黑龙江快乐10分投注