Plan 015 phase 0 established that this app cross-compiles for Android with no source changes at all. A CGO_ENABLED=0 probe of the whole tree for android/arm64 fails on exactly two packages -- ebitengine/oto/v3 and wails/v3/pkg/application -- and both fail only because their Android implementation is cgo, which is what the NDK supplies. Notably modernc.org/sqlite, the entire database layer and the thing most likely to have no Android target, is clean. The fat APK (arm64-v8a + x86_64) builds in about 25 seconds. So build/android/ stops being ignored. This commit is the tree exactly as `wails3 generate build-assets` emits it, so that the next commit is a readable diff of what we changed and a future refresh has something to compare against. Two things about how it is carried: `wails3 update build-assets` does NOT generate it, contrary to what CLAUDE.md has claimed since the v3 migration. In beta.8 that command extracts only internal/commands/updatable_build_assets, which is darwin/ios/linux/windows; the android tree comes from `generate build-assets`, which rewrites the whole of build/. It was generated once into a scratch directory and copied across, so from here it is committed and hand-edited like source. Only its output is ignored -- jniLibs (~60MB of per-ABI c-shared libraries), gen/, overlay.json and Gradle's own directories. And it brings one Go file into ./... -- scripts/deps/install_deps.go, the interactive SDK installer behind `task android:install:deps`, which trips 24 of our strict linters. golangci excludes the directory rather than reformatting upstream's file, which the next refresh would undo and which would make the diff against upstream unreadable. This repo uses `make android-setup` instead.
84 lines
2.3 KiB
Groovy
84 lines
2.3 KiB
Groovy
plugins {
|
|
id 'com.android.application'
|
|
}
|
|
|
|
android {
|
|
namespace 'com.wails.app'
|
|
compileSdk 35
|
|
|
|
buildFeatures {
|
|
buildConfig = true
|
|
}
|
|
|
|
defaultConfig {
|
|
applicationId "com.wails.app"
|
|
minSdk 21
|
|
targetSdk 35
|
|
versionCode 1
|
|
versionName "1.0"
|
|
|
|
// Configure supported ABIs
|
|
ndk {
|
|
abiFilters 'arm64-v8a', 'x86_64'
|
|
}
|
|
}
|
|
|
|
def keystoreFile = System.getenv("ANDROID_KEYSTORE_FILE")
|
|
def hasKeystore = keystoreFile != null && !keystoreFile.trim().isEmpty()
|
|
|
|
signingConfigs {
|
|
// A real keystore can be provided via environment variables; without
|
|
// one, release builds are signed with the debug keystore so they can
|
|
// be installed for testing (not suitable for Play Store uploads).
|
|
release {
|
|
if (hasKeystore) {
|
|
storeFile file(keystoreFile)
|
|
storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
|
|
keyAlias System.getenv("ANDROID_KEY_ALIAS")
|
|
keyPassword System.getenv("ANDROID_KEY_PASSWORD")
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
signingConfig hasKeystore ? signingConfigs.release : signingConfigs.debug
|
|
}
|
|
debug {
|
|
debuggable true
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_11
|
|
targetCompatibility JavaVersion.VERSION_11
|
|
}
|
|
|
|
// Source sets configuration
|
|
sourceSets {
|
|
main {
|
|
// JNI libraries are in jniLibs folder
|
|
jniLibs.srcDirs = ['src/main/jniLibs']
|
|
// Assets for the WebView
|
|
assets.srcDirs = ['src/main/assets']
|
|
}
|
|
}
|
|
|
|
// Packaging options
|
|
packagingOptions {
|
|
// Don't strip Go symbols in debug builds
|
|
doNotStrip '*/arm64-v8a/libwails.so'
|
|
doNotStrip '*/x86_64/libwails.so'
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
implementation 'androidx.webkit:webkit:1.9.0'
|
|
implementation 'com.google.android.material:material:1.11.0'
|
|
implementation 'androidx.biometric:biometric:1.1.0'
|
|
implementation 'androidx.security:security-crypto:1.1.0-alpha06'
|
|
}
|