Android逆向(Xposed配置)

settings.gradle


1. 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 插件管理

    • 只允许 GoogleMaven CentralGradle 官方仓库 作为插件下载源。
    • 限制 Google 仓库只下载 com.android.*com.google.*androidx.* 相关插件。
  • 依赖解析管理

    • 强制所有模块使用全局仓库(不允许单独定义)。
    • 依赖可以从 Google、Maven Central、Xposed API 仓库 下载。

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


  • 作用:告诉 Xposed 框架应该加载哪个类 作为 Hook 入口。
  • 位置:它通常位于 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:

  1. 这个 App 是谁?(名字、包名)
  2. 这个 App 需要什么权限?(能不能上网、拍照?)
  3. 这个 App 里有什么?(界面、服务)
  4. 这个 App 支持哪些设备?(最低 Android 版本是多少?)
  5. 这个 App 是否是 Xposed 模块?(如果是 Hook 工具,要告诉 Xposed)


    
        
        
        

        
        

        
        
    

这些 meta-data 是为了让 Xposed 框架 知道 你的 App 是一个 Xposed 模块,并且告诉它一些基本信息。就像给 Xposed Installer 发一张名片,告诉它:

  1. 我是谁?(我是一个 Xposed 模块)
  2. 我是做什么的?(我是一个 Hook 应用的工具)
  3. 我支持什么版本的 Xposed?(至少要 Xposed API 82 以上)

翻译
"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 结构总结

  
      
      
      
          
          
          
          
          
    

你可能感兴趣的:(android)