一、安卓系统架构(四层架构)
1.Linux内核层:为安卓设备的各种硬件提供底层的驱动
显示驱动、音频驱动、照相机驱动、蓝牙驱动、WIFI驱动、电源管理
2.系统运行库层
C/C++库提供提醒支持,SQLite库提供数据库支持,OpenGL|ES提供3D绘图支持,Webkit库提供浏览器内核支持
3.应用框架层
构建应用程序时可能用到的各种API,安卓自带的一些核心应用就是用的这个API
4.应用层
手机上的应用程序(.apk安装后)
二、四大组件
活动Activity、服务Service、广播接收器Broadcast Receiver、内容提供器Content Provider
三、安装安卓准备工具
1.安装JDK
下载网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
配置好jdk的环境变量后才能安装安装Android SDK
配置:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
2.安装Android SDK
下载网址:https://pan.baidu.com/s/1mq3f1n5A14l6VHRU1G6PeQ
3.安装Android Studio
下载网址:http://www.android-studio.org/
安装教程:https://blog.csdn.net/u014726937/article/details/52846502
四、创建你的第一个项目
教程:https://jingyan.baidu.com/article/90bc8fc84293b8f653640c8d.html
创建之后可能存在的一些报错:
1.Android SDK没有引用成功,提示SDK Manager的报错
菜单栏->Tools->Android->SDK Manager-> Appearance & Behavior,打开后:
定位好你的Android SDK位置即可
2.NDK没有引用成功
先安装好这两个工具
看教程:https://jingyan.baidu.com/album/7f41ecec231d16593d095c03.html
3.可能存在识别不了AppCompatActivity,找不到这个类
仔细看会发现是上方import Adroid.support.v7...报错,v7找不到
菜单栏->File->Project Structure...,打开后
接着添加新的依赖库:com.android.support:appcompat-v7这个开头的
参考博客:https://blog.csdn.net/a873282620/article/details/53068392
五、项目中的各种文件
参考文章:https://blog.csdn.net/qq_28377423/article/details/72991776
manifests:
AndroidManifest.xml:APP的配置信息
java:主要为源代码和测试代码
res:主要是资源目录,存储所有的项目资源
drawable:存储一些xml文件,-*dpi表示存储分辨率的图片,用于适配不同的屏幕。
-mdpi:320x480
-hdpi:480x800、480x854
-xhdpi:至少960x720
-xxhdpi:1280x720
layout:存储布局文件
mipmap:存储原声图片资源
values:存储app引用的一些值
- colors.xml: 存储了一些color的样式
- dimens.xml:存储了一些公用的dp值
- strings.xml: 存储了引用的string值
- styles.xml: 存储了app需要用到的一些样式
Gradle Scripts:build.gradle为项目的gradle配置文件
我们可以获取到res下的一些引用
<resources>
<string name="app_name">MProject</string>
</resources>
(1)在代码中通过R.string.app_name可以获取该字符串的引用
(2)在XML中通过@string/app_name可以获得该字符串的引用
其中string可以替换成drawable,mipmap,layout等res下的资源
六、build.gradle文件
这个文件一共有两个,一个在外层,一个在app文件夹下
1.外层的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
repositories是仓库,jcenter()是一个代码托管仓库,我们可以在项目中轻松引用任何jcenter上的开源项目
dependencies是依赖,classpath是声明路径,后面的com.android.tools.build:gradle:2.2.0是一个Gradle插件,我们需要它来构建安卓项目
2.app文件夹下的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.0"
defaultConfig {
applicationId "com.movieproject.yj.mproject"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
}
com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块,区别在于,应用程序模块是可以直接运行的,而库模块是作为代码库依附于别的应用程序模块来运行
compileSdkVersion用于指定项目的编译版
buildToolsVersion用于指定项目构建工具的版本
defaultConfig表示基础配置
applicationId表示项目的包名,之前已经指定过包名了,如果后面想修改包名,就是这里修改
minSdkVersion表示指定项目最低兼容的Adnroid系统版本
targetSdkVersion表示你在该目标版本上已经做过了充分的测试
versionCode表示指定项目的版本号 versionName 表示指定项目的版本名,两个属性在生成安装文件的时候非常重要
buildTypes 用于指定生成安装文件的相关配置
dependencies表示依赖库,就是前面添加v7引用的依赖库,是同一个东西
七、使用Android的Log日志工具
先要引用andriod.util.Log
里面有5个方法:
1.Log.v() 打印最为琐碎的、意义最小的日志信息(verbose)
2.Log.d()打印一些调试信息(debug)
3.Log.i()打印一些比较重要的数据(info)
4.Log.w()打印一些警告信息(warn)
5.Log.e()打印一些程序上的错误(error)
日志方法有2个参数,第一个是tag,用于对打印信息的过滤
第二个是msg,表示想要打印的具体内容
tag值的小技巧:我们在OnCreate()方法外面输入logt,然后按下tab键,这时就会以当前的类名作为值自动生成一个TAG常量
观看日志通过logcat进行查看
logcat位于AndroidStudio下面的AndroidMonitor里