Android开发-基础入门

目录

1.Android历程

2.Android的SDK和NDK

2.1SDK

2.2NDK

3.Android的应用领域

4.Android的架构

4.1应用程序层(Applications)

4.2应用程序框架层(Application Framework)

4.3核心类库,即系统运行库层(Libraries)

4.4Linux内核层(Linux Kernel)

5.Android版本历史

6.Dalvik虚拟机与java虚拟机的不同

7.ART

8.Android系统四大组件

9.搭建开发环境

9.1 JDK

9.2 Android SDK

9.3 Android Studio

10.Android Studio使用

11.Android 程序结构

12.详解build.gradle文件

13.Android程序打包


 

1.Android历程

Andy Rubin,Android开发领头人,原google副总裁。

2005年,google收购Android公司

2007年,开放手持设备联盟成立,

2008年,首台Android手机发布-- HTC G1

2010年,Android2.3手机操作系统正式发布

2011年,Android4.0手机操作系统正式发布。

2.Android的SDK和NDK

2.1SDK

        Software Development Kit ,软件开发工具包

2.2NDK

        Android Development Kit,Android原生工具开发包

3.Android的应用领域

        车载设备,家用设备(冰箱),支付,AI,VR,

4.Android的架构

        android采用分层架构,由高到低分为4层,依次是应用程序层,应用程序框架层,核心类库,Linux内核

4.1应用程序层(Applications)

        应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层。例如系统自带的联系人程序,短信程序,还有自己开发的程序。

4.2应用程序框架层(Application Framework)

        应用程序框架层主要提供了构建应用程序时所用到的各种API。Android自带的一些核心应用就是使用这些API完成的。开发者可以通过这些API来开发自己的应用程序

 4.3核心类库,即系统运行库层(Libraries)

        核心类库中包含了系统库及Android运行时库。系统库这一层主要是通过C/C++库来为Android系统提供主要的特性支持。能够运行开发者使用java语言来编写Android应用程序。如SQLite库提供了数据库的支持,OpenGL/ES库提供了3D绘图的操作,Webkit库提供了浏览器内核的支持等。

        另外还包括了Dalvik虚拟机(5.0系统之后改为ART运行环境),它使得每一个Android应用都能运行在独立的进程中,并且拥有一个自己的Dalvik虚拟机实例。相比于java虚拟机,Dalvik虚拟机是专门为移动设备定制的,针对实际内存,CPU性能等做了优化处理

包括了专门为Android开发的基于Java的程序库,如下所示:

android.app提供应用程序模型的访问,是所有Android应用程序的基石。
android.content方便应用程序之间、应用程序组件之间的内容访问、发布、消息传递。
android.database用于访问内容提供者发布的的数据,包含SQLite数据库管理类。
android.openglOpenGL ES 3D图片渲染API的Java接口。
android.os提供应用程序访问标准操作系统服务的能力,包括消息、系统服务和进程间的通信。
android.text在设备上显示渲染和操作文本。
android.view应用程序用户界面的基础构建块。
andoird.widget丰富的预置用户界面组件集合,包括按钮、标签、列表、布局管理、单选多选按钮等。
android.webkit一系列类的集合,允许为应用程序提供内建Web浏览能力。

4.4Linux内核层(Linux Kernel)

        Android是基于Linux内核的,Linux内核层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,电源管理驱动,Wi-Fi驱动等。

5.Android版本历史

      2008年9月,谷歌正式发布了Android1.0版本。

版本号系统代号API发布时间
Android 1.0BASE12008-09
Android 1.1BASE_1_122009-02
Android 1.5CUPCAKE32009-04
Android 1.6DONUT42009-09
Android 2.0ECLAIR52009-10
Android 2.0.1ECLAIR_0_162009-12
Android 2.1.xECLAIR_MR172010-01

2.2.1

2.2.3

FROYO8

2010-05 

2011-01~11

2.3

2.3.1

2.3.2

Gingerbread9

2010-12/12 

2011-01

2.3.3

2.3.7

Gingerbread mr110

2011-02

2011-09

3.0.xHoneycomb112011-02
3.1.xHoneycomb mr1122011-05

3.2

3.2.1

3.2.6

Honeycomb mr213

2011-07

2012

4.0

4.0.1

4.0.2

Ice Cream Sandwish14

