安卓开发复习笔记(一)

第一章


安卓应用开发特色:

• 四大组件
Activity,Service,Broadcast Receiver,Content Provider


?• SQLite 数据库
轻量级,运算速度极快的嵌入式关系型数据库,不仅支持sql语句,还可以通过安卓封装好的API进行操作,让存储和读取数据变得特别方便。


• 地理位置定位
Android手机都内置GPS,结合强大的地图功能,LBS这一领域潜力无限。

 

 

需要准备的工具:
?Java JDK

?Android SDK

?Android Studio

 

Project结构模式下目录介绍
无需更改区域:
? .gradle & .idea 自动生成文件
? build 编译时自动生成的文件
? gradle
。。。一堆,不过多赘述

 

开发者设计区域:
【app文件夹下】
1. build

无需关心

?2. libs

使用到的第三方jar包都会放在libs目录下,放在这个目录下的jar包就会自动被添加到构建路径中去

?3. android Test

此处是用来编写Android Test 测试用例用的

?4. java

毫无疑问,所有java代码放置到该目录下

?5. res

项目中使用到过的所有图片、布局、字符串等资源都要存放在这个目录下。
①图片放在drawable目录下
②布局放在layout目录下
③字符串放在valves目录下

?6. AndroidManifest.xml

这是整个Android项目的配置文件,程序中定义的四大组件都要在这个文件中注册,另外还可以再择个文件中给应用程序添加应用权限声明。

7. test

自动化测试

?8. build.gradle

这是app模块的gradle构建脚本,这个文件会制定很多项目构建相关的配置

9. proguard-rules.pro

代码打包后如果不希望别人进行破解,通过这个文件让代码混淆,从而让阅读者难以阅读

 


 

首先了解一下AndroidManifest.xml文件的这个部分,从中可以找到这段代码:

安卓开发复习笔记(一)

 

这段代码用于对MainActivity这个活动进行注册,没有在AndroidMainfest内注册的活动是不能使用的。

往下出现两个<intent-filter>,其中的内容非常重要

这两行加起来的总效果就是MainActivity是这个项目的总活动,所谓总活动就是点击应用图标后进入的第一个活动。

标识符【.Main】

 


 

 

接下来看一下这段MainActivity.java中的代码,这是安卓四大组件中活动的代码。

凡是在应用中看得到的东西都是要放在Activity中的。

安卓开发复习笔记(一)

 

首先要注意MainActivity是继承AppCompatActivity类的,这是一种向下兼容的Activity

可以将Activity在各个版本中增加的特性和功能最低兼容到Android 2.1系统

Activity是Android系统提供的一个活动基类,我们项目中的所有活动必须继承它或者他的子类才能拥有活动特性。

这里AppCompatActivity就是Activity的子类。

 

然后注意到MainActivity中存在的 onCreate() 方法

这个方法是一个活动被创建时必须要执行的方法

 

注意onCreate函数中第二行代码:setContentView(R.layout.activity_main);

在这里我们要了解Android程序的设计其实是逻辑和视图是分离的

因此通用的做法是:在布局文件中编写界面,然后在活动中引进来

那么在此处就是这个setContentView()方法给当前的活动引入了一个main_activity布局。

 

 


 

 布局文件都定义在res/layout目录下,activity_main.xml文件中你能看到以下代码:

安卓开发复习笔记(一)

 

android:text="Hello World!";便是HelloWorld的出处。

 


 

 

接下来我们来了解一下build.gradle这个文件。

不同于Eclipse,Android Studio是采用Gradle来构建项目的。

Gradle是一个非常先进的项目构建工具

它使用了一种基于Groovy(我也不知道这是啥,厉害就完事了)的领域特定语言(DSL)来声明项目设置

摒弃了传统基于XML的各种繁琐配置。

仔细观察会发现有两个build.gradle文件,一个是最外层的,一个是app目录下的。

 


 

 

先讨论最外层的build.gradle文件

安卓开发复习笔记(一)

 

这些代码都时自动生成的,虽然与法比较难,只看最关键的部分,难度不大。

两处repositories闭包中都声明了jcenter()这行配置

jcenter()其实是一个代码管理仓库

很多Android开源项目都会将代码托管到jcenter上

声明了这行配置之后,我们就可以轻松地引用任何jcenter上的开源项目了。

 

接下来,dependencies闭包中使用了classpath声明了一个Gradle插件。

声明这个插件的意义在于Gradle不仅仅服务于Android项目,还有Java,C++等。

因而我们想要使用它就需要声明此插件。

 

这样外层build.gradle文件中的要点就分析完了,通常情况下并不需要修改这个文件中的内容。

除非你想添加全局的项目构建配置。

 


 

 

