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. 【TTS】文本转语音?如何不调用第三方api来实现,使用pyttsx3

    @ 目录 前言 安装pyttsx3 实现TTS接口 后言 前言 本次的实现需求有点困难,所以也就记录下来,别到时候都忘了. 首先先不说正题,有兴趣的可以看一看: 1.目标是实现一个可以传一个文本就返回 ...

  2. java进阶(8)--匿名类

    一.概念 1.内部类:类的内部定义了一个类 2.内部类分类:静态内部类.实例内部类.局部内部类 3.缺点:内部类的可读性比较差,尽量不用 2.匿名内部类:局部内部类的一种   二.匿名内部类的缺点 1 ...

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

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

  4. JAVA作业—字符串操作

    ------------恢复内容开始------------ ------------恢复内容开始------------ ------------恢复内容开始------------ ------- ...

  5. pandas电子表格的读取(pandas中的read_excel)

    上面那篇文章中,初步介绍了一个文本文件的读取:接下来介绍另外一种常见的本地数据格式,那就是Excel电子表格,如果读者在学习或者工作中需要使用Python分析某个Excel表格数据,改如何完成第一个的 ...

  6. [HDU6793] Tokitsukaze and Colorful Tree

    题目 又是一个条历新年,窗前的灼之花又盛开了. 时隔多年,现在只有这一棵树上盛开着残存的 \(n\) 朵灼之花了. 尽管如此,这些灼之 花仍散发出不同色彩的微弱的光芒. 灼之花的生命极为短暂,但它的花 ...

  7. Java算法——分治法

         一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简 ...

  8. Java多线程_Atomic

    1.什么是Atomic?Atomic,中文意思是“原子的”,在java多线程中,有这样的一个包: java.util.concurrent.atomic——线程安全的原子操作包 这是JDK1.5的版本 ...

  9. 第5章 if 语句

    第5章 if 语句 5.1 一个简单示例 cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': pr ...

  10. Swift Expressible literal

    Swift Expressible Literal 引子 从一个面试题说起.有如下代码: struct Book { let name: String } let book: Book = " ...