第1章 開始啓程——你的第一行Android代碼
1.1 Android系統四層架構:(從底至頂)
-
Linux內核層:爲Android設備的各種硬件提供底層驅動,如顯示驅動、音頻驅動、照相機驅動等
-
系統運行庫層:
- 通過一些C/C++庫爲Android系統提供主要的特性支持,如SQLite庫提供了數據庫的支持
- Android運行時庫,主要提供了一些核心庫,開發者可以使用Java語言編寫程序
- 包含Dalvik虛擬機(5.0系統後改爲ART運行環境)
-
應用框架層:提供構建應用程序時用到的各種API
-
應用層:安裝在手機上的應用程序,包括系統自帶的聯繫人、短信等,或者自己在應用商店下載的微信等
架構具體如下圖:
1.2 Android應用開發特色
-
四大組件:
- 活動(Activity):應用程序的前臺
- 服務(Service):應用程序的後臺
- 廣播接收器(Broadcast Receiver):接收廣播信息,比如電話、短信等
- 內容提供器(Content Provider):使得應用程序之間可以共享數據
-
豐富的系統組件
-
SQLite數據庫:Android系統自帶,是一種輕量級、速度快的嵌入式關係型數據庫
-
強大的多媒體
-
地理位置定位
1.3 搭建開發環境
需要準備的工具:
- JDK
- Android SDK:谷歌提供的Android開發工具包
- Android Studio
1.4 Android程序部分重要目錄或文件
文件名 | 作用 |
---|---|
java | 放置所有java代碼 |
res | 放置資源文件,比如圖片、佈局等 |
AndroidManifest.xml | 項目配置文件,在這裏聲明組件、添加權限聲明等 |
build.gradle | app模塊的gradle構建腳本,在這裏指定項目構建相關的配置 |
libs | 放置第三方jar包 |
AndroidManifest.xml
文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworldapplication">
<application
...
<!--對MainActivity這個活動進行註冊-->
<activity android:name=".MainActivity">
<intent-filter>
<!--下面兩行代碼表示MainActivity是這個項目的主活動-->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity
public class MainActivity extends AppCompatActivity {
//繼承於AppCompatActivity,實現向下兼容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//引入activity_main佈局
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".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" />
</LinearLayout>
1.5 使用Android的日誌工具Log
方法 | 作用 |
---|---|
Log.v() | 對應級別verbose。打印一些最爲瑣碎、意義最小的日誌信息 |
Log.d() | 對應級別debug。打印一些調試信息 |
Log.i() | 對應級別info。打印一些比較重要的數據 |
Log.w() | 對應級別warn。打印一些警告信息 |
Log.e() | 對應級別error。打印程序的錯誤信息 |
使用Log而不使用System.out:System.out不可控制日誌打印、打印時間無法確定、不能添加過濾器、日誌沒有級別區分…