2011-10

2011-0

2011-11

4.0.0 

4.0.4

Ice Cream Sandwich mr115

2011-12

2012-03

4.1.x

4.2.x

4.3

Jelly Bean

16

17

18

2012-07/ 07/ 10

2012-11/ 11 / 2013-02

2013-07/ 10

4.4 / 4.4.1~4.4.4KitKat192013-10 / 2014-06

4.4x

4.4x.1

4.4x.2

itkat20

2014-06

2014-09

2014-10

5.0

5.1

Lollipop

21

22

2014-11/12

2015-03/04

6.0Marshmallow232015-10
7.0Nougat242016-08
7.1Nougat252016-10
8.0Oreo262017-03

 

6.Dalvik虚拟机与java虚拟机的不同

1.编译后的文件不同

       java虚拟机运行的是.class字节码文件,而Dalvik虚拟机运行的则是其专有的.dex文件。

      java虚拟机:.java -> .class -> .jar

      Dalvik虚拟机: .java -> .class -> .dex -> .odex

2.基于的架构不同

      java虚拟机是基于栈的架构,栈是一个连续的内存空间,取出和存入的速度比较慢

      Dalvik是基于寄存器的架构,寄存器是CPU上的一块缓存,寄存器的存取速度要比从内存中存取的速度快很多,这样就可以根据硬件来最大程度优化设备,更适合移动设备的使用。

7.ART

      Android 运行环境,Android4.4以上

8.Android系统四大组件

      分别为:

Activity(活动)凡是在应用中看得见的东西,都是放在活动中。
Service(服务)在后台运行,即便退出应用,仍然可以继续运行。
Broadcaset Receiver(广播接收器)

允许应用接收来自各处的广播消息,比如电话,短信等。

同样,可以向外发出广播消息。

Content Provider(内容提供者)

为应用程序之间共享数据提供了可能,比如读取电话薄

里面的联系人。

     创建放入如下,都需要继承超类

public class MainActivity extends Activity {

}

public class MyService extends Service {

}

public class MyReceiver  extends  BroadcastReceiver {

}

public class MyContentProvider extends  ContentProvider {

}

 

9.搭建开发环境

9.1 JDK

          Java开发工具包。

9.2 Android SDK

         谷歌公司提供的Android开发工具包,开发Android程序时,需要引入,来使用API。

9.3 Android Studio

10.Android Studio使用

常用快捷键

    Ctr + D : 复制光标所在行,并在此行的下面粘贴出来

11.Android 程序结构

        项目目录结构如下:

.gradle和.idea这两个目录下放置的都是Android Studio自动生成的一些文件。
app项目中的代码,资源等内容几乎都是放置在这个目录下的。
build主要包含了一些在编译时自动生成的文件。
gradle

这个目录包含了gradle wrapper配置文件,会自动联网下载。Android Studio默认

没有启用gradle wrapper,如需要打开,可以点击File-Settings-Build,Exception,Deployment-Gradle

.gitignore这个目录用来指定的目录或者文件排除在版本控制之外的。
build.gradle这是项目全局的gradle构建脚本。
gradle.properties这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
gradlew和gradlew.bat

这两个文件用来在命令行界面执行gradle命令的,其中gradlew是在Linux或Mac系统中使用,

gradlew.bat是在Windows系统中使用的。

InternetOperation.iml

项目名.iml,其中iml是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于

IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,不需要修改其内容。

local.properties

这个文件用于指定本机中的Android Studio的SDK路径,通常自动生成。如果SDK位置发生改变,

则重新修改即可。

settings,gradle这个文件用于指定项目中所有引入的模块。通常自动生成

        app模块目录下的子目录如下:

 

build

这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件

不过它的内容更加复杂。

libs第三方jar包需要放在这个目录下,放在这个目录下的jar包会自动添加到构建路径中去。
androidTest此目录用于编写Android Test测试用例的,可以对项目进行一些自动化测试
java这个目录放置所有Java代码。
res

这个目录用于放置项目中使用的图片,布局,字符串,图标等资源。其中图片放在drawable子目录下,

布局放在layout子目录下,字符串放在values子目录下, mipmap子目录:通常用于存放应用程序图标,

系统会根据手机屏幕分辨率匹配相应大小的图标

AndroidManifest.xml

