A single Activity holding one WebView, in Java rather than Kotlin — for ~120 lines of setup Kotlin would only add its Gradle plugin, its stdlib in the APK and a third version to keep aligned with Gradle and AGP. One dependency: androidx.webkit 1.16.0. The assets are served from https://appassets.androidplatform.net through WebViewAssetLoader rather than file://. That is the part that matters: an https origin is a secure context, and localStorage — which holds every setting and the match in progress — is blocked on file://, so a saved game would silently vanish. Confirmed on device: force-quit mid-match and everything comes back. public_html stays the only copy of the web app. A task syncs it into the assets at build time, so the browser version and the app version cannot drift; the APK's index.html hashes identical to the working tree. sw.js is left out on purpose — it is cache-first, and a service-worker cache outlives an app upgrade, so it would serve a stale index.html with no way to clear it. The APK is the cache now. Three web APIs don't exist in a WebView, so the Activity supplies them: FLAG_KEEP_SCREEN_ON for navigator.wakeLock, native immersive mode for requestFullscreen(), and LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES so the panels' env(safe-area-inset-*) has something to report. textZoom is pinned to 100: the layout is built on clamp() and vw, and a large system font would scale the text inside it. The manifest declares no permissions whatsoever. Wiring note: AGP 9 refuses a Provider in sourceSets.assets.srcDir, since it can't tell generated from static directories. The sync is a task with a DirectoryProperty output, attached via androidComponents.onVariants, which is the supported path and carries the task dependency. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
83 lines
2.8 KiB
Batchfile
83 lines
2.8 KiB
Batchfile
@rem
|
|
@rem Copyright 2015 the original author or authors.
|
|
@rem
|
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
|
@rem you may not use this file except in compliance with the License.
|
|
@rem You may obtain a copy of the License at
|
|
@rem
|
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
|
@rem
|
|
@rem Unless required by applicable law or agreed to in writing, software
|
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@rem See the License for the specific language governing permissions and
|
|
@rem limitations under the License.
|
|
@rem
|
|
@rem SPDX-License-Identifier: Apache-2.0
|
|
@rem
|
|
|
|
@if "%DEBUG%"=="" @echo off
|
|
@rem ##########################################################################
|
|
@rem
|
|
@rem gradlew startup script for Windows
|
|
@rem
|
|
@rem ##########################################################################
|
|
|
|
@rem Set local scope for the variables, and ensure extensions are enabled
|
|
setlocal EnableExtensions
|
|
|
|
set DIRNAME=%~dp0
|
|
if "%DIRNAME%"=="" set DIRNAME=.
|
|
@rem This is normally unused
|
|
set APP_BASE_NAME=%~n0
|
|
set APP_HOME=%DIRNAME%
|
|
|
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
|
|
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
|
|
|
@rem Find java.exe
|
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
|
|
|
set JAVA_EXE=java.exe
|
|
%JAVA_EXE% -version >NUL 2>&1
|
|
if %ERRORLEVEL% equ 0 goto execute
|
|
|
|
echo. 1>&2
|
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
|
echo. 1>&2
|
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
|
echo location of your Java installation. 1>&2
|
|
|
|
"%COMSPEC%" /c exit 1
|
|
|
|
:findJavaFromJavaHome
|
|
set JAVA_HOME=%JAVA_HOME:"=%
|
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|
|
|
if exist "%JAVA_EXE%" goto execute
|
|
|
|
echo. 1>&2
|
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
|
echo. 1>&2
|
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
|
echo location of your Java installation. 1>&2
|
|
|
|
"%COMSPEC%" /c exit 1
|
|
|
|
:execute
|
|
@rem Setup the command line
|
|
|
|
|
|
|
|
@rem Execute gradlew
|
|
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
|
|
@rem which allows us to clear the local environment before executing the java command
|
|
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
|
|
|
|
:exitWithErrorLevel
|
|
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
|
|
"%COMSPEC%" /c exit %ERRORLEVEL%
|