安卓开发复习笔记(一)

摘要:
位置定位Android手机都配有GPS。结合强大的地图功能,LBS在该领域具有无限潜力。标识符接下来,查看MainActivity中的代码。java,这是Android四个组件中的活动代码。仔细观察会发现有两个版本。gradle文件是最外层的文件,另一个在app目录中。接下来,依赖关系闭包使用类路径来声明Gradle插件。声明这个插件的意义在于Gradle不仅服务于Android项目,还服务于Java、C++等。② 通用域名格式。安卓library表示这是一个库模块。

第一章


安卓应用开发特色:

• 四大组件
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文件的这个部分,从中可以找到这段代码:

安卓开发复习笔记(一)第1张

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

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

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

标识符【.Main】


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

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

安卓开发复习笔记(一)第2张

首先要注意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文件中你能看到以下代码:

安卓开发复习笔记(一)第3张

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


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

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

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

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

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

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


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

安卓开发复习笔记(一)第4张

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

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

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

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

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

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

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

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

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

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


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

安卓开发复习笔记(一)第5张

我们来一行一行分析:

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

① 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高一级

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

安卓开发复习笔记(一)第6张

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

安卓开发复习笔记(一)第7张

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

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

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

安卓开发复习笔记(一)第8张

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

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

安卓开发复习笔记(一)第9张

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

第一章完成啦~~~

    

免责声明:文章转载自《安卓开发复习笔记(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Anaconda CUDA9.1.83对应的pytorch安装,不同版本的pytorch下载python定时任务-sched模块下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python心得基础篇【5】模块

模块,用一砣代码实现了某个功能的代码集合。  类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。 如:os 是系统相关的模块;file是文件操作相关的模块 模块分为三...

15个Android通用流行框架大全

1. 缓存 DiskLruCache  Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader  一个强大的加载,缓存,展示图片的库 Picasso  一个强大的图片下载与缓存的库 Fresco  一个用于管理图像和他们使用的内存的库 Glide   一个图片加载和缓存的库 3. 图片处理 Pi...

不要再吹水地球人听不懂的技术,咱来点干货!中文前端UI框架Kit(一)大致了解下Kit是啥?

KitJs技术交流QQ高级群(可加500人) ,群号:88093625 Kitjs,(http://xueduany.github.com/KitJs),是我2011年底,离开淘宝UED之后,自己搞起的一套HTML5的前端widget库,原本的用途主攻手机端HTML页面交互组件使用,正如其字面意思Kit一样,愿景是做一个娇小,实用,既可以直接拿来用,也可以...

CentOS安装

目前,我们安装Linux操作系统的主要目的是为了更好地了解和学习它。如果条件允许,最好把Linux操作系统安装在一台PC机上;如果条件不允许也没有关系,阿铭会教你使用虚拟机来安装Linux操作系统。 大多数读者朋友比较习惯使用Windows操作系统,所以建议你使用虚拟机来学习Linux。阿铭相信,如果在Windows系统里安装一个虚拟机,然后在虚拟机上安装...

js判断浏览器类型

js判断浏览器类型 <script type="text/javascript" ><!-- function getOs() { var OsObject = ""; if(isIE = navigator.userAgent.indexOf("MSIE")!=-1) { return "MSIE"; } if(isFirefox=na...

ubuntu下如何安装7z压缩工具?

答: sudo apt-get install p7zip 1. 解压 7zr x filename.7z 2. 压缩 7zr a -t7z -r filename.7z ~/filename/* 各参数解析:   a 代表添加文件/文件夹到压缩包  -t 是指定压缩类型 一般我们定为7z  -r 表示递归所有的子文件夹,filename.7z 是压缩好后...