自己动手
$109 每个平台,一次性付费
WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。
在主页查看方案Claude Code
Android 构建失败的原因通常毫不起眼:Gradle 运行在错误的 JDK 上,Android Studio 比项目的 Gradle 插件还旧,重命名包名时漏掉了 google-services.json,或者 bundle 用了 Google Play 并不认可的密钥签名。Claude Code 可以运行 Gradle wrapper、阅读堆栈跟踪,并迅速修复其中的大部分问题。下面列出这些错误、相关命令,以及仍需由您负责的部分。
每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。
每个 Android 构建都依赖三个相互匹配的版本:运行 Gradle 的 JDK、固定在 gradle/wrapper/gradle-wrapper.properties 中的 Gradle 版本,以及在构建文件中声明的 Android Gradle 插件(AGP)。此外,app/build.gradle 中的 compileSdk 和 targetSdk 还需要安装对应的 SDK 平台。AGP 8 及更新版本至少需要 JDK 17。
经典陷阱是:Android Studio 使用自带的 JDK 进行构建,而终端中的 Claude Code 使用的是 JAVA_HOME 所指向的 JDK。这就是为什么一个项目在 IDE 中能正常构建,在代理的 shell 中却会失败,反之亦然。先修好环境。为了绕过 JDK 问题而升级 AGP 或 Gradle,会把一个十分钟就能解决的问题拖成整个周末。
WebViewGold Android 项目是一个标准的 Android Studio 项目(下载的文件夹名为 AndroidStudioSource),主要通过 Config.java 和 app/build.gradle 进行配置,详见Android 设置文档。
把输出粘贴到 Claude Code 中,或者让代理自己运行这些命令。在 Windows 上,请用 gradlew.bat 代替 ./gradlew。
# Run in the folder that contains gradlew
# Versions: Gradle, and the JVM it runs on
./gradlew --version
grep distributionUrl gradle/wrapper/gradle-wrapper.properties
grep -rnE "com.android.tools.build:gradle|com.android.application" build.gradle settings.gradle app/build.gradle
grep -nE "compileSdk|targetSdk|minSdk|applicationId|namespace|versionCode|versionName" app/build.gradle
java -version
echo "JAVA_HOME=$JAVA_HOME"
# Use the JDK that ships with Android Studio (macOS path; on Windows it is
# C:\Program Files\Android\Android Studio\jbr)
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
# Debug build with a readable log
./gradlew assembleDebug --stacktrace 2>&1 | tee build-debug.log
# Release App Bundle for Google Play (uses your signing config)
./gradlew bundleRelease 2>&1 | tee build-release.log| 错误(摘录) | 原因 | 修复方法 | 由谁处理 |
|---|---|---|---|
Android Gradle plugin requires Java 17 to run. You are currently using Java 11. | 终端使用的是旧版 JDK | 把 JAVA_HOME 指向 Android Studio 自带的 JDK,或指向 JDK 17 或 21。在 IDE 中:Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK | Claude(终端),您(IDE 设置) |
Unsupported class file major version 65 | 对于运行它的 JDK 来说,Gradle 版本太旧(65 代表 Java 21) | 用项目原本对应的 JDK 运行 Gradle;只有当最新的 WebViewGold 项目也提高了 wrapper 版本时,才跟着提高 | Claude |
Minimum supported Gradle version is … | wrapper 版本低于 AGP 版本的要求,往往是因为无意中升级了 AGP | 撤销 AGP 升级,或者把 wrapper 设为错误信息中给出的版本 | Claude |
The project is using an incompatible version (AGP …) of the Android Gradle plugin | Android Studio 比项目旧 | 更新 Android Studio;不要给项目降级 | 您 |
SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable… | 命令行构建不知道 SDK 在哪里 | 在 local.properties(绝不提交)中设置 sdk.dir,或者导出 ANDROID_HOME | Claude |
Failed to find target with hash string 'android-36' | 没有安装 compileSdk 对应的 SDK 平台 | 在 SDK Manager 中安装,或者运行 sdkmanager "platforms;android-36" | Claude 或您 |
Dependency '…' requires libraries and applications that depend on it to compile against version 36 or later | 某个库升级后超出了项目的 compileSdk | 撤销该库的升级,或者有意识地提高 compileSdk 并进行测试 | Claude |
No matching client found for package name 'com.example.app' | 重命名之后,google-services.json 仍属于旧包名 | 在 Firebase 中注册新包名,下载新的 google-services.json,替换 app/ 中的那一份 | 您(Firebase),Claude(文件) |
Keystore was tampered with, or password was incorrect | store 密码错误或 keystore 文件不对 | 自己检查 keystore.properties;绝不要把密码粘贴到聊天中 | 您 |
Play Console:Your Android App Bundle is signed with the wrong key | 签名所用的密钥不是 Google Play 期望的上传密钥 | 用 keytool -list -v -keystore your.jks 比对 SHA-1 指纹;找到正确的 keystore,或在 Play Console 中申请重置上传密钥 | 您 |
Play Console:Version code … has already been used | versionCode 没有提高 | 提高 app/build.gradle 中的 versionCode | Claude |
Play Console:You uploaded a debuggable APK or Android App Bundle | 上传的是调试构建版本 | 用 bundleRelease 构建,并上传 app/build/outputs/bundle/release/ 中的 .aab | Claude |
| Play Console:目标 API 级别错误 | targetSdk 低于 Google 当前的要求 | 参见下方的 targetSdk 部分 | Claude 和您 |

