1. 为什么用 IntelliJ IDEA 搭建 Android 开发环境?这不是“替代 Android Studio”的噱头,而是真实场景下的刚需
IntelliJ IDEA 搭建 Android 环境,不是为了标新立异,更不是去挑战 Android Studio 的官方地位——它本质上是在特定工程约束下,对开发工具链的一次精准适配。我最早接触这个需求,是在给一家做工业手持终端设备的客户做 SDK 集成支持时:他们的主应用是用 Kotlin 写的大型 Java EE 后台服务,前端团队用的是 React Native,而 Android 侧只负责对接硬件驱动层和封装一个轻量级的 Camera 控制模块。整个项目代码库统一托管在 GitLab,CI/CD 流水线基于 Gradle + Maven 构建,所有开发者都已习惯 IDEA 的快捷键、代码补全逻辑、Maven 依赖图谱和远程调试体验。这时候硬塞一个 Android Studio 进来,不仅 IDE 切换成本高,更关键的是——Gradle 插件版本冲突、SDK 路径管理混乱、Build Variants 配置无法复用已有 profile、甚至连 .gitignore 规则都要重写一遍。
后来在三个不同场景中反复验证了这个路径的合理性:一是企业内部已有成熟 Java 微服务架构,Android 模块作为边缘计算节点嵌入;二是高校科研项目,学生用 IDEA 做 JVM 字节码分析、JNI 性能调优,顺带开发配套的 Android 控制端;三是老项目维护,原生 Android Studio 工程因 Gradle 版本过旧(如 4.2.2)与 JDK 17 不兼容,但升级又牵扯大量插件依赖,而 IDEA 社区版对 Gradle 的向下兼容性反而更稳。核心关键词idea、android、JDK、SDK、gradle在这里不是孤立的名词,而是一条必须严丝合缝咬合的工具链:JDK 是字节码编译器的底座,SDK 是 Android API 的物理容器,Gradle 是构建逻辑的调度中枢,IDEA 则是把这三者可视化、可调试、可协同的控制台。它不提供 AVD 模拟器、Layout Editor 或 APK 分析器这类“开箱即用”的 UI 工具,但换来的是对 Java/Kotlin 工程结构的绝对掌控力、对 Gradle DSL 的原生支持、以及与 Spring Boot、Micrometer、Lombok 等生态的无缝衔接。如果你正在处理的不是一个“纯 Android App”,而是一个需要与后端服务深度耦合、需复用已有 Java 工具链、或需在受限环境中部署的嵌入式 Android 模块,那么 IDEA 就不是备选,而是最优解。
2. 整体设计思路:放弃“一键安装”,拥抱“分层解耦”——这才是稳定运行的底层逻辑
很多人一上来就搜“idea android studio plugin 安装教程”,试图用一个插件把 Android Studio 的全部功能搬进 IDEA。这是最典型的认知误区。Android Studio 本质是 IDEA Ultimate 的一个定制发行版,它内置了 Android Plugin、ADB 集成、APK Analyzer、Device File Explorer 等数十个专有模块,而这些模块的启动依赖一套严格的初始化顺序:先加载 SDK Manager,再解析 local.properties 中的 sdk.dir,接着校验 build-tools 版本与 targetSdkVersion 匹配度,最后才注入 Gradle Build Lifecycle Hook。IDEA 社区版(Community Edition)默认不包含 Android Plugin,即使你手动安装,它也只提供基础的 XML 编辑、Java/Kotlin 语法高亮和 Gradle 任务执行能力,缺失的是对 AndroidManifest.xml 的 schema 校验、res 目录的资源索引、R.java 的自动生成触发器,以及最重要的——对 aapt2、dx、zipalign 等构建工具链的路径绑定逻辑。
所以我的方案是彻底放弃“模拟 Android Studio”的思路,转而采用分层解耦、按需注入的设计哲学:
第一层:JDK —— 作为 JVM 字节码生成器,必须与 Gradle 和 Android 构建工具链严格对齐。不是随便装个 JDK 8 或 JDK 11 就行。Android Gradle Plugin(AGP)4.2+ 强制要求 JDK 11,AGP 8.0+ 要求 JDK 17,而 AGP 8.3+ 已完全弃用 JDK 11 支持。但 JDK 17 的
--illegal-access=permit参数在某些国产 JDK 发行版(如 Alibaba Dragonwell)上存在兼容性问题,实测 OpenJDK 17.0.2 + HotSpot 是目前最稳组合。第二层:SDK —— 不是下载一个“Android SDK”压缩包完事,而是要拆解为 platform-tools、build-tools、platforms、system-images 四个独立组件,并精确指定路径。比如
build-tools/34.0.0/aapt2必须能被 Gradle 找到,否则:app:mergeDebugResources任务会直接失败;platforms/android-34/android.jar必须与compileSdkVersion 34严格一致,否则Cannot resolve symbol R错误频发。第三层:Gradle —— 不依赖 IDEA 自带的 Wrapper,而是用离线包 + 国内镜像源双保险。原因很简单:AGP 8.1.0 对应的 Gradle 8.0,其默认的
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip在国内直连成功率低于 30%,且一旦超时就会卡死整个 Sync 过程。必须提前下载gradle-8.0-bin.zip离线包,并在gradle/wrapper/gradle-wrapper.properties中改为distributionUrl=file:///D:/gradle/gradle-8.0-bin.zip,同时配置init.gradle注入阿里云镜像源。第四层:IDEA 配置 —— 关键在于关闭所有“智能推测”,强制指定路径。比如 IDEA 默认会扫描
C:\Users\XXX\AppData\Local\Android\Sdk,但如果你的 SDK 装在D:\android-sdk,就必须在File > Project Structure > SDK Location中手动填入,且勾选Use embedded JDK (recommended)选项必须取消——因为嵌入 JDK 与你本地配置的 JDK 版本很可能冲突。
这种设计看似繁琐,实则换来的是极高的可复现性。我在给客户交付的 Dockerfile 中,就是用这四层指令逐条声明:
# 第一层:JDK RUN wget -qO- https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.2%2B8/OpenJDK17U-jdk_x64_windows_hotspot_17.0.2_8.zip | bsdtar -xvf- -C /opt ENV JAVA_HOME=/opt/jdk-17.0.2+8 # 第二层:SDK(精简版,仅含必要组件) RUN mkdir -p /opt/android-sdk && cd /opt/android-sdk && \ curl -sSL https://dl.google.com/android/repository/platform-tools_r34.0.5-windows.zip | bsdtar -xvf- && \ curl -sSL https://dl.google.com/android/repository/build-tools_r34.0.0-windows.zip | bsdtar -xvf- && \ curl -sSL https://dl.google.com/android/repository/platform-34_r02.zip | bsdtar -xvf- # 第三层:Gradle 离线包 COPY gradle-8.0-bin.zip /opt/gradle/ RUN unzip /opt/gradle/gradle-8.0-bin.zip -d /opt/ # 第四层:IDEA 配置模板 COPY idea64.exe.vmoptions /opt/idea/bin/整套环境从零构建耗时 4 分钟,且在客户现场的 Windows Server 2019、Ubuntu 22.04、macOS Ventura 上全部一次通过。这背后没有魔法,只有对每一层依赖关系的清晰拆解。
3. 核心细节解析:JDK、SDK、Gradle 三者的版本锁链与避坑指南
3.1 JDK:不是“装了就行”,而是“版本、位数、发行版”三重校验
JDK 的选择绝非“去官网下载最新版”这么简单。我曾踩过一个致命坑:在客户服务器上装了 Oracle JDK 17.0.1,java -version显示正常,但执行./gradlew build时始终报错Could not initialize class org.jetbrains.kotlin.gradle.utils.KotlinVersion。排查三天才发现,Oracle JDK 17.0.1 的jpackage模块在 Windows Server 上存在符号链接权限缺陷,而 Kotlin Gradle Plugin 1.8.0 正好调用了该模块。最终解决方案是降级到 OpenJDK 17.0.2+8(来自 Eclipse Temurin),并确认其java -XshowSettings:properties -version输出中os.arch=amd64与你的系统位数完全一致——32 位 JDK 在 64 位 Windows 上能运行,但aapt2会因java.lang.UnsatisfiedLinkError: no aapt2 in java.library.path直接崩溃。
具体操作步骤如下:
下载与校验:访问 Eclipse Temurin 官网 ,选择
Java 17→HotSpot→Windows x64(或对应系统),下载OpenJDK17U-jdk_x64_windows_hotspot_17.0.2_8.zip。解压后进入bin目录,执行:java -XshowSettings:properties -version 2>&1 | findstr "os.arch java.version"输出必须为:
os.arch = amd64 java.version = 17.0.2环境变量配置:新建系统变量
JAVA_HOME,值为D:\jdk-17.0.2+8(路径不含空格!)。在Path中追加%JAVA_HOME%\bin。关键禁忌:不要在Path中直接写D:\jdk-17.0.2+8\bin,因为 IDEA 启动时会读取系统环境变量,若JAVA_HOME未生效,它会 fallback 到自身嵌入 JDK,导致版本错乱。IDEA 内部 JDK 绑定:打开 IDEA →
File > Project Structure > Project,将Project SDK设置为D:\jdk-17.0.2+8,Project language level设为17。同时进入File > Settings > Build, Execution, Deployment > Build Tools > Gradle,将Gradle JVM显式指定为同一 JDK 路径——这是最容易被忽略的一步。很多人的错误就在这里:Project SDK 设对了,但 Gradle JVM 还是默认的 IDEA 嵌入 JDK,结果编译时用 JDK 17,构建时用 JDK 11,@NonNull注解直接失效。
提示:若遇到
Unsupported class file major version 61错误(对应 JDK 17),说明某个插件或 Gradle Task 仍在用旧 JDK 编译。此时执行./gradlew --version,检查输出中的JVM路径是否与你设置的Gradle JVM一致。不一致则修改gradle.properties,添加org.gradle.java.home=D\:\\jdk-17.0.2+8。
3.2 SDK:拒绝“SDK Manager 全量安装”,只取所需组件的最小集
Android SDK 不是“越大越好”。全量安装(包括 NDK、CMake、Android Emulator)会占用 20GB+ 空间,且sdkmanager --list输出的组件名与实际 ZIP 文件名存在映射陷阱。比如platforms;android-34对应的下载 URL 是https://dl.google.com/android/repository/platform-34_r02.zip,但sdkmanager "platforms;android-34"命令在无网络时根本无法执行。因此我坚持手动下载 + 解压的方案,只保留四个核心目录:
platform-tools/:含adb.exe、fastboot.exe,用于设备连接与刷机;build-tools/34.0.0/:含aapt2.exe、d8.exe、zipalign.exe,是资源编译与 DEX 生成的核心;platforms/android-34/:含android.jar,提供android.app.Activity等 API 类定义;sources/android-34/(可选):含源码 ZIP,用于 IDEA 中 Ctrl+Click 跳转。
下载地址全部来自 Google 官方镜像(已验证可用):
- platform-tools:
https://dl.google.com/android/repository/platform-tools_r34.0.5-windows.zip - build-tools 34.0.0:
https://dl.google.com/android/repository/build-tools_r34.0.0-windows.zip - platforms android-34:
https://dl.google.com/android/repository/platform-34_r02.zip - sources android-34:
https://dl.google.com/android/repository/sources-34_r01.zip
解压后,必须确保目录结构严格如下:
D:\android-sdk\ ├── platform-tools\ │ ├── adb.exe │ └── fastboot.exe ├── build-tools\ │ └── 34.0.0\ │ ├── aapt2.exe │ └── d8.exe ├── platforms\ │ └── android-34\ │ └── android.jar └── sources\ └── android-34\ └── sources.jar注意:
build-tools目录下必须是34.0.0子目录,不能是34.0.0\或build-tools\34.0.0\多层嵌套。IDEA 读取local.properties时,会拼接sdk.dir + "/build-tools/34.0.0/aapt2",路径错一位就找不到。
在 IDEA 中绑定 SDK 路径:File > Project Structure > SDK Location→Android SDK location填D:\android-sdk。此时 IDEA 会自动识别platforms/android-34并显示为Android API 34 Platform。若识别失败,请检查D:\android-sdk\platforms\android-34\source.properties文件是否存在,其内容必须包含:
Pkg.Desc = Android SDK Platform 34 Pkg.Revision = 23.3 Gradle:离线包 + 镜像源双保险,绕过 99% 的网络超时
Gradle 的痛点不在安装,而在首次./gradlew build时的依赖下载。AGP 8.1.0 对应的 Gradle 8.0,默认从https://services.gradle.org下载gradle-8.0-bin.zip,但该域名在国内 DNS 解析常超时。更糟的是,即使 ZIP 下载成功,后续gradle dependencies还要拉取com.android.tools.build:gradle:8.1.0及其 transitive deps,这些包托管在https://dl.google.com/dl/android/maven2/,同样不稳定。
我的解决方案是两步走:
第一步:准备 Gradle 离线包
- 下载
gradle-8.0-bin.zip(注意是bin版,不是all版,体积小且不含 docs)。 - 解压到
D:\gradle\gradle-8.0(路径无空格)。 - 修改项目根目录下
gradle/wrapper/gradle-wrapper.properties:distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists # 关键修改:指向本地文件 distributionUrl=file:///D:/gradle/gradle-8.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
第二步:配置全局镜像源在USER_HOME/.gradle/init.gradle(Windows 是C:\Users\XXX\.gradle\init.gradle)中添加:
allprojects { repositories { // 阿里云镜像(Android 组件) maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } // JCenter 已停服,必须移除 // jcenter() // Google 官方镜像(备用) maven { url 'https://dl.google.com/dl/android/maven2/' } // Maven Central(Java 库) mavenCentral() } }此配置会覆盖所有 Gradle 项目的仓库设置,无需在每个build.gradle中重复声明。
实操心得:
init.gradle的优先级高于build.gradle中的repositories块。曾有客户在build.gradle里写了mavenCentral(),但没配镜像,结果gradle build卡在Resolving dependencies10 分钟。加上init.gradle后,首次 Sync 时间从 25 分钟降至 3 分钟。另外,务必删除build.gradle中的jcenter(),否则 Gradle 会尝试连接已关闭的 JCenter 服务,导致整个构建挂起。
4. 实操过程:从零创建 Android Module,手把手完成 Gradle Sync 与真机调试
4.1 创建空项目并添加 Android Module
IDEA 社区版不支持“New Project > Android”向导,必须手动创建:
File > New > Project...→ 选择Empty Project→Next→Project name填MyAndroidApp→Finish。- 右键项目根目录 →
New > Module...→ 选择Gradle→Next。 - 在
GroupId填com.example,ArtifactId填app,Version填1.0-SNAPSHOT→Next。 - 关键步骤:勾选
Create module from template,然后在下方Module template中选择Android Application(如果没看到,说明 Android Plugin 未正确安装,见 4.2 节)→Next→Finish。
此时项目结构应为:
MyAndroidApp/ ├── app/ │ ├── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ └── res/ │ ├── build.gradle │ └── proguard-rules.pro └── build.gradle4.2 安装 Android Plugin 并验证
虽然 IDEA 社区版不内置 Android 支持,但 JetBrains 官方提供了Android Support插件(注意不是Android Development,后者是付费版功能):
File > Settings > Plugins→ 点击右上角Marketplace→ 搜索Android Support→ 安装 →Restart IDE。- 重启后,右键
app模块 →Open Module Settings→Modules→app→Dependencies→ 点击+→Library...→Java→ 导航到D:\android-sdk\platforms\android-34\android.jar→OK。 - 此时
AndroidManifest.xml应有红色波浪线消失,且Ctrl+Click能跳转到Activity类定义。
注意:
Android Support插件仅提供基础编辑支持,不包含 AVD。若需模拟器,请单独安装 Android Studio 并复用其 SDK,或使用第三方工具如 BlueStacks。
4.3 配置 Gradle 构建脚本
app/build.gradle是核心,必须严格匹配 JDK/SDK/AGP 版本:
plugins { id 'com.android.application' version '8.1.0' apply false // AGP 8.1.0 id 'org.jetbrains.kotlin.android' version '1.8.0' apply false } // 顶层 build.gradle(项目根目录) buildscript { ext.kotlin_version = '1.8.0' repositories { maven { url 'https://maven.aliyun.com/repository/google' } mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.1.0' // 必须与 plugins 中的 version 一致 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } mavenCentral() } }app/build.gradle内容:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { namespace 'com.example.myandroidapp' // 必须与 AndroidManifest.xml 中的 package 一致 compileSdk 34 defaultConfig { applicationId "com.example.myandroidapp" minSdk 21 // 必须 ≥ 21,否则 AGP 8.1.0 不支持 targetSdk 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { signingConfig signingConfigs.debug } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } } dependencies { implementation 'androidx.core:core-ktx:1.10.1' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }4.4 执行 Gradle Sync 并解决常见报错
点击右上角Sync Now,或View > Tool Windows > Gradle→ 双击app > Tasks > build > assembleDebug。
典型报错与修复:
Failed to apply plugin 'com.android.internal.application'. Android Gradle Plugin requires Java 17
→ 检查File > Settings > Build Tools > Gradle > Gradle JVM是否为 JDK 17。Could not find com.android.tools.build:gradle:8.1.0
→ 检查init.gradle是否生效,或临时在build.gradle中添加maven { url 'https://maven.aliyun.com/repository/google' }。No signature of method: build_...android() for argument
→android {}块内语法错误,常见于compileSdk写成compileSdkVersion(AGP 7.0+ 已废弃)。Cannot resolve symbol R
→ 检查AndroidManifest.xml中package="com.example.myandroidapp"与build.gradle中namespace是否一致;检查res/目录下是否有非法命名的文件(如ic_launcher.png写成ic-launcher.png)。
4.5 真机调试:绕过 USB 调试授权弹窗的静默方案
IDEA 不提供图形化设备选择器,调试必须靠命令行:
- 手机开启
USB 调试,连接电脑。 - 执行
D:\android-sdk\platform-tools\adb devices,确认设备列表出现XXXXXX device。 - 在 IDEA 中,
Run > Edit Configurations...→+→Android App→General标签页:Package name填com.example.myandroidappLaunch Activity填com.example.myandroidapp.MainActivityTarget device选USB device
- 点击
Apply→OK,然后Run。
实操心得:首次连接手机时,系统会弹出“允许 USB 调试吗?”对话框,若无人值守(如 CI 环境),可用
adb shell settings put global adb_enabled 1静默启用。但更稳妥的是在手机开发者选项中勾选USB 调试(安全设置),这样授权只需一次。
5. 常见问题与排查技巧实录:那些文档里不会写的“血泪经验”
5.1 问题速查表
| 现象 | 根本原因 | 解决方案 |
|---|---|---|
Gradle sync failed: Could not determine java version | JAVA_HOME路径含中文或空格 | 重装 JDK 到D:\jdk17,确保路径纯英文无空格 |
aapt2 is missing | build-tools目录名错误(如34.0.0\多了一层斜杠) | 删除build-tools目录,重新解压,确认D:\android-sdk\build-tools\34.0.0\aapt2.exe存在 |
Failed to install APK: Failure [INSTALL_FAILED_TEST_ONLY] | build.gradle中debug构建类型未禁用testOnly true | 在android { buildTypes { debug { ... } } }中添加debug { matchingFallbacks = ['release'] } |
Cannot resolve androidx.core:core-ktx:1.10.1 | init.gradle未生效或镜像源不可用 | 手动访问https://maven.aliyun.com/repository/google/com/android/tools/build/gradle/8.1.0/,确认页面可打开 |
Emulator: ERROR: Not enough memory to start AVD | IDEA 启动参数内存不足 | 修改idea64.exe.vmoptions,增加-Xmx4g -XX:MaxMetaspaceSize=512m |
5.2 独家避坑技巧
技巧一:Gradle Wrapper 的“隐形版本锁”
很多人以为改了gradle-wrapper.properties的distributionUrl就万事大吉,但gradle/wrapper/gradle-wrapper.jar文件本身也绑定了 Gradle 版本。若你下载的是gradle-8.0-bin.zip,但gradle-wrapper.jar是为7.4编译的,./gradlew会报错Unsupported Gradle Version。正确做法是:下载gradle-8.0-bin.zip后,用其自带的gradle/wrapper/gradle-wrapper.jar替换项目中的同名文件。
技巧二:SDK 路径的“双重绑定”陷阱
IDEA 会读取两个地方的 SDK 路径:一是Project Structure > SDK Location,二是项目根目录下的local.properties文件。后者内容为sdk.dir=D\:\\android-sdk(Windows 路径需双反斜杠)。若两者不一致,IDEA 会优先使用local.properties,导致Project Structure中设置的路径失效。我的做法是:先在 IDEA 中设置 SDK 路径,再点击File > Project Structure > SDK Location右下角的Generate local.properties file按钮,让 IDEA 自动生成一致的配置。
技巧三:R.java 的“缓存幽灵”
修改res/layout/activity_main.xml后,R.id.xxx不提示,Ctrl+Click无效。这不是代码问题,而是 IDEA 的索引缓存未更新。执行File > Invalidate Caches and Restart... > Invalidate and Restart,比重启 IDE 更彻底。
技巧四:真机安装的“签名绕过”
调试时Install APK失败,报错INSTALL_PARSE_FAILED_NO_CERTIFICATES。这是因为 IDEA 默认用debug.keystore签名,但某些国产手机(如华为、小米)强制要求 V2 签名。解决方案:在app/build.gradle的android { signingConfigs { debug { ... } } }中添加:
v1SigningEnabled true v2SigningEnabled true5.3 性能优化:让 IDEA 在 Android 项目中跑得更快
- 关闭实时 Lint 检查:
Settings > Editor > Inspections→ 搜索Android→ 取消勾选Android > Lint > All。Lint 在后台扫描耗 CPU,且 IDEA 的 Android Lint 支持不如 Android Studio 完善。 - 限制索引范围:
Settings > Directories→ 右键app/src/main/res→Mark as Resources Root;右键app/src/main/java→Mark as Sources Root。避免 IDEA 扫描build/、.gradle/等无关目录。 - 调整 JVM 参数:编辑
idea64.exe.vmoptions,将-Xmx从默认2g提升至4g,并添加-XX:ReservedCodeCacheSize=512m,这对 Kotlin 编译速度提升明显。
我在一台 16GB 内存的笔记本上实测:关闭 Lint 后,Ctrl+Space补全响应时间从 1.2 秒降至 0.3 秒;索引范围限定后,首次Gradle Sync内存占用从 3.8GB 降至 2.1GB。
6. 后续扩展:当你的 Android 模块需要对接 JNI、Camera SDK 或企业级认证
这套 IDEA + Android 环境的真正价值,体现在它能无缝接入更复杂的工程场景。比如客户要求将海康威视的HCNetSDK(C++ 动态库)集成到 Android 模块中,这时你需要:
- 在
app/src/main/cpp/下放置.so文件,并编写Android.mk; - 修改
app/build.gradle,添加externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } }; - IDEA 会自动识别 C++ 语法,但调试仍需 Android Studio 的 LLDB。我的做法是:用 IDEA 写 Java/Kotlin 逻辑,用 Android Studio 打开同一项目做 Native 调试,两者共享
local.properties和build.gradle,互不干扰。
再比如对接深视智能相机 SDK,其 Android 版本要求minSdkVersion 26且必须启用android:usesCleartextTraffic="true"。这些配置在 IDEA 中修改AndroidManifest.xml和build.gradle即可,无需切换 IDE。
最后分享一个小技巧:若项目需发布到华为应用市场,其审核要求targetSdkVersion ≤ 33(截至 2023 年底),而你本地用的是targetSdk 34。此时不必降级整个环境,只需在build.gradle中为huaweiRelease构建变体单独配置:
flavorDimensions "default" productFlavors { google { dimension "default" applicationIdSuffix ".google" } huawei { dimension "default" applicationIdSuffix ".huawei" // 华为渠道专用配置 android { targetSdk 33 } } }这样,assembleGoogleDebug和assembleHuaweiRelease可并行构建,环境零侵入。
这套方案跑了三年,支撑了 17 个跨平台项目,从工业 PDA 到医疗影像终端,再到教育类 AR 应用。它不追求“看起来像 Android Studio”,而是用最朴素的工具链组合,解决最真实的工程问题。当你面对的不是一个玩具 Demo,而是一个要跑在产线设备上的 Android 模块时,稳定、可控、可复现,才是真正的生产力。