# unit1
## 1.安卓版本
最新数据访问[维基百科](https://zh.wikipedia.org/wiki/Android%E7%89%88%E6%9C%AC%E5%88%97%E8%A1%A8)
> 2008年,android1.0
2011年,android3.0,平板失败
同年10月,android4.0,无差别使用
2014年,android5.0,ART代替Dalvik虚拟机,Android Wear,Android Auto,Android TV,穿戴、汽车、电视。
2015年,android6.0,运行时权限
2016年,android7.0,多窗口模式
## 2.Android特色 ##
- 四大组件
1. __活动__
> 程序的门面,应用中看到的东西,都放在活动中。
2. __服务__
> 后台默默运行,无法看到,即使退出应用,服务任然运行。
3. __广播接收器__
> 接受各处广播,比如电话、短信等,也可以发送广播消息。
4. __内容提供器__
> 应用程序之间共享数据,读取系统电话簿中的联系人。
- 系统控件
- SQLite数据库
- 多媒体
- 地理定位
## 3.创建开发环境 ##
- JDK
> Java软件开发包,包括运行环境,工具集合,开发类库。
- SDK
> 谷歌提供的Android开发工具包
- Android Studio
## 4.解析Android目录结构 ##
> .grale和.idea _自动生成文件,不需要关心_
> ___app___
>> build _不需要关心_
>> libs _jar包存放_
>> __src__
>>> androidTest _测试用例,自动化测试_
>>> __main__
>>>> __java__ Java代码存放处
>>>> __res__ 资源存放处,drawable图片,layout布局,values字符串
>>>> __AndroidMainfast.xml__ 四大组件的注册和配置
>>> test Unit Test _测试_
>> .gitignore _模块内版本控制_
>> app.iml _标志,不需要关心_
>> __build.gradle__ _gradle构建脚本_
>> proguard-rules.pro _混淆规则,不希望代码破解,代码混淆_
> build _编译自动生成文件,不需要关心_
> gradle _gradle wrapper配置文件_
> .gitignore _版本控制_
> __build.gradle__ _全局构建脚本_
> gradle.properties _全局配置文件_
> gradlew和gradlew.bat _命令行执行gradle命令。.bat是在Windows系统中运行的_
> HelloWorld.iml _标识InteliJ IDEA项目,不改_
> local.properties _指定SDK路径,不改_
> settings.gradle _引入模块_
## 5.运行解析 ##
### 1.AndroidMainfest.xml ###
注册活动,没有在A.xml中注册的活动不能使用。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher" // 图标
android:label="@string/app_name" // 应用名称
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter> // 确定主活动
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
### 2.Java.xxActivity ###
MainActivity继承AppCompatActivity(Activity的子类)。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //引入布局的方法
}
}
>R.layout.hello_world 获取引用
### 3.res ###
- drawable 图片
- mipmap 图标
- layout 布局
- values
* string 字符串
* color 颜色
* stytle 样式
> @String/hello_world 获取引用
### 4.build.gradle ##
Android Studio采用Gradle构建项目。
>Gradle构建工具,基于Groovy领域的特定语言(DSL)声明项目设置,摒弃了XML(如Ant和Maven)繁琐配置
buildscript {
repositories {
google()
jcenter() //代码托管到jcenter上
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2' //声明一个Gradle插件
}
}
allprojects {
repositories {
google()
jcenter()
}
}
>gcenter,代码管理仓库。很多Android开源项目都选择其托管项目
>声明Gradle插件,因为Gradle不止Android,Java、C++都可以构建。
apply plugin: 'com.android.application' //应用程序模块,可以直接运行
//也可以添加'com.android.library'库模块,依附于其他程序模块运行
android { // 项目细节配置
compileSdkVersion 29 // 编译版本 29表示Android 10.0
buildToolsVersion "30.0.2" // 构建工具版本
defaultConfig {
applicationId "com.example.unit3listviewtest"
minSdkVersion 15 // 最低兼容
targetSdkVersion 29 // 目标版本测试
versionCode 1 // 项目版本号
versionName "1.0" // 项目版本名
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes { // 生成安装配置
debug { // 测试版安装文件配置,可以忽略不写
}
release { // 正式版安装文件配置
minifyEnabled false // 代码是否混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// 第一个txt是安卓SDK目录下,所有项目通用的混淆规则
// 第二个pro是当前项目根目录,当前项目的混淆规则
}
}
}
dependencies { // 指定所有项目的依赖关系
implementation fileTree(dir: 'libs', include: ['*.jar']) // 本地依赖,本地lib下的jar包
implementation 'androidx.appcompat:appcompat:1.2.0' // 远程依赖
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
testImplementation 'junit:junit:4.12' // 声明测试用例库
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
> 依赖关系分三种
> 1.本地依赖 本地jar包或目录依赖
> 2.库依赖 对项目中的库模块添加依赖
> 3.远程依赖 对jcenter库上的开源项目添加依赖关系,域名:组名:版本号
## 6.日志工具 ##
android日志工具类Log(android.util.Log),5中方法使用
>__Log(tag,msg)
>tag:打印信息过滤,一般当前类名
>msg:打印的具体内容__
>1.Log.v(verbose)打印琐碎信息
>2.Log.d(debug)打印调试信息
>3.Log.i(info)打印比较重要的信息
>4.Log.w(warn)打印警告信息,潜在需要修复的地方
>5.Log.e(error)错误信息,需要尽快修复
### 添加过滤器 ###
logcat中可以快速添加三种过滤器
>Firebase,谷歌提供的分析工具
>No Filters没有过滤器,所有的日志显示
>Edit Filter Configuration,自定义过滤器
网友评论