我的iOS WebView应用终于通过审核了。谢谢!!
WebViewGold for Android 自带的包名是 com.webviewgold.myappname,发布文档要求您在首次上传之前备份项目并重命名包名(有一段视频演示完整的重命名,另一段演示如何缩短名称)。这涉及三个标识符,而代理往往只改其中一个:
app/build.gradle 中的 applicationId:它是应用在 Google Play 中的身份。它必须唯一,首次上传后就永远不能更改;参见只选一次。package 行。按照视频中演示的重构方式重命名,然后让 Claude Code 用 grep -rn "com.webviewgold.myappname" app/ 查找遗漏之处。更新所有应该随新名称一起改变的内容,包括 Firebase 的 google-services.json,以及(如果您使用 App Links)assetlinks.json 中的包名。该文件还列有一个 SHA-256 指纹:启用 Play 应用签名后,请使用 Play Console 中显示的应用签名密钥指纹,而不是您上传密钥的指纹。
如果您从头开始设置发布签名,这是 Android 的标准做法:签名值来自一个只存在于您机器上的 keystore.properties 文件。把它作为一次性的、经过审阅的改动(自己写,或者让 Claude 添加一次),由您自己创建 keystore 和 properties 文件,并让两者都远离 Git。如果您的项目已经有一个能正常工作的 signingConfigs 代码块,就不要动它。
// app/build.gradle (excerpt, merge into the existing file)
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
release {
if (keystorePropertiesFile.exists()) {
storeFile file(keystoreProperties["storeFile"])
storePassword keystoreProperties["storePassword"]
keyAlias keystoreProperties["keyAlias"]
keyPassword keystoreProperties["keyPassword"]
}
}
}
buildTypes {
release {
// keep the template's existing release options, add only this line
signingConfig signingConfigs.release
}
}
}
// keystore.properties lives next to settings.gradle and is NOT committed
// (add keystore.properties, *.jks and *.keystore to .gitignore):
// storeFile=/Users/you/keys/example-upload.jks
// storePassword=...
// keyAlias=upload
// keyPassword=...先环境,后项目,最后才是签名。
安装 Android Studio 并打开一次项目,让它下载 SDK 并创建 local.properties。然后在包含 gradlew 的文件夹中启动 Claude Code。
粘贴下面的提示词。Claude 会收集各项版本信息,用 --stacktrace 运行调试构建,并指出第一个真正的错误。
JDK、SDK 路径和缺失的 SDK 平台优先处理。这些修复不会改动任何一个项目文件。
如果项目改动无法避免,代理会提出最小的兼容版本改动,并等待您的确认。单独 commit 这次改动,以便轻松回退。
在 keystore 就位的情况下运行 ./gradlew bundleRelease,或者在 Android Studio 中通过 Build > Generate Signed App Bundle 构建。
把 Play Console 的任何错误粘贴到 Claude Code 中。新的个人开发者账号在发布正式版之前还需要完成一次封闭测试;参见12 名测试人员要求。
第 5 点最重要:代理修复构建时,永远不需要您的 keystore 或密码。
这个文件夹是一个 WebViewGold Android 项目(包含 gradlew)。构建失败了。在改动任何内容之前先进行诊断。 1. 运行 ./gradlew --version 和 java -version,打印 JAVA_HOME,并显示:gradle/wrapper/gradle-wrapper.properties 中的 distributionUrl、Android Gradle 插件版本、compileSdk、targetSdk、minSdk、applicationId、namespace、versionCode 和 versionName。 2. 运行 ./gradlew assembleDebug --stacktrace,并把输出保存到 build-debug.log。 3. 引用第一个真正的错误并解释原因。说明它是环境问题(JDK、SDK 位置、缺失的 SDK 平台)还是项目问题。 4. 优先修复环境。除非错误使其无法避免,否则不要升级 Android Gradle 插件、Gradle、Kotlin 或任何依赖项;如果确实无法避免,请提出最小的兼容改动,并等待我的确认。 5. 绝不要打开、打印或修改 keystore 文件、keystore.properties、密码或 signingConfigs 代码块。 6. 调试构建通过后,给我构建发布 bundle 的命令,并列出 Google Play 会检查的值:targetSdk 是否符合当前要求,以及 versionCode 是否高于我上一次上传的版本。
local.properties 包含您的 SDK 路径,keystore 包含您的发布身份。两者都应写进 .gitignore。HOST 和 HOME_URL 指向生产域名。Android Studio 自带的 JDK 是稳妥的默认选择,因为 IDE 就是用它来运行 Gradle 的。AGP 8 及更新版本至少需要 JDK 17;把 JAVA_HOME 指向同一个 JDK,就能在终端中使用它。
几乎总是因为终端中的 JDK 不同,或者缺少 SDK 路径。比较两处 ./gradlew --version 的输出,并相应地设置 JAVA_HOME 和 sdk.dir。
丢失的密钥谁也找不回来。如果您的应用启用了 Play 应用签名,请在 Play Console 中申请重置上传密钥,并创建新的上传密钥。没有启用 Play 应用签名的话,丢失密钥就意味着要重新创建一个应用条目。
严格来说不必,但这通常是风险最低的做法,因为最新的项目已经使用了相互兼容的 Gradle 和插件版本。更新是免费的,Claude Code 可以帮您把设置迁移过去。
可以。安装 Android SDK 命令行工具后,./gradlew bundleRelease 就能在终端中完成构建。如果完全不想在本地做任何设置,Cloud Builder 会在浏览器中编译并上传应用。
结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。
$109 每个平台,一次性付费
WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。
在主页查看方案$349 每个许可证,一次性附加购买
无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。
Cloud Builder 如何运作 试用免费演示$698 每个平台 $798
把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。
Full Service 详情 服务提供方:冬季特惠价格有效期至 2026年12月31日。
App Store & Google Play 审核通过保证 – 否则 14 天内退款
想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。
退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。