Do it yourself
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main pageClaude Code
Android builds usually fail for unglamorous reasons: Gradle runs on the wrong JDK, Android Studio is older than the project's Gradle plugin, a package rename missed google-services.json, or the bundle is signed with a key Google Play does not expect. Claude Code can run the Gradle wrapper, read the stack trace and fix most of these quickly. Here are the errors, the commands and the parts that stay with you.
From $109 one-time per platform, or let our team do it all from $698.
Every Android build depends on three versions fitting together: the JDK that runs Gradle, the Gradle version pinned in gradle/wrapper/gradle-wrapper.properties, and the Android Gradle plugin (AGP) declared in the build files. On top of that, compileSdk and targetSdk in app/build.gradle need the matching SDK platform installed. AGP 8 and newer need at least JDK 17.
The classic trap: Android Studio builds with its own bundled JDK, while Claude Code in the terminal uses whatever JAVA_HOME points to. That is why a project can build fine in the IDE and fail in the agent's shell, or the other way around. Fix the environment first. Upgrading AGP or Gradle to get around a JDK problem is how a ten-minute issue turns into a weekend.
The WebViewGold Android project is a standard Android Studio project (the download folder is called AndroidStudioSource), configured mainly in Config.java and app/build.gradle, as the Android setup documentation shows.
Paste the output into Claude Code, or let the agent run the commands itself. On Windows, use gradlew.bat instead of ./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| Error (excerpt) | Cause | Fix | Who |
|---|---|---|---|
Android Gradle plugin requires Java 17 to run. You are currently using Java 11. | The terminal uses an old JDK | Point JAVA_HOME to the JDK bundled with Android Studio or to JDK 17 or 21. In the IDE: Settings, Build, Execution, Deployment, Build Tools, Gradle, Gradle JDK | Claude (terminal), you (IDE setting) |
Unsupported class file major version 65 | The Gradle version is too old for the JDK running it (65 is Java 21) | Run Gradle with the JDK the project was made for; raise the wrapper version only if the current WebViewGold project does | Claude |
Minimum supported Gradle version is … | The wrapper is older than the AGP version requires, often after an accidental AGP upgrade | Undo the AGP upgrade, or set the wrapper to the version named in the error | Claude |
The project is using an incompatible version (AGP …) of the Android Gradle plugin | Android Studio is older than the project | Update Android Studio; do not downgrade the project | You |
SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable… | Command-line builds do not know where the SDK is | Set sdk.dir in local.properties (never committed) or export ANDROID_HOME | Claude |
Failed to find target with hash string 'android-36' | The SDK platform for compileSdk is not installed | Install it in the SDK Manager or with sdkmanager "platforms;android-36" | Claude or you |
Dependency '…' requires libraries and applications that depend on it to compile against version 36 or later | A library was upgraded beyond the project's compileSdk | Undo the library upgrade, or raise compileSdk deliberately and test | Claude |
No matching client found for package name 'com.example.app' | google-services.json still belongs to the old package after a rename | Register the new package in Firebase, download a new google-services.json and replace the one in app/ | You (Firebase), Claude (file) |
Keystore was tampered with, or password was incorrect | Wrong store password or wrong keystore file | Check keystore.properties yourself; never paste passwords into the chat | You |
Play Console: Your Android App Bundle is signed with the wrong key | Signed with a different key than the upload key Google Play expects | Compare SHA-1 fingerprints with keytool -list -v -keystore your.jks; find the right keystore or request an upload key reset in the Play Console | You |
Play Console: Version code … has already been used | versionCode was not raised | Raise versionCode in app/build.gradle | Claude |
Play Console: You uploaded a debuggable APK or Android App Bundle | A debug build was uploaded | Build with bundleRelease and upload the .aab from app/build/outputs/bundle/release/ | Claude |
| Play Console: target API level error | targetSdk is below Google's current requirement | See the targetSdk section below | Claude and you |

