# AtomEnv **Repository Path**: atm_java/atom-env ## Basic Information - **Project Name**: AtomEnv - **Description**: 原 AppEnv 的延续 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-17 - **Last Updated**: 2026-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AtomEnv AtomEnv 是一个 Android / LSPosed 模块,用于在本机离线伪装目标应用读取到的设备信息。项目不依赖后端,不做云端同步,配置按应用保存在模块 App 本地。 ## 当前状态 | 项目 | 当前值 | |------|--------| | 主模块 | `app/` | | Java 包名 | `com.sollyu.android.appenv` | | Android namespace | `com.atomenv` | | official applicationId | `com.atomenv` | | Xposed 入口 | `META-INF/xposed/java_init.list` -> `com.sollyu.android.appenv.MainXposedNew` | | Xposed API | Modern libxposed API 100 (`compileOnly("io.github.libxposed:api:100.x.-100-ge2588ee-22@aar")`) | | 构建链 | Gradle 8.7 / AGP 8.4.1 / Kotlin DSL / Java 17 / compileSdk 34 | | 支持范围 | Android 8-14 (API 26-34) 为当前构建目标;Android 15 待真机/框架验证 | | Root 依赖 | 无。配置走 LSPosed remote preferences;强停/清数据仅从模块 App 进程尝试 `cmd/am/pm`,多数 ROM 会因权限拒绝;不使用 `su` | | UI 图标 | 彩色字母头像(自生成),无第三方图标库依赖 | Route B 已完成源码迁移:旧 `de.robv.android.xposed` 入口、`assets/xposed_init`、`XposedBridgeApi-54.jar` 和旧 hook helper 已移除。 ## 核心能力 - 伪装 `Build` / `Build.VERSION` 设备字段 - 伪装 Telephony 信息,如 IMEI、MEID、IMSI、SIM 序列号、手机号、运营商 - 伪装 Wi-Fi 信息,如 SSID、BSSID、MAC、IP、network id - 伪装 `Settings.Secure.ANDROID_ID` - 伪装 Bluetooth 名称和地址 - 提供 locale / DPI / network privacy 相关 hook - 按具体包名、`USER` 默认配置、`ALL` 全局配置合并 - 未配置字段可随机填充 配置优先级: ```text 具体包名配置 > USER 配置 > ALL 配置 > 随机填充 ``` ## 构建 ```powershell # Debug 构建 .\gradlew.bat assembleOfficialDebug # Release 构建 .\gradlew.bat assembleOfficialRelease # 仅编译源码 .\gradlew.bat compileOfficialDebugSources # Android lint .\gradlew.bat lintOfficialDebug # 清理 .\gradlew.bat clean ``` Release APK 会输出到: ```text app/build/outputs/apk/official/release/ ``` ## 项目结构 ```text app/src/main/ ├── AndroidManifest.xml ├── java/com/sollyu/android/appenv/ │ ├── MainXposedNew.java │ ├── MainApplication.java │ ├── MainConfig.java │ ├── activity/ │ ├── helper/ │ │ ├── ConfigReader.java │ │ ├── LibXposedHookHelper.java (编排器) │ │ ├── PrefsHelper.java │ │ ├── RandomHelper.java │ │ ├── PhoneHelper.java │ │ ├── OtherHelper.java │ │ ├── SolutionHelper.java │ │ └── hook/ │ │ ├── BaseHookGroup.java │ │ ├── BuildHookGroup.java │ │ ├── CpuHookGroup.java │ │ ├── TelephonyHookGroup.java │ │ ├── WifiHookGroup.java │ │ ├── BluetoothHookGroup.java │ │ ├── BatteryHookGroup.java │ │ ├── AdvertisingHookGroup.java │ │ ├── SettingsHookGroup.java │ │ ├── LocaleDisplayHookGroup.java │ │ ├── LocationHookGroup.java │ │ ├── NetworkPrivacyHookGroup.java │ │ ├── NetworkTypeHookGroup.java │ │ ├── SensorPrivacyHookGroup.java │ │ ├── ScreenCaptureHookGroup.java │ │ ├── CapacityHookGroup.java │ │ └── WebUaHookGroup.java │ ├── module/AppInfo.java │ ├── utils/ │ └── view/ ├── resources/META-INF/xposed/ │ ├── module.prop │ ├── java_init.list │ └── scope.list └── res/ ``` ## 文档 | 文档 | 说明 | |------|------| | `AGENTS.md` | AI 助手入口、当前事实、工作原则 | | `docs/REWRITE_PLAN.md` | Route B 迁移记录、验收矩阵、真机测试清单 | | `docs/LSPOSED_KNOWLEDGE.md` | LSPosed / libxposed 知识库 | | `docs/LSPOSED_MODULE_PRACTICES.md` | 外部 LSPosed 模块实践调研 | ## 开发注意 1. 不要随意重命名 `AppInfo` 的 public 字段,它们是配置 JSON 协议。 2. libxposed API 必须保持 `compileOnly`,不能打包进 APK。 3. official flavor 的 applicationId 是 `com.atomenv`,不同于源码 Java 包名 `com.sollyu.android.appenv`;Manifest 组件名必须使用全限定源码类名。 4. 修改 hook 行为前先读 `MainXposedNew.java`、`AppInfo.java`、`LibXposedHookHelper.java`。 5. 真机验证时需要在 LSPosed 中启用模块并选择目标 App 作用域。 ## 当前验证 最近一次静态验证已通过: ```powershell .\gradlew.bat lintOfficialDebug .\gradlew.bat compileOfficialDebugSources .\gradlew.bat assembleOfficialDebug ``` 这只证明 Android 8-14 构建、manifest、资源和 lint 层面无阻塞;LSPosed hook 命中仍以真机日志为准。 ## License Copyright Sollyu 2015-2016 / Atom 2026