settings.gradle
settings.gradle
vs. build.gradle
文件 | 作用 |
---|---|
settings.gradle |
管理整个 Gradle 项目(包括多模块) |
build.gradle |
管理单个模块的构建(比如依赖、插件) |
重点:
settings.gradle
负责全局配置,比如项目名称、多模块、仓库地址等。build.gradle
负责每个模块的构建配置,比如 Java 版本、依赖项等。// Gradle 插件管理(用于管理 Gradle 插件的下载来源)
pluginManagement {
repositories {
// 使用 Google 官方仓库(仅允许特定插件下载)
google {
content {
// 只允许下载 "com.android.*" 相关的插件(如 Android Gradle 插件)
includeGroupByRegex("com\\.android.*")
// 只允许下载 "com.google.*" 相关的插件(如 Firebase)
includeGroupByRegex("com\\.google.*")
// 只允许下载 "androidx.*" 相关的插件(如 Jetpack 组件)
includeGroupByRegex("androidx.*")
}
}
// 允许从 Maven Central(中央仓库)下载插件
mavenCentral()
// 允许从 Gradle 官方插件仓库下载插件
gradlePluginPortal()
}
}
// 依赖解析管理(用于配置项目的依赖下载规则)
dependencyResolutionManagement {
// 设置仓库模式:
// FAIL_ON_PROJECT_REPOS:不允许子模块单独定义依赖仓库,必须使用全局仓库(提高一致性)
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
// 定义全局可用的依赖仓库
repositories {
// 从 Google 仓库下载 Android 相关依赖(如 AndroidX、Google Play Services)
google()
// 从 Maven Central 下载第三方依赖(如 OkHttp、Retrofit 等)
mavenCentral()
// 自定义 Maven 仓库地址(用于下载 Xposed 相关的依赖)
maven {
url = uri("https://api.xposed.info/")
}
}
}
// 设置项目的根名称(Gradle 识别的项目名,不影响代码包名)
rootProject.name = "xposed"
// 声明当前 Gradle 项目包含 `app` 模块(用于管理子模块)
include(":app")
Gradle 插件管理
com.android.*
、com.google.*
、androidx.*
相关插件。依赖解析管理
build.gradle.kts
app/build.gradle.kts
文件专门用于配置 app
模块(而 settings.gradle.kts
配置整个项目)。下面是对每一行代码的详细解释:
// 应用 Gradle 插件
plugins {
alias(libs.plugins.android.application) // 使用 Android 应用插件(必须)
alias(libs.plugins.kotlin.android) // 使用 Kotlin Android 插件(支持 Kotlin 开发)
alias(libs.plugins.kotlin.compose) // 启用 Jetpack Compose 插件(用于现代 UI 开发)
}
// Android 项目相关配置
android {
namespace = "com.example.xposed" // 定义应用的命名空间(通常与包名相同)
compileSdk = 35 // 指定编译时使用的 Android SDK 版本
// 应用的默认配置
defaultConfig {
applicationId = "com.example.xposed" // 应用唯一 ID(影响 APK 生成)
minSdk = 21 // 设定最低支持的 Android 版本(API 21 = Android 5.0)
targetSdk = 35 // 目标 Android 版本(新 API 适配)
versionCode = 1 // 版本号(每次更新递增)
versionName = "1.0" // 版本名称(用户可见的版本号)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" // 指定 UI 自动化测试的运行器
}
// 构建类型配置
buildTypes {
release {
isMinifyEnabled = false // 关闭代码混淆(可提高应用稳定性)
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"), // 默认的 ProGuard 规则
"proguard-rules.pro" // 项目的自定义 ProGuard 规则文件
)
}
}
// Java 兼容性设置
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11 // 设定 Java 代码的最低支持版本
targetCompatibility = JavaVersion.VERSION_11 // 设定 Java 代码编译的目标版本
}
// Kotlin 兼容性设置
kotlinOptions {
jvmTarget = "11" // 指定 JVM 目标版本(Kotlin 运行时环境)
}
// 启用 Jetpack Compose(现代 UI 框架)
buildFeatures {
compose = true
}
}
// 项目依赖管理
dependencies {
// Xposed 框架 API(仅编译时使用,不会包含在最终 APK)
compileOnly("de.robv.android.xposed:api:82")
// AndroidX 核心扩展库(提供 KTX 扩展功能)
implementation(libs.androidx.core.ktx)
// Android 生命周期扩展(简化 Activity/Fragment 生命周期管理)
implementation(libs.androidx.lifecycle.runtime.ktx)
// Jetpack Compose 的 Activity 支持
implementation(libs.androidx.activity.compose)
// Jetpack Compose BOM(管理 Compose 相关库的版本)
implementation(platform(libs.androidx.compose.bom))
// Jetpack Compose UI 组件
implementation(libs.androidx.ui)
// Jetpack Compose UI 图形处理
implementation(libs.androidx.ui.graphics)
// Jetpack Compose 预览工具(用于设计模式下预览 UI)
implementation(libs.androidx.ui.tooling.preview)
// Material Design 3 组件(最新的 UI 设计库)
implementation(libs.androidx.material3)
// JUnit 单元测试库(用于逻辑测试)
testImplementation(libs.junit)
// AndroidX JUnit 测试库(用于 Android 组件的单元测试)
androidTestImplementation(libs.androidx.junit)
// Espresso UI 自动化测试(测试 Android 界面交互)
androidTestImplementation(libs.androidx.espresso.core)
// Jetpack Compose UI 测试 BOM(确保 UI 测试组件的版本一致)
androidTestImplementation(platform(libs.androidx.compose.bom))
// Jetpack Compose UI 测试框架(JUnit 4 兼容)
androidTestImplementation(libs.androidx.ui.test.junit4)
// Jetpack Compose UI 调试工具(仅 Debug 模式启用)
debugImplementation(libs.androidx.ui.tooling)
// Jetpack Compose UI 测试工具(仅 Debug 模式启用)
debugImplementation(libs.androidx.ui.test.manifest)
// OkHttp 网络库(用于 HTTP 请求)
implementation("com.squareup.okhttp3:okhttp:4.9.3")
}
xposed_init
assets/xposed_init
(模块的 assets
目录下)。xposed_init
通常放在 app/src/main/assets/xposed_init
文件
路径:
app/
├── src/
│ ├── main/
│ │ ├── assets/
│ │ │ ├── xposed_init ←【这里】
AndroidManifest.xml
AndroidManifest.xml
是什么?AndroidManifest.xml
就像一本“身份证”,它告诉 Android:
这些 meta-data
是为了让 Xposed 框架 知道 你的 App 是一个 Xposed 模块,并且告诉它一些基本信息。就像给 Xposed Installer 发一张名片,告诉它:
✅ 翻译:
"Xposed 框架你好!我是一个 Xposed 模块,可以 Hook 其他 App 哦!"
(xposedmodule=true
让 Xposed Installer 识别你的 App)
✅ 翻译:
"我是一款 Xposed Hook 测试模块
,可以修改别的 App 哦!"
(xposeddescription
让 Xposed Installer 知道你这个模块是干啥的)
✅ 翻译:
"我只能在 Xposed API 82 及以上的版本运行哦!太老的不行!"
(xposedminversion=82
告诉 Xposed,这个模块需要 Xposed 82 及以上的版本才能用!)
AndroidManifest.xml
结构总结