1.AndroidStudio介绍
Android Studio 是用于开发 Android 应用的官方集成开发环境 (IDE)。Android Studio 基于 IntelliJ IDEA 强大的代码编辑器和开发者工具,还提供更多可提高 Android 应用构建效率的功能,例如:
- 基于 Gradle 的灵活构建系统
- 快速且功能丰富的模拟器
- 统一的环境(供您开发适用于所有 Android 设备的应用)
- 通过实时编辑功能实时更新模拟器和实体设备中的可组合项
- 代码模板和 GitHub 集成,可协助您打造常见的应用功能及导入示例代码
- 大量的测试工具和框架
- Lint 工具,能够找出性能、易用性和版本兼容性等方面的问题
- C++ 和 NDK 支持
- 内置对 Google Cloud Platform 的支持,可轻松集成 Google Cloud Messaging 和 App Engine
2.项目结构
Android Studio 中的项目包含为应用定义工作区的所有内容,包括源代码、资源、测试代码和 build 配置。
- manifests:包含
AndroidManifest.xml
文件。 - java:包含 Kotlin 和 Java 源代码文件,包括 JUnit 测试代码。
- res:包含所有非代码资源,例如界面字符串和位图图像。
2.1MainActivity.java和activity_main.xml
什么是MainActivity,就是一个Android的APP 如果它有Activity的话,那么最开始启动的那个Activity就是MainActivity。
每一个组件,包括Activity都必须要在AndroidManifest.xml文件中申明。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Demo2"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity文件
package com.gaoting.demo2;
import android.os.Bundle;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
}
activity_main.xml
Android程序的设计讲究逻辑和视图分离,因此是不推荐在活动中直接编写界面的,更加通用的一种做法是,在布局文件中编写界面,然后在活动中引人进来。可以看到,在onCreate()
方法的第二行调用了setContentView()方法, 就是这个方法给当前的活动引人了一个layout布局。
布局文件都是定义在res/layout 目录下的,展开layout目录,会看到activity_main.xml这个文件。
2.2R.txt文件
Android Studio 中 R.java 没了,转为 R.txt 文件。
原来是 AGP
在性能方面的优化,跳过 java
文件,直接生成 R
文件的字节码,虽然R.java
没有了,但 AGP
会输出 R.txt
供开发者使用。
查找 R.java(R.txt)
位置:
1、默认是没有 build
文件夹的,R.java(R.txt)
在 build
文件夹中。
2、创建项目之后,找到工具栏中的 Build
选项,先 clear
在 build
生成文件夹。
3.gradle-wrapper.properties配置解读
3.1环境变量GRADLE_USER_HOME
GRADLE_USER_HOME是Gradle构建工具的一个重要属性,用于设置Gradle用户目录的路径。该属性的默认值根据平台不同而不同,Windows平台默认为C:\Users\用户名\.gradle,Linux和Mac平台默认为~/ .gradle。可以通过设置该属性来指定Gradle用户目录的位置。
GRADLE_USER_HOME的作用
1、缓存依赖项:Gradle会在GRADLE_USER_HOME路径下存储缓存的依赖项。这样一来,在同一个项目或者不同项目中,相同的依赖项只需要下载一次,就可以进行共享,加快了构建的速度。
2、缓存元数据:Gradle还会将元数据(例如版本控制系统、依赖项解析结果等)存储在GRADLE_USER_HOME路径下的缓存目录中。这可以避免在构建过程中重复获取和解析元数据,提高了构建的效率。
3、存储插件:Gradle会自动下载并安装插件,并将其存储在gradleuserhome目录下的插件目录中。这可以避免在每个项目中都需要手动安装插件,方便了使用。
如下是文件AndroidManifest.xml的设置:
#Wed May 01 07:10:44 CST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
环境变量:GRADLE_USER_HOME
Gradle用户目录:
3.2distributionUrl
distributionUrl 决定了这个项目使用的gradle版本,也就是说不同的项目可以使用不同的gradle版本,这也就是为什么修改Gradle Home失败的原因。那么我们怎么知道gradle有哪些版本呢?Gradle下载地址:https://services.gradle.org/distributions/。为了加速可以使用国内Gradle镜像如腾讯软件:Index of /gradle/。
注:本文使用的是AndroidStudio 2023.2.1版本。