早期,Android APP开发主要使用Eclipse和基于Eclipse的ADT。但是由于Eclipse本身的不足性,自2015年之后,Google公司停止了ADT版本的更新,转而重点打造自家的Android Studio。
Android Studio作为Android应用的开发环境,仍然依赖于JDK、SDK、NDK三种开发工具。
JDK:Java Development Kit Java开发工具包。因为Android应用采用Java语言开发,所以开发机上要先安装JDK
SDK:Software Development Kit 软件开发包。SDK提供了App开发的常用工具合集。
NDK:Native Development Kit 原生开发工具包。
一个新项目的工程目录截图
该工程下面有两个目录,一个是app另一个是最下方的Gradle Scripts,而其中app下面又有3个子目录:
(1)manifests子目录:只有一个XML文件,其名称:AndroidManifest.xml,是App运行的配置文件,其编程主要操作是开发时,设定直接显示的页面,初始时直接显示的界面。
(2)java子目录:下面有三个包,其中第一个包com.example.testproject存放的是App工程的java源代码,后面两个包存放的是测试用的java代码。
(3)res子目录:存放的是App工程的资源文件。res子目录下又有四个子目录:
drawable目录:存放的是图形描述文件以及用户图片,动图可以以json的文件格式存放其中。
Layout目录:存放的是App页面的布局设计文件。在Android Studio中对于页面布局一共有三种方式:第一个是纯代码布局(Code),顾名思义就是用纯代码进行布局;第二个是结合式布局(split),就是下方图片展示的范例;第三个是纯图片布局(design)方式,就是通过在页面进行拖动对各部分布局。
values目录:存放的是一些常量定义文件,比如字符串常量文件strings.xml,再比如颜色常量color.xml文件,以及样式风格定义文件styles.xml
Grade Script主要是工程的编译配置文件。
只要有以下五个方面:
该文件分为项目级以及模块级两种,用于描述App工程的编译规则。其中模块级(Module)主要用于添加依赖文件,如下图:
该文件用于描述java文件的代码混淆规则。
(暂时没用过,要是有大用处到时候更新)
该文件用于配制编译工程的命令行参数,一般无需改动。
配置哪些模块在一起编译,初始内容为include ‘:app’,表示只编译App模块。
项目的本地配置,一般无须改动。
该文件是在工程编译时自动生成的,用于描述开发者本机的环境配置,比如SDK的本地路径、NDK的本地路径等。
⚠️在Grade Script中,其实除了build.gradle以外其他的一般用不到,而在Grade Script中,有两个build.grade,一个是Project, 一个是Module,项目级别的build.gradle一般无须改动,读者只需要关注模块级别的build.gradle,下文将详细的分解阐述build.gradle格式:
plugins {
id 'com.android.application'
}
android {
// 指定编译用的SDK版本号
compileSdkVersion 30
// 指定编译工具的版本号,这里的头两位数字必须与compileSdkVersion保持一致。
buildToolsVersion "30.0.3"
defaultConfig {
//指定模块的应用编号,即App的包名。该参数自动生成,无须修改
applicationId "com.example.testproject"
//指定App适合运行的最小SDK版本号,如16表示至少要在Android 4.1上运行。
minSdkVersion 16
//指定目标设备的SDK版本号,即该App最希望在哪个版本的Android上运行。
targetSdkVersion 30
//指定App的应用版本号
versionCode 1
//指定App的应用版本名称
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
//指定是否开启代码混淆功能,true表示开启混淆,false则是无须混淆。
minifyEnabled false
//指定代码混淆规则文件的文件名
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
//指定App编译的依赖文件
dependencies {
//指定编译Android的高版本支持库。如AppCompatActivity必须指定编译appcompat-V7库
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
//指定单元测试编译用的junior版本号
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
AndroidManifest.xml文件用于指定App内部的运行配置,是一个XML描述文件,根节点为manifest,根节点的package指定了该APP的包名。具体说明对照如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testproject">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.TestProject">
<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>
android:allowBackup | 用于指定是否允许备份,开发阶段设置为true,上线时设置为false |
---|---|
android:icon | 用于指定该App在手机屏幕上显示的图标 |
android:label | 用于指定该App在手机屏幕上显示的名称 |
android:supportRtl | 设置为true表示支持阿拉伯语/波斯语这种从右到左的文字排列顺序 |
android:theme | 用于指定该App的显示风格 |