首页 > 其他 > 详细

《第一行代码》chapter 1

时间:2020-04-10 10:40:58      阅读:82      评论:0      收藏:0      [点我收藏+]

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‘ //声明测试用例库
}

 

《第一行代码》chapter 1

原文:https://www.cnblogs.com/Amanda-Y/p/12671685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!