Unit1:Android
unit1
1.安卓版本
最新数据访问维基百科
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特色
四大组件
- 活动
程序的门面,应用中看到的东西,都放在活动中。
- 服务
后台默默运行,无法看到,即使退出应用,服务任然运行。
- 广播接收器
接受各处广播,比如电话、短信等,也可以发送广播消息。
- 内容提供器
应用程序之间共享数据,读取系统电话簿中的联系人。
系统控件
SQLite数据库
多媒体
地理定位
3.创建开发环境
- JDK
Java软件开发包,包括运行环境,工具集合,开发类库。
- SDK
谷歌提供的Android开发工具包
- Android Studio
4.解析Android目录结构
.grale和.idea
自动生成文件,不需要关心
appbuild
不需要关心
libs jar包存放
srcandroidTest 测试用例,自动化测试
mainjava 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.d(tag,msg)
tag:打印信息过滤,一般当前类名
msg:打印的具体内容__
| 名称 | 等级 | 解释 |
|---|---|---|
| Log.v | verbose | 打印琐碎信息 |
| Log.d | debug | 打印调试信息 |
| Log.i | info | 打印比较重要的信息 |
| Log.w | warn | 打印警告信息,潜在需要修复的地方 |
| Log.e | error******** | 错误信息,需要尽快修复 |
添加过滤器
| 过滤器名称 | 作用 |
|---|---|
| Firebase | 谷歌提供的分析工具 |
| No Filters | 没有过滤器,所有的日志显示 |
| Edit Filter Configuration | 自定义过滤器 |
Unit1:Android的更多相关文章
- [翻译]开发文档:android Bitmap的高效使用
内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Android项目部署时,发生AndroidRuntime:android.view.InflateException: Binary XML file line #168: Error inflating class错误
这个错误也是让我纠结了一天,当时写的项目在安卓虚拟机上运行都很正常,于是当我部署到安卓手机上时,点击登陆按钮跳转到用户主界面的时候直接结束运行返回登陆界面. 当时,我仔细检查了一下自己的代码,并 ...
- 基于命令行编译打包phonegap for android应用 分类: Android Phonegap 2015-05-10 10:33 73人阅读 评论(0) 收藏
也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,E ...
- 转载:Android自动化测试- 自动获取短信验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...
- Android入门(六):Android控件布局属性全解
第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中 (Hrizontal表示水平)android:layout_centerVertical 垂 ...
- NDK开发历程(一):android native code的调试方法
引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...
- 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...
- Android总结篇系列:Android Intent
Intent在Android中的重要性不言而喻.本文主要总结下Intent使用过程中需要注意的一些问题. 1.隐式Intent AndroidManifest.xml声明时<intent-fil ...
随机推荐
- day2 变量
变量是在程序中表现为不重复的名字,只需定义一个名字,给这个名字变量赋值即可 作用 在内存中开辟一块空间.起了一个别名,用了访问和存储空间中的数据 在编写 Python 程序过程中, 经常需要给标识 ...
- 在Linux使用虚拟环境
定义 “虚拟环境”,是python解释器的一个私有副本.在这个环境中,你可以安装私有包,而且不会影响系统中安装的全局python解释器. 作用 为每个程序单独创建虚拟环境时,可以保证程序只能访问虚拟环 ...
- OpenCV Error - Core.hpp header must be compiled as C++
在XCode 里编译OpenCV的时候,经常报如题类似的错误. 简单解决办法: 把 *.m 文件重命名为 *.mm 即可
- Redis设计与实现——数据结构与对象
SDS 简单动态字符串 在redis数据库里面,包含字符串值得键值对在底层都是由SDS实现的. redis > set msg "hello world" 1)键值对的键是 ...
- Windows server 2008R2 中sql server的搭建
一.安装sql server Step1:下载sql server 2008 r2 standard,解压到Windows的C:\下. Step2:打开安装程序,进行sql server的安装 Ste ...
- 进阶6:连接查询 二、sql99语法
#二.sql99语法/*语法: select 查询列表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 [where 筛选条件] [group by 分组] [having ...
- golang fmt包
fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数 ...
- Dubbo直连方式
目录 一.dubbo概述 1. 基本架构 2. dubbo 支持的协议 二.直连方法 三.创建服务提供者 1. 思路 1. 创建maven web 2. pom.xml 3. 创建实体 4. 创建服务 ...
- springMVC入门(一)------springMVC基本概念与安装
springMVC简介 springMVC是一个基于MVC的web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. springMVC安装 本例中使用 ...
- ethtool 设置网卡接收哈希
检查 [root@localhost]# ethtool -n eth1 rx-flow-hash tcp4 TCP over IPV4 flows use these fields for comp ...