Commit Graph
10 Commits
Author SHA1 Message Date
西风逍遥游 ecb84abdd0 fix(cmdline): don't inherit stale CI build outputs from the android SDK template
The official SDK's platform/apk template is compiled once by test-sdk.sh in the
release pipeline, so its app/build tree ships a leftover CI test APK inside the
zip. eve build copied the whole template (copyTree only skips top-level build
dirs), leaving a stale 123MB app-debug.apk built from a different game in every
assembled project. Skip app/build when copying the template, and stop zip-sdk.py
from packaging build/.gradle outputs in future SDK releases.
2026-08-22 09:52:43 +08:00
西风逍遥游 bad430f195 feat(cmdline): eve get android installs the official EVEngine SDK from GitHub release
eve now picks the eve-sdk-<plat>-<tag>.zip asset matching its own version
(v0.1.0-dev normalizes to v0.1.0; EVE_SDK_TAG overrides), verifies it against
SHA256SUMS, extracts eve-sdk/android into %LOCALAPPDATA%/EVEngine/sdk/android
(EVE_SDK_INSTALL_ROOT overrides), and records EVENGINE_SDK in eve-android.env
so ve build android finds it without --sdk or EVENGINE_SDK.

Also harden SDK discovery: only a share/eve/TARGET_PLATFORM marker counts as an
SDK root (build trees with a platform/ dir are no longer misdetected), and
findSdkRoot falls back to SDKs installed by ve get.
2026-08-22 09:44:07 +08:00
西风逍遥游 19775286b8 fix(cmdline): copy game assets into the APK and detect unsigned output
Real end-to-end verification (eve get android + eve build android ->
APK) surfaced two bugs:

- copyTreeContents mapped every source entry to the destination root
  instead of to/rel, so nested game files were never copied and
  top-level files collided with the destination directory; the APK
  shipped without assets/game. Copy relative paths in both modes.
- A release build without a signing config makes AGP emit
  app-release-unsigned.apk, which eve build did not recognize. Accept
  the unsigned name (with a hint) as a fallback.

The assemble test now uses REQUIRE for the asset/lib/APK assertions
(zeroerr treats CHECK failures as warnings, which CTest counted as
passing) so regressions fail the suite.
2026-08-22 08:34:57 +08:00
西风逍遥游 457b861666 refactor(cmdline): build/get work from the packaged SDK alone
Users only receive a prebuilt EVEngine SDK (runtime libs, APK template,
game shell) and have no engine source, Makefile, cmake or NDK. Rework:

- eve build android no longer shells out to make. It copies the SDK APK
  template (platform/apk) into an output dir, injects the game assets,
  copies the prebuilt lib/*.so into jniLibs/arm64-v8a, writes
  local.properties (sdk.dir), and runs the Gradle distribution
  (assembleRelease/assembleDebug). SDK root is found via --sdk,
  $EVENGINE_SDK, <sdk>/bin/eve, or cwd.
- eve get android installs what that flow needs: JDK 17, Android
  cmdline-tools, platform-tools, platforms;android-34, build-tools, and
  Gradle 8.5 (the APK template ships no gradlew.bat). The NDK is no
  longer installed because native code ships prebuilt in the SDK.
- Tests now drive a fake SDK + fake gradle to verify the whole APK
  assembly path, plus wrong-SDK-platform / missing-toolchain errors.
2026-08-22 02:18:18 +08:00
西风逍遥游 fa79576212 fix(cmdline): run android builds via Git Bash on Windows
The Android Makefile recipes use POSIX shell syntax (gradlew env
prefixes, cp -R, [ -d ... ]), so with cmd.exe as make's SHELL the
build/android target fails before cmake even runs. When Git for
Windows is installed, eve build android now wraps the make invocation
in `bash -lc`, falling back to the plain make command otherwise.
2026-08-22 02:04:56 +08:00
西风逍遥游 303203ff86 feat(cmdline): eve build <platform> dispatches to the platform Makefile
`eve build android` now runs the repo Makefile's build/android target with
ANDROID_GAME set (so an APK is produced from the current game), and the
other platforms map to build/win32|linux|macosx|ios[-debug]. A positional
that matches a known platform is treated as the platform; otherwise it
stays the game path (legacy behavior). The engine checkout root is
auto-detected by walking up from cwd, or via --sdk / $EVENGINE_SDK.

Android builds require the Android SDK; when it is missing the command
points the user at `eve get android`. Linux builds on a Windows host use
the Makefile WSL2 targets. Adds sdk_tools helpers (platform names, env,
shell runner) and regression tests with a fake Makefile target.
2026-08-22 02:00:42 +08:00
西风逍遥游 f0c407d246 Give each command a basic implementation 2024-06-02 12:00:12 -07:00
西风逍遥游 a51708bb65 improve cmd 2021-10-24 22:37:07 -07:00
西风逍遥游 3445b18b1f update module structure 2021-10-21 20:54:07 -07:00
西风逍遥游 407e3218e5 add cmdline and some basic code 2021-09-09 09:17:29 -07:00