安卓原生开发,从入门到精通
- Android
- 1天前
- 15热度
- 0评论
Gradle
Gradle 是一种基于 Groovy 或 Kotlin DSL(领域特定语言)的构建工具,用于自动化构建、测试、部署等任务。
1. build.gradle
build.gradle是Gradle 项目的核心配置文件,通常位于项目的根目录下。它的主要作用是定义项目的构建逻辑,包括:
- 项目依赖:指定项目需要的库(如 JAR 文件)。
- 插件应用:引入 Gradle 插件,例如 java 插件用于 Java 项目。
- 任务配置:自定义构建任务,如编译、测试、打包等。
- 属性配置:设置项目属性,如版本号、源码目录等。
plugins {
id 'java' // 应用 Java 插件
}
group 'com.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral() // 使用 Maven 中央仓库
}
dependencies {
implementation 'org.example:library:1.0' // 添加项目依赖
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
test {
useJUnitPlatform() // 配置测试框架
}
signingConfigs 是一个配置块,用于定义签名配置。签名配置用于在构建过程中对 APK 或 AAB 文件进行签名。
- debug 配置是默认的调试签名配置,用于开发和调试阶段。
- release 配置是用于发布应用的签名配置。
2. settings.gradle
settings.gradle位于项目的根目录下,用于定义项目的设置,包括:
- 多模块项目:定义子模块项目。
- 项目名称:设置项目的名称。
- 插件管理:定义全局插件。
rootProject.name = 'my-project' // 设置项目名称
include 'submodule1', 'submodule2' // 包含子模块
3. gradle.properties
gradle.properties位于项目的根目录下,用于定义项目的全局属性,例如:
- Gradle 版本:指定使用的 Gradle 版本。
- 环境变量:设置构建时的环境变量。
- 依赖版本:统一管理依赖版本。
4. build.gradle.kts
build.gradle.kts是使用 Kotlin DSL 编写的构建脚本,功能与 build.gradle 相同,但语法更接近 Kotlin 语言。
5. gradlew 和 gradlew.bat
- gradlew:Linux 和 macOS 系统下的 Gradle Wrapper 脚本。
- gradlew.bat:Windows 系统下的 Gradle Wrapper 脚本。
这些脚本允许开发者在不手动安装 Gradle 的情况下运行 Gradle 构建。会自动下载并使用指定版本的 Gradle。
6. gradle/wrapper/gradle-wrapper.properties
gradle/wrapper/gradle-wrapper.properties是 Gradle Wrapper 的配置文件,用于指定 Gradle 的版本和分发 URL。
7. build/
build/是 Gradle 构建输出目录,通常包含以下内容:
- build/classes/:编译后的类文件。
- build/libs/:生成的 JAR 或 WAR 文件。
- build/reports/:构建报告,如测试报告。
- build/tmp/:临时文件。
8. src/
src是源代码目录,通常包含以下子目录:
- src/main/java:主程序源代码。
- src/main/resources:主程序资源文件。
- src/test/java:测试程序源代码。
- src/test/resources:测试程序资源文件。
Android Studio
Android Studio 是一款由 Google 开发的官方集成开发环境(IDE),专门用于开发 Android 应用程序。
1. 使用记录
- Gradle配置里,选择JDK时可以自动下载安装JDK
- 设置Module的API版本时,只能选择一家下载的API版本
2. local.properties
local.properties 文件的主要作用是告诉 Android Studio 项目中使用的 Android SDK 的路径。
sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk
3. .iml 文件
.iml 文件是 IntelliJ IDEA(Android Studio 是其专用于 Android 开发的版本)为每个模块生成的配置文件,主要用于存储模块的配置信息 。
.iml 文件定义了模块的基本结构,包括源代码路径、资源文件路径、编译输出路径等
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$/src/main/java"/>
<orderEntry type="library" scope="PROVIDED" />
</component>
</module>
.iml
文件是 XML 格式的,通常不需要手动编辑,但可以在必要时进行修改
Android开发
安卓开发知识图谱涵盖基础知识(开发环境、四大组件、UI布局、数据存储等)、进阶知识(自定义View、性能优化、安全机制等)、热门技术(Flutter、热修复等)、编程语言(Java、Kotlin)、计算机基础(数据结构、网络等)、开发工具与框架(Android Studio、Gradle、开源库)、架构设计(MVC、MVP、MVVM等)、开发流程与规范(版本控制、代码规范、测试等)以及行业动态与趋势(新技术、新框架)。
1.AndroidManifest.xml
AndroidManifest.xml 是 Android 应用的核心配置文件,它向系统声明了应用的基本属性、组件以及权限等。可以将其看作是应用的“蓝图”或“说明书”
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk />
<uses-permission />
<application>
<activity>
<intent-filter>
<action />
<category />
</intent-filter>
</activity>
<activity />
<service />
<receiver>
<intent-filter>
<action />
</intent-filter>
</receiver>
<provider />
<meta-data />
</application>
</manifest>
1.1 <manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp">
<!--
xmlns:android: 定义了 XML 文件的命名空间,这是 Android 开发中必须的。
package: 应用的唯一标识,用于区分不同的应用。这个包名通常也是应用的 Java 包名。
-->
</manifest>
1.2 <uses-sdk>
<!--
<uses-sdk> 标签用于定义应用支持的 SDK 版本范围。
android:minSdkVersion: 应用能够运行的最低 SDK 版本。
android:targetSdkVersion: 应用的目标 SDK 版本,建议设置为最新的稳定版本。
-->
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="30" />
1.3 <uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<!--
<uses-permission> 标签用于声明应用所需的权限。
android:name: 权限的名称,如访问网络、写入外部存储、使用相机等。
-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
1.4 <application>
<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/AppTheme">
<!--
<application> 标签是应用的根节点,定义了应用的基本属性。
android:allowBackup: 是否允许应用数据备份。如果设置为 false,应用数据不会被备份。
android:icon: 应用的图标资源。
android:label: 应用的名称,通常是一个字符串资源。
android:roundIcon: 应用的圆形图标,适用于 Android 7.1 及以上版本。
android:supportsRtl: 是否支持从右到左(RTL)布局。
android:theme: 应用的主题,通常是一个样式资源。
-->
</application>
1.5 <activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--
<activity> 标签用于定义应用中的活动。
android:name: 活动的类名,通常是全限定类名。
<intent-filter> 标签用于定义活动的入口点。
<action> 标签定义活动支持的意图动作。
<category> 标签定义活动支持的意图类别。
-->
<activity android:name=".SecondActivity" />
<activity android:name=".ThirdActivity" />
<!--
定义其他活动,这些活动没有定义 intent-filter,因此不会出现在应用的启动列表中,
但可以通过代码调用。
-->
1.6 <service>
<service android:name=".MyService" />
<!--
<service> 标签用于定义应用中的服务。
android:name: 服务的类名,通常是全限定类名。
-->
1.7 <receiver>
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>
<!--
<receiver> 标签用于定义应用中的广播接收器。
android:name: 广播接收器的类名,通常是全限定类名。
<intent-filter> 标签用于定义广播接收器监听的意图。
-->
1.8 <provider>
<provider
android:name=".MyProvider"
android:authorities="com.example.myapp.provider"
android:exported="false" />
<!--
<provider> 标签用于定义应用中的内容提供者。
android:name: 内容提供者的类名,通常是全限定类名。
android:authorities: 内容提供者的唯一标识,通常是一个 URI。
android:exported: 是否允许其他应用访问该内容提供者。如果设置为 false,只有同一应用中的组件可以访问。
-->
1.9 <meta-data>
<meta-data
android:name="com.example.myapp.MY_KEY"
android:value="MyValue" />
<!--
<meta-data> 标签用于定义应用的元数据。
android:name: 元数据的键。
android:value: 元数据的值。
-->