第一行代码,Android Go

来源:互联网 发布:微信多开软件免费版 编辑:程序博客网 时间:2024/05/12 04:33

开启旅程-我的第一行Android代码

第一章

  一、Android系统架构

         1、 第一层 Linux内核层

                   这一层为Android设备的各种硬件提供底层的驱动,如 显示驱动、音频驱动、电源管理、Wi-Fi驱动等。

         2、第二层 系统运行库层

                  这一层通过一些C/C++库来为Android系统提供了主要的特性支持。也就是说利用较底层库,来实现Android系统。这些库具有效率更高,更加系统化、专业化,
          有商业公司维护等特点。
                  同样在这一层还有Android运行时库(JRE),主要提供一些核心库,能够允许开发者使用java语言来编写Android应用。
          Android运行时库包含Dalvik虚拟机,现在叫ART运行环境。

          3、第三层 应用框架层

                   这一层主要提供了构建应用程序时可能需要的各种API,无论是Android自带的核心应用还是开发者自己开发的application都可以通过调用这些API来完成。

          4、第四层 应用层

                   顾名思义,就是application层。所有安装在手机上的application都属于这一层。

二、Android已发布版本

                 主要就是2014年,google发布Android 5.0版本,其中使用ART运行环境替代Dalvik虚拟机,大大提升应用的运行速度。
                 目前4.0以上的系统已经占据了超过98%的Android市场份额,因此以后开发的程序基本只面向4.0以上的系统。

三、Android应用开发特色

                 Android系统提供的工具/服务,可供开发者开发出优秀的程序。

         1、四大组件

                 活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider).

                 Activity:所有在应用中能看到的东西,都是放在活动中。
                 Service:在后台默默运行,即使用户退出,Service仍然可以继续运行。
                 Broadcast Receiver:它让应用可以接受来自各处的广播信息,比如电话,短信等。同样,应用也可以由此向外发出广播信息。
                 Content Provider:为应用程序之间共享数据提供支持。比如要读取系统电话簿中的联系人,就需要通过Content Provider来实现。

         2、系统控件

                 Android系统提供非常丰富的系统控件,让我们可以轻松快速的写出漂亮的界面。
                 同样我们可以开发专属控件。

         3、SQLite DB

                  Android自带SQLite DB。它是轻量级、运算速度极快的嵌入式关系型数据库。
                  支持标准SQL语法、同时可通过Android封装好的API进行操作。

        4、地理位置定位

                移动设备自带GPS,配合地图,LBS(Location Based Services)潜力无限。

四、搭建开发环境

          1、准备工具

               a、Java基础知识

                     Java基本语法和特性
               b、JDK
                     包含JRE、工具集合、基础类库
                     Ps、JDK 8以上版本
               c、Android SDK
                    Google提供的Android开发工具包,在开发Android程序时,需通过引入该工具包,来使用Android相关API。
               d、Android Studio
                    在2013年Google退出Android Studio之前,开发Android项目都是用Eclipse,安装ADT插件之后就可以了。
               随着Android Studio的发展,现在普及程度已远超Eclipse。

         2、搭建开发环境

                  上述软件并不需要逐个下载,Google为简化搭建开发环境,将所有工具都集成好了,到Android官网下载最新版本Android Studio即可。
                  Ps:我的情况并不是如此,JDK没有集成进去,需要自己安装并帮助Android Studio找到它。
                  下载地址:https://developer.android.google.cn/studio/index.html
                  Ps:需要科学上网才能访问。
                  相关网盘:https://pan.baidu.com/s/1nuABMDb(永久有效,URL中是数字1不是字母l)


                   下载完成后,安装时一直点击Next。其中选择安装组件时建议全部勾选。组件包括:Android Studio(默认选择)、Android SDK、Android Virtual Device
                    接下来会有选择Android Studio以及Android SDK安装地址。根据自己实际情况选择。注意,如果更改默认地址的话,要记得安装位置,过会会找不到Android SDK
                    位置,你要帮助Android Studio找到它。

                    其它的一路Next下去就好了。

