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 ...
随机推荐
- Android学习进程 Java引用 Rxjava MVP
第一份Android开发工作,以便于记录学习进程 Java引用 Java没有显式的使用指针,但对象的访问仍是通过指针实现的,所以直接对象之间的赋值会导致存储空间是数据的改变,如设置两个对象,其中对象一 ...
- 记一次mysql数据库被勒索(中)
背景在上一篇文章里面已经提过了. 现在面临的问题是nextcloud没有mysql数据库,用不起来了. 因为文件没丢,一种方法是启动新的mysql数据库,把文件重新提交一次. 为了程序员的面子,没有选 ...
- SpringMVC使用Session
Session在用户登录,一些特殊场合在页面间传递数据的时候会经常用到 @ 目录 修改IndexController check.jsp 效果 修改IndexController 映射 /check ...
- DML语言(数据操纵语言)
#DML语言/*数据操作语言:插入:insert修改:update删除:delete */ #一.插入语句#方式一:经典的插入/*语法:insert into 表名(列名,...) values(值1 ...
- 使用分区挂载 ftp 目录
ftp挂载分区上去后无法识别的问题困扰了我好几天,今天有时间把它研究了一下,拿出来与大家分享一下. ftp目录挂载分区前与挂载分区后的区别[root@localhost ~]# ls -Zd /var ...
- 区块链入门到实战(20)之以太坊(Ethereum) – 虚拟机(E.V.M.)
作用:执行智能合约代码的引擎 以太坊(Ethereum)虚拟机是执行智能合约代码的引擎. 可以用某种语言,例如Solidity语言,开发智能合约程序,编译成以太坊(Ethereum)虚拟机支持的字节码 ...
- 每日一学-python calendar
python模块之calendar方法详细介绍 1.首先我们看下calendar的内置函数和相关的属性: import calendar dir(calendar) ['Calendar', 'EPO ...
- 报错:ER_NO_DEFAULT_FOR_FIELD: Field 'status' doesn't have a default value
小白入门级错误,数据库插入数据时报错;ER_NO_DEFAULT_FOR_FIELD: Field 'status' doesn't have a default value 百度说是my.ini文 ...
- 06.深入学习redis replication的完整流程和原理
一.replication的完整流程 slave配置master ip和port # slaveof <masterip> <masterport> slaveof 127.0 ...
- android开发之java的一些基础知识详解,java编程语法,扎实自己的android基本功
1.对象的初始化 (1)非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化. 基本类型:int型,初始化为0. 如果为对象:这些对象会按顺序初始化. ※在所有类成员初始化完成之 ...