1.1.1Android系统架构
1.Linux内核层 ---- 为Android设备的各种硬件提供了底层驱动(Android系统是基于Linux内核的)
2.系统运行库层 ---- 通过一些C/C++库为Android系统提供了主要的特性支持。这一层还有Android运行时库(包含了Dalvik虚拟机,5.0系统之后改为了ART运行环境),使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。
Android运行时库,主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。
ART运行环境:安装程序很慢,占用空间很大,但点开运行软件很快(原理:安装的时候就编译好软件)
Dalvik运行环境: 安装快,占用内存小,但点开软件慢(原理:软件运行时才编译再运行)
3.应用框架层 ---提供了构建应用程序时可能用到的API
4.应用层
1.1.2 Android版本
2014 Android 5.0 使用ART运行环境代替Dalvik虚拟机,提出Material Design来优化应用的界面设计
2015 Android 6.0 加入运行时权限功能
2016 Android 7.0 加入多窗口模式功能
1.1.3
四大组件 :活动Activity 服务Service 广播接收器Broadcast Receiver 内容提供器Content Provider
其中Activity是所有Android应用程序的门面,凡是在应用中看得到的东西,都是放在Activity中的
Service:它会一直在后台默默的运行,即使用户退出了应用,服务仍然是可以继续运行的
Broadcast Receiver允许你的应用接收来自各处的广播消息,比如电话,短信等,当然你的应用同样可以向外发出广播消息。
Content Provider为应用程序之间共享数据提供了可能,比如你想要读取系统电话簿中的联系人,就需要通过内容提供器来实现
1.2.1
JDK:JDK是Java语言的环境开发包工具,它包含了Java的运行环境、工具集合、基础类库等内容
Android SDK:是Google提供的Android开发工具包,在开发Android程序时,我们需要通过引入该工具包,来使用Android相关的API
1.3.1
Package name:Android系统是通过包名来区分不同应用程序的,因此包名一定要具有唯一性
1.3.4
切换项目模式结构 Android ----> Project
1. .gradle和.idea
放置的是Android Studio自动生成的文件
2.app
项目中的代码、资源等内容几乎都是放在这个目录下
3.build
包含了一些在编译时自动生成的文件
4.gradle
包含了gradle wrapper的配置文件
配置更改:File -> Settings ->Bulid,Execution,Deployment ->Gradle
5..gitignore
将指定的目录或文件排除在版本控制之外
6.build.gradle
项目全局的gradle构建脚本
7.gradle.properties
全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译
8.gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或者Mac系统中使用的,gradlew.bat是在Windows系统中使用的
9.local.properties
这个文件用来指定本机中的Android SDK路径,通常内容都是自动生成的,我们并不需要修改。除非本机中Android SDK路径发生了变化,那么就将这个文件中的路径改成新的位置即可
10.settings.gradle
这个文件用于指定项目中所有引入的模块。由于SingleInstanTest项目中只有一个app模块,因此该文件中也只引入了app这一个模块
11.
SingleInstanTest.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio 是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何内容。
app目录下的内容
1.build
和外层的build类似,主要也是包含了一些在编译时自动生成的文件
2.libs
如果你的项目中引入了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径中去。
3.androidTest
此处是用来编写AndroidTest测试用例的,可以对项目进行一些自动化测试
4.java
java目录是放置我们所有Java代码的地方
5.res
项目中所使用到的图片、布局、字符串等资源都要存放在这个目录下。这个目录还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下
6.AndroidManifest.xml
这是整个Android项目的配置文件,在应用程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明
7.test
此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式
8..gitignore
这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore类似
9.app.iml
IntenlliJ IDEA项目自动生成的文件
10.build.gradle
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置
11.proguard-rules.pro
这个文件用于指定项目代码的混淆规则,当代吗开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读
没有在AndroidManifest.xml中注册的h活动是不能使用的
主活动的注册:要包含<intent-filter.../>里的两行代码
<activity android:name=".SingleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
SingleActivity是继承自AppCompatActivity,这是一种向下兼容的Activity,可以将Activity在各个版本中增加的特性和功能最低兼容到Android 2.1系统。Acticity是Android系统提供的一个活动基类,我们项目中的所有活动都必须继承它或者它的子类才能拥有Activity的特性(AppCompatActivity 是Activity的子类)
public class SingleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single);
}
}
1.3.5 res
所有以drawable开头的文件夹都是用来放图片的
所有以mipmap开头的文件夹都是用来放应用图标的
所有以values开头的文件夹都是用来放字符串(strings.xml)、样式(styles.xml)、颜色(colors.xml)等配置的
layout文件夹是用来放布局文件的
之所以有这么多mipmap开头的文件夹,主要是为了让程序能更好的兼容各种设备。drawable文件夹也应该一样,在制作程序的时候最好能给同一张图片提供几个不同分辨率的版本,分别放在这些文件夹下,然后当程序运行的时候,会自动根据当前运行设备分辨率的高低选择加载哪个文件夹下的图片。
引用资源:比如在res/values/strings.xml下
<resources>
<string name="app_name">SingleInstanTest</string>
</resources>
在代码中通过R.string.app_name引用
在XML文件中通过@string/app_name引用
1.4 日志工具Log
Log.e( ) :第一个参数是tag,一般传入当前类名。第二个参数是msg,即想要打印的具体内容
快捷键: 运行项目 Shift + F10
自动补全Log : 输入loge再按Tab
在onCreate()外面输入logt 再按Tab,会以当前类名作为值生成TAG常量
logcat还能添加过滤器
还有关键字过滤