Android被Linux内核主线中除名原因
Android只采用了Linux内核,其他Linux内容未采用
Android的更新由google一家说了算,违背开源意愿
只能采用Java进行程序开发
Android系统架构
Linux内核层
为各种硬件提供底层驱动
系统运行层
提供一些c/c++库
Android运行时库
应用框架层
提供各种API
应用层
程序员开发的app
Android开发目录(Project模式)
- .gradle和.idea--------自动生成
- app----------代码和资源
- build---------编译时自动生成的文件
- gradle---------gradle wrapper的配置文件
- .gitignore----------指定目录或文件不进行版本控制
- build.gradle--------全局gradle构建脚本
- gradle.properties------全局gradle配置文件
- gradlew和gradlew.bat----------在命令行中执行gradlew命令
- xxxxx.iml-----------表示为idea项目
- local.properties--------指定android sdk路径
- settings.gradle----------指定所有引入模块
APP目录
- build
- libs--------使用的第三方jar包
- androidTest--------测试用例
- java-------源代码
- res--------资源文件
- AndroidManifest.xml---------配置文件
- test--------Unit Test用例
- .gitignore
- app.iml
- build.gradle
- proguard-rules.pro--------防止代码被**,指定项目代码的混淆规则
RES目录
- drawable---------存放图片
- mipmap----------存放图标
- layout------------存放布局文件
- values--------存放字符串、样式、颜色等
build.gradle文件(根目录)
repositories--------代码仓库配置
google()-----google自己的代码仓库
jcenter()-----第三方开源库
dependencies----------插件声明,具体格式如图
build.gradle文件(app目录)
前三行为插件声明
android闭包中为项目的各种属性:
- compileSdkVersion--------编译版本
- buildToolsVersion----------构建工具版本
defaultConfig闭包---------更多细节
- applicationId-------应用唯一标识符
- minSdkVersion-------最低兼容版本
- targetSdkVersion--------目标版本
- versionCode------项目版本号
- versionName------项目版本名
- testInstrumentationRunner--------在当前项目中启用JUnit测试
buildTypes---------生成apk的相关配置,通常由debug、release闭包组成,但是debug可以忽略
- minifyEnabled--------是否启用混淆
- proguardFiles---------指定混淆规则文件
dependencies----------指定项目的依赖关系
- implementation fileTree------本地以来声明
- implementation----------远程依赖声明
- testImplementation、androidTestImplementation--------声明测试用例库
调试技巧
使用Log工具
- Log.v()-------意义最小的信息
- Log.d()-------调试信息
- Log.i()-------比较重要的信息
- Log.w()------警告
- Log.e()--------错误
格式:Log.d(TAG,MESSAGE)