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特色

  • 四大组件

    1. 活动

    程序的门面,应用中看到的东西,都放在活动中。

    1. 服务

    后台默默运行,无法看到,即使退出应用,服务任然运行。

    1. 广播接收器

    接受各处广播,比如电话、短信等,也可以发送广播消息。

    1. 内容提供器

    应用程序之间共享数据,读取系统电话簿中的联系人。

  • 系统控件

  • 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.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的更多相关文章

  1. [翻译]开发文档:android Bitmap的高效使用

    内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...

  2. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  3. Android项目部署时,发生AndroidRuntime:android.view.InflateException: Binary XML file line #168: Error inflating class错误

    这个错误也是让我纠结了一天,当时写的项目在安卓虚拟机上运行都很正常,于是当我部署到安卓手机上时,点击登陆按钮跳转到用户主界面的时候直接结束运行返回登陆界面.    当时,我仔细检查了一下自己的代码,并 ...

  4. 基于命令行编译打包phonegap for android应用 分类: Android Phonegap 2015-05-10 10:33 73人阅读 评论(0) 收藏

    也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,E ...

  5. 转载:Android自动化测试- 自动获取短信验证码

    前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...

  6. Android入门(六):Android控件布局属性全解

    第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中 (Hrizontal表示水平)android:layout_centerVertical 垂 ...

  7. NDK开发历程(一):android native code的调试方法

    引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...

  8. 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战

    概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...

  9. Android总结篇系列:Android Intent

    Intent在Android中的重要性不言而喻.本文主要总结下Intent使用过程中需要注意的一些问题. 1.隐式Intent AndroidManifest.xml声明时<intent-fil ...

随机推荐

  1. vue调起微信JSDK 扫一扫,相册等需要注意的事项

    在VUE里面需要注意的第一个问题就是路由得设置成 2:第二个就是 跳转路由的时候 不要用this.$router.push 或者this.$router.replace  前者在ios 和安卓端都调不 ...

  2. SpringBoot --- 自定义 Starter

    SpringBoot --- 自定义 Starter 创建 1.需要创建一个新的空工程 2.新的工程需要引入两个模块 一个Maven 模块 作为启动器 一个SpringBoot 模块 作为自动配置模块 ...

  3. 客户端操作 2 HDFS的API操作 3 HDFS的I/O流操作

    2 HDFS的API操作 2.1 HDFS文件上传(测试参数优先级) 1.编写源代码 // 文件上传 @Test public void testPut() throws Exception { Co ...

  4. 【接口自动化】Python+Requests接口自动化测试框架搭建【三】

    经过上两篇文章的讲解,我们已经完成接口自动化的基础框架,现在开始根据实际项目丰满起来. 在PyCharm中新建项目,项目工程结构如下: config:配置文件夹,可以将一些全局变量放于配置文件中,方便 ...

  5. MYSQL语法(一)

    数据表准备: CREATE TABLE student3 ( id int, name varchar(20), age int, sex varchar(5), address varchar(10 ...

  6. 你所不知道的Spring的@Autowired实现细节

    前言 相信很多Java开发都遇到过一个面试题:Resource和Autowired的区别是什么?这个问题的答案相信基本都清楚,但是这两者在Spring中是如何实现的呢?这就要分析Spring源码才能知 ...

  7. K8s 1.18.6版本基于 ingress-nginx 实现金丝雀发布(灰度发布)

    K8s 1.18.6版本基于 ingress-nginx 实现金丝雀发布(灰度发布) 环境 软件 版本 kubernetes v1.18.6 nginx-ingress-controller 0.32 ...

  8. 安卓手机没有twrp的情况,如何下刷入magisk并获得root权限.

    安装adb工具 https://dl.google.com/android/repository/platform-tools_r29.0.6-windows.zip 从以上地址下载,然后解压到任意目 ...

  9. CentOS 7环境下大量创建账号的方法

    1 一些账号相关的检查工具 1.1 pwck命令 pwck 这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息,还可以比对 /etc/passwd /etc ...

  10. Java动态代理(二)——jdk动态代理

    一.什么是动态代理?代理类在程序运行时创建的代理方式被成为动态代理.动态代理的代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的.相比于静态代理, 动态代理的 ...