1. Android 系统架构。
(图片来源:百度百科)
按照从低到高的层次进行介绍。
①最底层为Linux 内核层,作为硬件和软件栈之间的抽象层,主要为Android设备的硬件提供驱动,同时Android的核心系统服务也依赖于Linux内核。
②往上走是系统运行库层,其中的核心类库通过C/C++为Android系统提供了主要的特性支持,运行时库主要提供了Java核心库和虚拟机,使之允许开发者使用Java语言来编写Android应用。
③再往上是应用框架层,主要提供各种API供开发者使用。
API:百度百科的介绍是这样的,API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。博主一开始很难理解,感觉百度百科的介绍比较抽象。于是寻访网络各处发现,API不是一个绝对的概念,在不同环境下是有不同含义的,它可以是一个提供特定功能的软件,也可以是整个服务器、整个应用,或者是一个应用的一部分。关于API的理解,指路优秀文章:https://baijiahao.baidu.com/sid=1597881116201407882&wfr=spider&for=pc
④最上面的一层为应用层,很好理解,因为该层里的东西就是我们平常使用的手机里的各种应用程序。
2. Android 系统提供的东西。
3.分析第一个 Android 程序。
AndroidManifest.xml
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
说明:对 MainActivity 这个活动进行注册,其中intent-filiter里的两行代码表示 MainActivity 是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。
MainActivity.java
package com.example.why.work0117; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
说明:MainActivity 继承自 Activity ,其中 MainActivity 中有一个onCreate( )方法,需要在活动被创建时执行,另一个 setContentView( ) 方法则用于定义我们最开始看到的 Hello World!
除此之外,MainActivity 也可以继承自 AppCompaActivity,这是一种向下兼容的 Activity ,其不同之处在于:1.主界面增加带有toolbar的标题栏;2.theme主题只能用android:theme=”@style/AppTheme (appTheme主题或者其子类),而不能用 android:style, 否则会提示错误。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.why.work0117.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
说明:代码中的 TextView 是 Android 系统提供的一个空间,用于显示文字,而我们可以在 TextView 的 text 中可以看到已经定义好的 "Hello World! "
4. 关于 build.gradle 文件。
功能:构建项目。Gradle作为一个先进的项目构建工具,使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置。
最外层目录下的 build.gradle 文件
buildscript { repositories { jcenter( )//代码托管仓库 } dependencies { classpath ‘com.android.tools.build:gradle:2.3.0‘ //声明Gradle插件:因为Gradle也可以用于Java、C++等项目的构建,所以在构建Android项目前要先进行声明。 } } allprojects { repositories { jcenter( ) } }
app目录下的 build.gradle 文件
apply plugin: ‘com.android.application‘ //表示这是一个应用程序模块 android {//配置项目构建的属性 compileSdkVersion 29 //项目的编译版本 buildToolsVersion "29.0.2" //项目构建工具的版本 defaultConfig {//对项目的细节进行更多配置 applicationId "com.example.why.work0117" //项目的包名 minSdkVersion 15 //项目最低兼容的 Android 系统版本 targetSdkVersion 29 //已经做过充分测试的目标版本 versionCode 1 //项目的版本号 versionName "1.0" //项目的版本名 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes {//生成安装文件的相关配置 release {//生成正式版安装文件的配置 minifyEnabled false //用于指定是否对项目的代码进行混淆 proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ //用于指定混淆时用的规则文件 } } } dependencies {//指定当前项目所有的依赖关系(本地依赖、库依赖、远程依赖) compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) //本地依赖声明 androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, { exclude group: ‘com.android.support‘, module: ‘support-annotations‘ }) compile ‘com.android.support:appcompat-v7:29.+‘ //远程依赖声明 testCompile ‘junit:junit:4.12‘ //声明测试用例库 }
原文:https://www.cnblogs.com/Amanda-Y/p/12671685.html