The real OrcaSlicer on Android: the same slicing engine and the same interface, ported to phones and tablets (unofficial)
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Unofficial community port, preview quality. This project is not affiliated with or endorsed by the OrcaSlicer team. Upstream OrcaSlicer lives at OrcaSlicer/OrcaSlicer.
This is not a "mobile companion" with a subset of features. It is built from OrcaSlicer's own source code:
libslic3r is built unchanged from upstream, so you get the same slicing, the same profiles and the same G-code as the desktop version.src/slic3r/GUI sources, together with functions extracted from them at build time.In a headset: OrcaSlicer XR runs OrcaSlicer on Meta Quest 3.
OrcaSlicer-android-arm64-preview.apk from the latest release. Almost every phone and tablet since 2017 is arm64. The x86_64 APK is for emulators and Chromebooks.Requires Android 9 (API 28) or newer and OpenGL ES 3.0. A device with 6 GB of RAM or more is recommended for large models.
Tested feature by feature against the desktop app on a tablet emulator:
The arm64 build has been run through the emulator's ARM translation. Reports from real devices are welcome.
Known limitations:
Bug reports with your device model and Android version are very welcome.
┌──────────────────────────────────────────────────────────────┐
│ Android app (mobile/app: Kotlin, Jetpack Compose) │
│ screens, dialogs and gizmo panels; GLSurfaceView for 3D │
├──────────────────────────────────────────────────────────────┤
│ JNI: JSON commands and events │
├──────────────────────────────────────────────────────────────┤
│ liborcacore.so (mobile/core) │
│ upstream src/slic3r/GUI sources and extracted functions, │
│ compiled against small stand-ins for the wx headers they │
│ include; OpenGL ES 3 rendering of the scene and Preview │
├──────────────────────────────────────────────────────────────┤
│ libslic3r (slicing engine, unchanged), libvgcode, ImGui, │
│ Boost, TBB, CGAL, OCCT, OpenVDB … cross-compiled; CPython │
│ 3.14 for Orca's plugin system │
├──────────────────────────────────────────────────────────────┤
│ Android: OpenGL ES 3 / EGL, system WebView, Storage Access │
│ Framework, NDK 29, API 28+, arm64-v8a and x86_64 │
└──────────────────────────────────────────────────────────────┘
Where the desktop logic lives inside wx classes, the port compiles the upstream code instead of copying it.
mobile/tools/extract_functions.py pulls the needed functions and class bodies out
of the upstream sources at build time (see mobile/core/CMakeLists.txt), and
mobile/core/shim provides the wx and GUI declarations they expect. The settings pages are
generated from upstream's Tab.cpp by mobile/tools/gen_settings_layout.py.
Changes to upstream OrcaSlicer are kept in one patch,
patches/orcaslicer-android.patch, applied to
OrcaSlicer 1ee0b730. It holds the Android dependency superbuild, GLSL ES
shaders and a GLES loader, and the switch that adds mobile/core to the build.
Versions 0.1.x took a different route: they ran Orca's wxWidgets GUI through wxWidgets' Qt backend. That build
(android/app, patches/wxWidgets-android.patch, build-all.sh) is
still in the repository but is no longer released.
Host: Linux x86_64 with about 60 GB free disk space. A full build takes a while, so use as many cores as you have.
Prerequisites
29.0.14206865, build-tools 34.0.0, platform android-34 and CMake 3.22.1.mobile/app.PATH. The scripts look in hosttools/pyenv/bin first; python3 -m venv hosttools/pyenv && hosttools/pyenv/bin/pip install cmake ninja sets that up.deps-android/<abi>/usr/local/libpython. Orca's plugin system needs it.Paths are read from the environment; see env.sh:
export ANDROID_SDK_ROOT=~/Android/sdk
export JAVA_HOME=~/jdk-17
export ORCA_KEYSTORE=~/.android/debug.keystore # alias "orcadebug", password "android"
Steps
./fetch-sources.sh # pinned OrcaSlicer checkout, patch applied
./configure-deps.sh arm64-v8a && ./run-deps.sh arm64 # Boost, TBB, CGAL, OCCT, OpenVDB, …
BUILD_TYPE=release mobile/build-mobile.sh arm64-v8a # liborcacore + the APK
The APK lands in mobile/app/app/build/outputs/apk/arm64/release/. Without BUILD_TYPE=release you get a debug build
with the package id org.orcaport.slicer.dev, which installs next to a release. x86_64 builds the same way, for
emulators.
GNU AGPL-3.0, the same as OrcaSlicer. This port stands on the work of OrcaSlicer, Bambu Studio, PrusaSlicer and Slic3r.