第一行代码,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 快速输入
过滤器
自定义过滤器
级别控制
关键字过滤 (支持正则表达式)
阅读全文
1 0
- 第一行代码,Android Go
- Android第一行代码
- 《第一行代码Android》读书笔记
- 《第一行代码Android》摘要
- 第一行代码-----Android 第一章
- 第一行代码Android-------Activity
- 《Android第一行代码》笔记
- 《第一行代码Android》笔记
- Android第一行代码读书笔记
- Android第一行代码小结
- 《第一行代码--android》笔记
- android第一行代码笔记
- Android NDK 第一行代码
- 《Android第一行代码》笔记
- 《第一行代码Android》---读书笔记
- Android NDK 第一行代码
- Android第一行代码-入门之第一行代码
- Go IDE-Golang 第一行代码 Hello world
- 类加载器测试--类加载器(二)
- 用shell来发tcp包
- eval ,倒引号 及$( ) 使用调研
- 【数据结构】顺序队列(链表实现)
- Android task是什么,和栈是什么关系
- 第一行代码,Android Go
- 找到数组里重复的数字
- 利用Console来调试JS程序、Console用法总结
- inux系统下安装两个或多个tomcat
- opencv库的基本使用(python)
- spark mllib 之音乐推荐
- Oracle学习笔记(三)——Hash连接
- js定时器
- python:类是对象,通用对象的工厂