下面是一个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等,这些子节点的详细属性会在后续章节详细说明。