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 ...
随机推荐
- 【TTS】文本转语音?如何不调用第三方api来实现,使用pyttsx3
@ 目录 前言 安装pyttsx3 实现TTS接口 后言 前言 本次的实现需求有点困难,所以也就记录下来,别到时候都忘了. 首先先不说正题,有兴趣的可以看一看: 1.目标是实现一个可以传一个文本就返回 ...
- java进阶(8)--匿名类
一.概念 1.内部类:类的内部定义了一个类 2.内部类分类:静态内部类.实例内部类.局部内部类 3.缺点:内部类的可读性比较差,尽量不用 2.匿名内部类:局部内部类的一种 二.匿名内部类的缺点 1 ...
- 客户端操作 2 HDFS的API操作 3 HDFS的I/O流操作
2 HDFS的API操作 2.1 HDFS文件上传(测试参数优先级) 1.编写源代码 // 文件上传 @Test public void testPut() throws Exception { Co ...
- JAVA作业—字符串操作
------------恢复内容开始------------ ------------恢复内容开始------------ ------------恢复内容开始------------ ------- ...
- pandas电子表格的读取(pandas中的read_excel)
上面那篇文章中,初步介绍了一个文本文件的读取:接下来介绍另外一种常见的本地数据格式,那就是Excel电子表格,如果读者在学习或者工作中需要使用Python分析某个Excel表格数据,改如何完成第一个的 ...
- [HDU6793] Tokitsukaze and Colorful Tree
题目 又是一个条历新年,窗前的灼之花又盛开了. 时隔多年,现在只有这一棵树上盛开着残存的 \(n\) 朵灼之花了. 尽管如此,这些灼之 花仍散发出不同色彩的微弱的光芒. 灼之花的生命极为短暂,但它的花 ...
- Java算法——分治法
一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简 ...
- Java多线程_Atomic
1.什么是Atomic?Atomic,中文意思是“原子的”,在java多线程中,有这样的一个包: java.util.concurrent.atomic——线程安全的原子操作包 这是JDK1.5的版本 ...
- 第5章 if 语句
第5章 if 语句 5.1 一个简单示例 cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': pr ...
- Swift Expressible literal
Swift Expressible Literal 引子 从一个面试题说起.有如下代码: struct Book { let name: String } let book: Book = " ...