下面是一個build.gradle的文件例子
```
apply plugin: 'com.android.application'
android {
// 指定編譯用的SDK版本號。如28表示使用Android 9.0編譯
compileSdkVersion 28
// 指定編譯工具的版本號。這里的頭兩位數字必須與compileSdkVersion保持一致,具體的版本號可在sdk安裝目錄的“sdk\build-tools”下找到
buildToolsVersion "28.0.3"
defaultConfig {
// 指定該模塊的應用編號,即App的包名。該參數為自動生成,無需修改
applicationId "com.example.helloworld"
// 指定App適合運行的最小SDK版本號。如16表示至少要在Android 4.1上運行
minSdkVersion 16
// 指定目標設備的SDK版本號。即該App最希望在哪個版本的Android上運行
targetSdkVersion 28
// 指定App的應用版本號
versionCode 1
// 指定App的應用版本名稱
versionName "1.0"
}
buildTypes {
release {
// 指定是否開啟代碼混淆功能。true表示開啟混淆,false表示無需混淆。
minifyEnabled false
// 指定代碼混淆規則文件的文件名
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
```
清單文件說明
```
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld">
<!-- application節點指定了該App在手機桌面上顯示的圖標、名稱、風格等信息 -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- activity節點指定了該App擁有的活動頁面信息 -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
```
AndroidManifest.xml用于指定App內部的運行配置,是一個XML描述文件,根節點為manifest,根節點的pack-age指定了該App的包名。manifest下面又有若干子節點,分別說明如下:
* (1)uses-sdk,該節點有兩個屬性:android:minSdkVersion和android:targetSdkVersion。這兩個屬性是早期Eclipse開發App時使用的,現在這兩個字段改成放到build.gradle文件中,故而Android Studio不配置uses-sdk也沒有關系。
* (2)uses-permission,該節點用于聲明App運行過程中需要的權限名稱。例如,訪問網絡需要上網權限,拍照需要攝像頭權限,定位需要定位權限等。
* (3)application,該節點用于指定App的自身屬性,默認的屬性說明如下:
* `android:allowBackup`,用于指定是否允許備份,開發階段設置為true,上線時設置為false。
* `android:icon`,用于指定該App在手機屏幕上顯示的圖標。
* `android:label`,用于指定該App在手機屏幕上顯示的名稱。
* `android:supportsRtl`,設置為true表示支持阿拉伯語/波斯語這種從右往左的文字排列順序。
* `android:theme`,用于指定該App的顯示風格。
application節點下還有幾個子節點,比如活動activity、服務service、廣播接收器receiver、內容提供器provider等,這些子節點的詳細屬性會在后續章節詳細說明。