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. day2 变量

    变量是在程序中表现为不重复的名字,只需定义一个名字,给这个名字变量赋值即可  作用  在内存中开辟一块空间.起了一个别名,用了访问和存储空间中的数据 在编写 Python 程序过程中, 经常需要给标识 ...

  2. 在Linux使用虚拟环境

    定义 “虚拟环境”,是python解释器的一个私有副本.在这个环境中,你可以安装私有包,而且不会影响系统中安装的全局python解释器. 作用 为每个程序单独创建虚拟环境时,可以保证程序只能访问虚拟环 ...

  3. OpenCV Error - Core.hpp header must be compiled as C++

    在XCode 里编译OpenCV的时候,经常报如题类似的错误. 简单解决办法: 把 *.m 文件重命名为 *.mm 即可

  4. Redis设计与实现——数据结构与对象

    SDS 简单动态字符串 在redis数据库里面,包含字符串值得键值对在底层都是由SDS实现的. redis >  set msg "hello world" 1)键值对的键是 ...

  5. Windows server 2008R2 中sql server的搭建

    一.安装sql server Step1:下载sql server 2008 r2 standard,解压到Windows的C:\下. Step2:打开安装程序,进行sql server的安装 Ste ...

  6. 进阶6:连接查询 二、sql99语法

    #二.sql99语法/*语法: select 查询列表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 [where 筛选条件] [group by 分组] [having ...

  7. golang fmt包

    fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Print系列函数 ...

  8. Dubbo直连方式

    目录 一.dubbo概述 1. 基本架构 2. dubbo 支持的协议 二.直连方法 三.创建服务提供者 1. 思路 1. 创建maven web 2. pom.xml 3. 创建实体 4. 创建服务 ...

  9. springMVC入门(一)------springMVC基本概念与安装

    springMVC简介 springMVC是一个基于MVC的web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. springMVC安装 本例中使用 ...

  10. ethtool 设置网卡接收哈希

    检查 [root@localhost]# ethtool -n eth1 rx-flow-hash tcp4 TCP over IPV4 flows use these fields for comp ...