My iOS WebView is finally approved. Thanks!!
WebViewGold for Android ships with the package name com.webviewgold.myappname, and the publishing documentation asks you to back up the project and rename it before your first upload (with one video for the full rename and one for shortening the name). Three identifiers are involved, and agents tend to change only one of them:
app/build.gradle: the identity in Google Play. It must be unique and can never change after the first upload; see choose it once.package line at the top of each file.Rename with the refactoring the video shows, then let Claude Code look for leftovers with grep -rn "com.webviewgold.myappname" app/. Update everything that should follow the new name, including google-services.json for Firebase and, if you use App Links, the package name in your assetlinks.json. That file also lists a SHA-256 fingerprint: with Play App Signing, use the app signing key fingerprint shown in the Play Console, not the one of your upload key.
If you set up release signing from scratch, this is the standard Android pattern: the signing values come from a keystore.properties file that only exists on your machine. Make it a one-time, reviewed change (write it yourself or let Claude add it once), create the keystore and the properties file yourself, and keep both out of Git. If your project already has a working signingConfigs block, leave it alone.
// 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=...Environment first, project second, signing last.
Install Android Studio and open the project once, so it downloads the SDK and creates local.properties. Then start Claude Code in the folder that contains gradlew.
Paste the prompt below. Claude collects the versions, runs a debug build with --stacktrace and names the first real error.
JDK, SDK path and missing SDK platforms come first. These fixes do not change a single project file.
If a project change is unavoidable, the agent proposes the smallest compatible version change and waits for your OK. Commit it separately so it is easy to revert.
Run ./gradlew bundleRelease with your keystore in place, or build it in Android Studio via Build, Generate Signed App Bundle.
Paste any Play Console error into Claude Code. New personal developer accounts also need a closed test before production; see the 12 testers requirement.
Point 5 is the important one: the agent never needs your keystore or passwords to fix a build.
This folder is a WebViewGold Android project (it contains gradlew). The build fails. Diagnose before changing anything. 1. Run ./gradlew --version and java -version, print JAVA_HOME, and show: distributionUrl from gradle/wrapper/gradle-wrapper.properties, the Android Gradle plugin version, compileSdk, targetSdk, minSdk, applicationId, namespace, versionCode and versionName. 2. Run ./gradlew assembleDebug --stacktrace and save the output to build-debug.log. 3. Quote the first real error and explain the cause. Say whether it is an environment problem (JDK, SDK location, missing SDK platform) or a project problem. 4. Prefer environment fixes. Do not upgrade the Android Gradle plugin, Gradle, Kotlin or any dependency unless the error makes it unavoidable; in that case propose the smallest compatible change and wait for my OK. 5. Never open, print or change keystore files, keystore.properties, passwords or the signingConfigs block. 6. When the debug build passes, give me the command for the release bundle and list the values Google Play will check: targetSdk against the current requirement, and versionCode against my last upload.
local.properties contains your SDK path, keystores contain your publishing identity. Both belong in .gitignore.HOST and HOME_URL in Config.java point to the production domain.The JDK bundled with Android Studio is the safe default, because that is what the IDE uses for Gradle. AGP 8 and newer need at least JDK 17; use the same JDK in the terminal by pointing JAVA_HOME at it.
Almost always a different JDK or a missing SDK path in the terminal. Compare the output of ./gradlew --version in both places and set JAVA_HOME and sdk.dir accordingly.
Nobody can recover a lost key. If your app uses Play App Signing, request an upload key reset in the Play Console and create a new upload key. Without Play App Signing, a lost key means a new app listing.
Not strictly, but it is usually the lowest-risk path, because the current project already uses compatible Gradle and plugin versions. Updates are free, and Claude Code can carry your settings over.
Yes. With the Android SDK command-line tools installed, ./gradlew bundleRelease builds from the terminal. Without any local setup, the Cloud Builder compiles and uploads the app from the browser.
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main page$349 per license, one-time add-on
No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.
How the Cloud Builder works Try the free demo$698 per platform $798
Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.
Full Service details Powered byWinter Sale prices valid until December 31, 2026.
App Store & Google Play approval guarantee – or your money back within 14 days
Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.
Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.