AndroidManifest.xml文件(又称为清单文件),该文件是整个项目的配置文件,在程序中

定义的四大组件都需要在这个文件中注册,另外在该文件中还可以为程序添加权限。在清单文件中

配置的信息会添加到Android系统中,当程序运行时,系统会找到清单文件中配置信息,然后根据

配置信息打开相应组件。

test此目录用于编写Unit Test测试用例,是对项目进行自动化测试的另外一种方式。
.gitignore这个文件用于将app模块内指定的目录或者文件排除在版本控制之外。
app.imlIntelliJ IDEA项目自动生成的文件。
build.gradle这是app模块构建脚本,这个文件中会指定很多项目构建相关的配置。
proguard-rules.pro这个文件用于指定项目代码的混淆规则。

 

12.详解build.gradle文件

        Android Studio采用Gradle来构建项目的。Gradle是一个先进的项目构建工具,它使用一种基于Groovy的领域特定语言(DSL)来声明项目设置,摒弃了传统基于XML(如Ant和Maven)的各种繁琐配置。

        项目有两个build.gradle文件,一个位于最外层,一个位于app目录下,这两个文件对构建Android Studio项目都起到了至关重要的作用。

          最外层的build.gradle:

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

       

repositories闭包

两处repositories闭包中都声明了jcenter()这行配置,它是一个代码托管仓库

很多Android开源项目都会将项目托管到jcenter上,声明这项配置后,我们就

可用在项目中轻松的引用任何jcenter上的开源项目。

dependencies闭包

dependencies闭包使用classpath声明了一个Gradle插件。Gradle并不是专门为构建

Android项目而开发的,Java,C++等很多项目都可以使用Gradle来构建,因此,

为了构建Android项目,就需要声明这个插件。其中,最后的3.1.2是版本号

 

         app目录下的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "com.administrator.internetoperation"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    implementation project(':helper')
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

      

apply plugin

表示应用一个插件,一般有两种值可选:com.android,application表示

这是一个应用程序模块,com.android.library表示这是一个库模块。应用

程序模块和库模块最大区别在于:一个可以直接运行,一个只能作为代码

库依附于别的应用程序模块来运行。

android闭包

由于配置项目构建的各种属性。

defaultConfig子闭包:用于对项目配置

         compileSdkVersion:指定项目编译版本。

         buildToolsVersion:指定项目构建工具的版本。

         applicationId:指定项目的包名。

         minSdkVersion:指定项目最低兼容的Android系统版本。

         targetSdkVersion:指定的值表示已经在该目标版本上已经做过充分的测试,最新特性匹配最高版本。

         versionCode:项目的版本号

         versionName:项目的版本名

buildTypes子闭包:用于指定生成安装文件的相关配置

         debug子闭包:指定生成测试安装文件的配置,可以忽略不写。

         release子闭包:指定生成正式版安装文件的配置

                 minifyEnabled:用于指定是否对项目代码进行混淆。

                 proguardFiles:用于指定混淆时使用的规则文件。这里指定了两个文件,第一个proguard-android.txt

                 是在Android SDK目录下的,里面是所有项目通用的混淆规则;第二个proguard-rules.pro是在当前

                 项目的根目录下的,里面可以编写当前项目的特有混淆规则。

 

dependencies闭包

这个闭包功能强大,可以指定当前项目所有的依赖关系。通常Android一共有3种依赖方式:本地依赖,库依赖

和远程依赖。

本地依赖:可以对本地的jar包或目录添加依赖关系。

库依赖:可以对项目中的库模块添加依赖关系。

远程依赖:可以对jcenter库上的开源项目添加依赖关系。

implementation fileTree:是一个本地依赖声明,表示将libs目录下所有jar后缀的文件都添加到项目的构建

                                             路径中去。

implementation :为远程依赖声明,其中com.android.support是域名部分,用于和其他公司的库做区分;                                                 appcompat-v7是组名称,用于和同一个公司中不同的库做区分;28.0.0是版本号,用于

                                和同一个库不同的版本做区分。

implementation project:为库依赖声明。

testImplementation:用于声明测试用例库

 

  
  

 

13.Android程序打包

   打包成正式的Android安装包文件(Android Package,简称APK),其后缀名为.apk

   方法:在菜单栏中点击Build下的Generate Signed APK选项。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值