再来看一下app目录下的build.gradle文件:

安卓开发复习笔记(一)

我们来一行一行分析:

首先第一行应用了一个插件,一般有两种值可以选:

① com.android.application 表示这是一个应用程序模块。

com.android.library 表示这是一个库模块。

应用程序模块和库模块的最大差别在于,应用程序模块是可以直接运行的,而库模块只能作为依附于别的应用程序模块来进行。

 

接下来是一个大的 android闭包

在这个闭包中,我们可以配置项目构建的各种属性,同样在编辑器或者SDK更新的时候编译器出现故障时,这里也是故障发生的集中地。

1. compileSdkVersion 用于指定项目的编译版本。

2. buildToolVersion 用于指定项目构建工具的版本。

3. defaultConfig  闭包

     在这个闭包中可以对项目中的更多细节进行配置,其中

     ① applicationID 用于指定项目的包名,在创建项目的时候应该已经指定过包名了,如果想更改,要在这里更改。

     ② minSdkVersion 用于指定项目最低兼容的Android系统版本

     ③ targetSdkVersion 指定的值表示你在该目标版本上已经做了充分的测试,如果测试的版本号较低,较高版本的某些运行时功能权限不会对App开放

     ④ versionCode & versionName 用于指定项目的版本号和版本名,这两个文件在生成安装文件的时候非常重要!

4. buildTypes 闭包

     用于指定生成安装文件的相关配置,通常只会由两个子闭包,一个是debug,另一个是release。

     debug闭包用于制定生成测试版安装文件的配置,可以忽略不写的

     release闭包用于指定生成正式版安装文件的配置,下面详细介绍一下。

     ① minifyEnabled 用于指定是否对项目的代码进行了混淆(加密)

     ② proguardFiles 用于指定混淆时的规则文件,这里指定了两个文件:

         第一个 proguard-android.txt 是在Android SDK目录下的,里面是所有项目通用的混淆规则

         第二个 proguard-rules.pro 是在当前项目根目录下的,里面可以编写当前项目的特有的混淆规则   

这样,整个 android 闭包 中的内容就都分析完了。

 

接下来还剩一个 dependencies 闭包 ,这个闭包非常强大,它可以指定当前项目所有的依赖关系

通常 Android Studio 项目一共有三种依赖类型:本地依赖、库依赖、远程依赖。

本地依赖可以对本地的 jar包 或者 目录 添加依赖关系

库依赖可以对项目中的库模块添加依赖关系

远程依赖可以对 jcenter 库上的开源项目添加依赖关系。

 

下面来介绍一下 dependencies 闭包中的配置

1. compile fileTree

      是一个本地依赖声明,它表示将libs目录下所有 .jar 后缀的文件都添加到项目的构建路径当中。

2. compile

      是远程依赖声明,后边标明远程依赖库、域名、组名称、版本号。

 

 


 

 

安卓日志工具 Log:

1. Log.v() 用于打印那些最为琐碎的,意义最小的日志信息,对应级别verbose。日志级别最低

2. Log.d() 用于打印一些调试信息,调试程序常用,对应级别debug,比verbose高级一些

3. Log.i() 用于打印一些比较重要的数据,这些数据是开发者非常想要看到的、可以帮你分析数据行为数据。对应级别info,比debug级别高一些

4. Log.w() 用于打印一些警告信息,提示程序在这个地方可能会出现一些潜在的风险,最好去修复一下这些出现警告的地方,对应级别warn,比info高一级

5. Log.e() 用于打印程序中的错误信息,比如程序进入到了catch语句中,当有错误信息打印出来的时候,一般都代表你的程序出现了严重错误,对应级别error,比warn高一级

如图所示,可以根据等级筛选日志。

安卓开发复习笔记(一)

 

我们在MainActivity.java中加入此调试代码

 

 

安卓开发复习笔记(一)

 

Log.d(tag,msg); 调试方法有两个参数,第一个是标签,第二个是调试信息。

此处关于标签要强调,logcat中可以很轻松地添加过滤器。

下图是系统给的默认过滤器

安卓开发复习笔记(一)

接下来就让我们尝试自己创建一个过滤器,点击上图中的Edit Filter Configuration,出现下图创建界面,

给filter起名后,通过更改Lag Tag为“data”(自定义),再将调试信息第一个参数改为data即可实现只显示特定调试。

安卓开发复习笔记(一)

 

 日记级别控制的好处就是能方便快捷地找到你所关心的那些日志。

 

 

 

第一章完成啦~~~

 

 

 

    

 

安卓开发复习笔记(一)

上一篇:uiautomator2+python自动化测试2-查看app页面元素利器weditor


下一篇:jQuery常用选择器分类