五、创建第一个Android项目

           1、创建HelloWorld项目

                   流程略

                  注意点:
                              Application name表示应用名称
                              Company Domain表示公司域名,个人使用example.com
                              Package name表示项目包名
                              Project location表示项目代码存放位置
                              Minimun SDK一般指定API 15(Android 4.0以上)
                              Activity Name:XxxXxxActivity
                              Layout Name:xxx_xxx_layout
                              在模拟器中选择操作系统版本

            2、分析Android程序

                     项目结构模式默认为Android,我们调整为Project。
                    现阶段主要注意gradle与app
                    gradle是项目自动化构建工具,相关的文件夹暂时不分析。我们重点看app
                  
                   app:
                          build:主要包含编译时自动生成的文件,不重要。
                          libs:项目中使用到的第三方jar包都要放到libs目录下,放在该目录下的jar包都会被自动添加到构建路径里去。
                          androidTest:编写Android Test测试用例。
                          java:放置所有Java代码的地方。
                          res:项目中所有用到的图片、布局、字符串等资源!!资源!!!存放的位置!其下有许多子目录,图片放在drwaable目录下,布局放在layout目录下等。为了
                   兼容,有时候需要同一种资源多种格式的文件目录,比如:mipmap-hdpi、mipmap-mdpi等。
                          AndroidManifest.xml:整个Android项目的配置文件,程序中定义的四大组件都要在这个文件里注册!还可以在这个文件中给应用程序添加权限声明。
                          test:Unit Test测试用例
                          其他文件目录略。
                  
                  
                    AndroidManifest.xml 有如下代码:
                           <activity android:name=".HelloWorldActivity">
                                  <intent-filter>
                                        <action android:name="android.intent.action.MAIN"/>
                                        <category android:name="android.intent.category.LAUNCHER"/>
                                  </intent-filter>
                           </activity>
                    表示对HelloWorldActivity这个活动进行注册,未在AndroidManifest.xml中注册的活动不能使用。其中 intent-filter里的两行代码表示HelloWorldActivity活动是这个项
                    目的主活动。
 
                   
                    HelloWorldActivity代码如下:
                         
                          public class HelloWorldActivity extends AppCompatActivity {
                                
                                     @Override
                                     protected void onCreate(Bundle savedInsatanceState) {
                                                     super.onCreate(savedInstanceState);
                                                     setContentView(R.layout.hello_world_layout);
                                     }
                         }

                  HelloWorldActivity是继承自AppCompatActivity的,这是一种向下兼容的Activity,可以将Activity在各系统版本中增加的特性和功能最低兼容到Android 2.1系统。
                 Activity是Android系统提供的一个活动基类,所有的活动都直接或间接继承自它。
                 onCreate()方法时一个活动被创建时必定要执行的方法。


                 Android程序设计讲究  逻辑 和 视图 分离。在布局文件中编写界面,然后在活动中引入进来。

         3、项目中的资源及build.gradle文件

                 基本语法:
                                  在代码中通过 R.string.app_name可以获得该字符串的引用。
                                  在XML中通过 @string/app_name可以获得该字符串的引用。
                                  string可以替换成drawable等等。
                                  XML中定义一个时这样做:@+string/app_name
                
                  
                build.gradle文件解析
                                 不同于Eclipse,Android Studio采用Gradle(项目构建工具)来构建项目。它使用基于Groovy的的“领域特定语言(DSL)(求专不求全)”来声明项目
                设置,抛弃了传统的基于XML的各种繁琐配置。
                               
                                  respositories {
                                                 jcenter()
                                  }
                                  jcenter:代码托管库
                                  声明了以上配置后,可以在项目中引入jcenter上的开源项目
                                  dependencies中使用classpath声明了一个Gradle插件 com.android.tools.build:gradle:2.2.0




                                   apply plugin: ”com.android.application"
                                   引入一个插件
                                   com.android.application(直接运行)或者com.android.library(库模块)

                                   android闭包
                                                包含配置项目构建的各种属性
                                                compileSdkVersion指定项目编译版本
                                                buildToolsVersion指定项目构建工具的版本
                                    
                                                defaultConfig闭包
                                                                     applicationId指定项目包名,以后更改包名都在这里改
                                                                     minSdkVersion指定项目最低兼容Android系统版本
                                                                     targetSdkVersion指定在该版本上已充分测试,系统会为你的应用程序气筒一些最新的功能和特性。(到targetSdkVersion为止,超过
                                                的新特性就没了。)
                                                                     VersionCode指定项目版本号
                                                                     VersionName指定项目名 

                                                 defaultTypes闭包
                                                                      用于指定生成   安装  文件的相关配置
                                                                      通常包含两个闭包:debug和release
                                                                      debug用于指定生成测试版安装文件的配置
                                                                      release用于指定生成正式版安装文件的配置
                                                                      debug闭包可以省略
                                                                     
                                                                      release闭包:
                                                                                  minifuEnabled用于指定是否对项目代码进行混淆,true代表混淆,false代表不混淆
                                                                                  proguardFiles用于指定混淆是使用的规则文件,这里指定两个文件,proguard-rules.txt和proguard-rules.pro
                                                                                  .txt是在Android SDK目录下,里面是所有项目的混淆规则
                                                                                  .pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则

                                                                     Android Studio直接运行项目生成的都是测试版啊安装文件
                                     

                                     dependencies闭包:
                                                用于指定当前项目所有的依赖关系

                                                Android Studio一共有三种依赖关系:本地依赖、库依赖、远程依赖
                                               
                                                本地依赖可以对本地的Jar包或目录添加依赖关系
                                                           compile fileTree(dir: 'libs',include:['*.jar'] 它表示将libs目录下所有.jar文件添加到项目的构建路径中去
                                                库依赖可以对项目中的库模块添加依赖关系
                                                           compile project(':helper') 它表示将一个helper库模块添加到项目的构建路径中去
                                                           Ps:此处假设有一个叫helper的库模块
                                                           库依赖添加可以百度地址https://jingyan.baidu.com/article/4e5b3e193b96e991901e24f2.html
                                                远程依赖可以对jcenter库上的开源项目添加依赖关系
                                                            compile ‘com.android.support:appcompat-v7:24.2.1
                                                            com.android.support是域名部分
                                                            appcompat-v7是组名部分
                                                            24.2.1是版本号


六、日志工具

         1、Log工具类

                 Log.v() verbose
                 Log.d() debug
                 Log.i() info
                 Log.w() warn
                 Log.e() error


                 Log.x()(x代指具体方法)方法中传入两个参数:第一个Tag,一般传入当前类名,主要用于对打印信息进行过滤;第二个参数是msg,即要打印的信息

         2、Log的优势

                  System.out.println()虽然方便 syso + Tab就出来 但是 :日志打印不可控、打印时间不确定、不能添加过滤器、日志没有级别区分

                  Log配合Logcat可以:
                        logx + Tab 快速输入
                       过滤器
                       自定义过滤器
                       级别控制
                      关键字过滤 (支持正则表达式)
                
原创粉丝点击