Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
7cff071
👣: Crear deb para debian
VictorH028 Apr 13, 2025
a6cbcb7
👣: Crear deb para debian
VictorH028 Apr 13, 2025
d0c9b04
👣: Crear deb para debian
VictorH028 Apr 13, 2025
26fd974
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
65820d3
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
332f5ac
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
e420ee4
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
4cb96e5
👣1.0: Crear deb para debian y termux
VictorH028 Apr 13, 2025
a65ad12
👣1.0: Crear deb para debian y termux
VictorH028 Apr 13, 2025
8f18213
👣: Añadi plugin y actualize algunas tareas
VictorH028 Apr 14, 2025
d91c15a
Merge branch 'REAndroid:master' into master
VictorH028 Apr 19, 2025
202d716
👣: Comparaciones inecesarias con `logger`
VictorH028 Apr 15, 2025
535bf90
👣: Better logic for the deb
VictorH028 Apr 22, 2025
594f861
👣: Better logic for the deb
VictorH028 Apr 22, 2025
46ff58a
👣: Better logic for the deb
VictorH028 Apr 22, 2025
ef710c5
👣: Better logic for the deb
VictorH028 Apr 22, 2025
161bc1a
Merge branch 'REAndroid:master' into master
VictorH028 Apr 29, 2025
99560a2
Merge branch 'REAndroid:master' into master
VictorH028 May 4, 2025
5ea6b48
Merge branch 'REAndroid:master' into master
VictorH028 May 5, 2025
ed4285b
Merge branch 'REAndroid:master' into master
VictorH028 May 9, 2025
a9d97c0
Merge branch 'REAndroid:master' into master
VictorH028 May 17, 2025
d3338ee
Merge branch 'REAndroid:master' into master
VictorH028 Sep 15, 2025
fb944b5
Merge branch 'REAndroid:master' into master
VictorH028 Aug 1, 2026
915c4b7
build: actualizar Gradle a sintaxis moderna y Java 21
VictorH028 Sep 24, 2026
86e9687
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
80908de
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
65ec838
Update Gradle wrapper to version 8.5
VictorH028 Sep 24, 2026
0364b08
Change Gradle build command from betaJar to fatJar
VictorH028 Sep 24, 2026
cbe55b9
Update Gradle wrapper to version 8.5
VictorH028 Sep 24, 2026
1b7aee3
next: commit
VictorH028 Sep 24, 2026
37993b0
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
60edace
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
39420b2
build: update Gradle to modern syntax and Java 21
VictorH028 Sep 24, 2026
5ada7bd
Update Gradle wrapper to version 8.5
VictorH028 Sep 24, 2026
77f8b89
Merge branch 'REAndroid:master' into master
VictorH028 Sep 24, 2026
d1e2f80
Add..
VictorH028 Sep 24, 2026
a654c95
UI
VictorH028 Oct 4, 2026
6627286
UI
VictorH028 Oct 4, 2026
c526bd5
UI
VictorH028 Oct 4, 2026
b95158c
UI
VictorH028 Oct 4, 2026
745ce40
Update README
REAndroid Oct 4, 2026
5621fe6
Update ARSCLib.jar #243
REAndroid Oct 4, 2026
1b17e89
UI
VictorH028 Oct 5, 2026
152cac5
UI
VictorH028 Oct 5, 2026
a612a2c
UI
VictorH028 Oct 5, 2026
dbfe6cf
Update ARSCLib 1.4.1
REAndroid Oct 21, 2026
5d94bc0
Update ARSCLib
REAndroid Oct 24, 2026
eeb4a70
new: v2.0.4
VictorH028 Nov 5, 2026
bea6c47
Update: .....
VictorH028 Nov 6, 2026
df46d24
Update: Build jar
VictorH028 Nov 6, 2026
8d69224
fix: Language support
VictorH028 Nov 6, 2026
f031def
fix: switching to English
VictorH028 Nov 8, 2026
d398e44
Merge branch 'master' of https://github.com/VictorH028/APKEditor
VictorH028 Nov 8, 2026
3638fc2
fix: switching to English
VictorH028 Nov 8, 2026
262de3a
fix: switching to English
VictorH028 Nov 8, 2026
b2c7e4d
👣: Crear deb para debian
VictorH028 Apr 13, 2025
50e9597
👣: Crear deb para debian
VictorH028 Apr 13, 2025
c543e8b
👣: Crear deb para debian
VictorH028 Apr 13, 2025
f6cbb63
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
ad485c4
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
c1d54a0
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
c85b391
👣1.0: Crear deb para debian
VictorH028 Apr 13, 2025
28e20fe
👣1.0: Crear deb para debian y termux
VictorH028 Apr 13, 2025
5533044
👣1.0: Crear deb para debian y termux
VictorH028 Apr 13, 2025
dffa30d
👣: Añadi plugin y actualize algunas tareas
VictorH028 Apr 14, 2025
fa18520
👣: Comparaciones inecesarias con `logger`
VictorH028 Apr 15, 2025
2e82e18
👣: Better logic for the deb
VictorH028 Apr 22, 2025
04ed78c
👣: Better logic for the deb
VictorH028 Apr 22, 2025
a257082
👣: Better logic for the deb
VictorH028 Apr 22, 2025
50e354a
👣: Better logic for the deb
VictorH028 Apr 22, 2025
6ef98fd
build: actualizar Gradle a sintaxis moderna y Java 21
VictorH028 Sep 24, 2026
840a982
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
8152f3b
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
1a9f55c
Update Gradle wrapper to version 8.5
VictorH028 Sep 24, 2026
392e197
Change Gradle build command from betaJar to fatJar
VictorH028 Sep 24, 2026
2f7257b
Update Gradle wrapper to version 8.5
VictorH028 Sep 24, 2026
37ce4c1
next: commit
VictorH028 Sep 24, 2026
9c0a985
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
842a5f3
Update JDK version from 8 to 21 in workflow
VictorH028 Sep 24, 2026
89412ce
build: update Gradle to modern syntax and Java 21
VictorH028 Sep 24, 2026
743c494
Update Gradle wrapper to version 8.5
VictorH028 Sep 24, 2026
445a114
Add..
VictorH028 Sep 24, 2026
d62094c
UI
VictorH028 Oct 4, 2026
298b28c
UI
VictorH028 Oct 4, 2026
d5235cd
UI
VictorH028 Oct 4, 2026
0a26722
UI
VictorH028 Oct 5, 2026
038fd27
UI
VictorH028 Oct 5, 2026
c15eac7
UI
VictorH028 Oct 5, 2026
fcfa162
new: v2.0.4
VictorH028 Nov 5, 2026
8b15edd
Update: .....
VictorH028 Nov 6, 2026
c414d06
Update: Build jar
VictorH028 Nov 6, 2026
1e53e97
fix: Language support
VictorH028 Nov 6, 2026
9db68b6
fix: switching to English
VictorH028 Nov 8, 2026
eefc243
fix: switching to English
VictorH028 Nov 8, 2026
730bc11
fix: switching to English
VictorH028 Nov 8, 2026
7ace57b
fix: overdue commits
VictorH028 Nov 8, 2026
9db9a3b
style: small
VictorH028 Nov 8, 2026
bd1a9b8
Resolviendo conflictos
VictorH028 Nov 8, 2026
f5ee0fd
update the links of README.es.md
yonggamer Nov 8, 2026
34dcc37
fix link
yonggamer Nov 8, 2026
19cced3
opencode note
VictorH028 Nov 9, 2026
30f8dcb
new: svg
VictorH028 Nov 9, 2026
052f7e8
new:
VictorH028 Nov 9, 2026
02b9975
fix: Build
VictorH028 Nov 9, 2026
e2de7c0
fix: Build
VictorH028 Nov 9, 2026
30ab536
UI: JavaFX
VictorH028 Nov 13, 2026
dbbc9a1
UI: JavaFX
VictorH028 Nov 13, 2026
7bf1c62
note: JavaFX
VictorH028 Nov 13, 2026
25aec83
UI: JavaFX
VictorH028 Nov 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 33 additions & 11 deletions .github/workflows/gradle_build.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,52 @@
name: Build Jar
name: Build JavaFX GUI Jar

on:
push:
branches: [ "master" ]
branches: [ "master", "UI" ]
pull_request:
branches: [ "master" ]
branches: [ "master", "UI" ]
workflow_dispatch:

permissions:
contents: read

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up JDK 8

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '8'
java-version: '21'
distribution: 'temurin'

- uses: gradle/actions/setup-gradle@v4
- name: Build with Gradle
run: ./gradlew fatJar
- uses: actions/upload-artifact@v4

- name: Build JavaFX GUI jar
run: |
chmod +x gradlew
./gradlew clean guiFatJar --no-daemon
ls -lh build/libs build/javafx

- name: Install Xvfb
run: sudo apt-get update && sudo apt-get install -y xvfb

- name: JavaFX smoke test
run: xvfb-run -a ./gradlew javafxSmoke --no-daemon

- name: Package GUI artifact
run: |
mkdir -p dist/gui/javafx
cp build/libs/*-gui.jar dist/gui/
cp build/javafx/*.jar dist/gui/javafx/
ls -lh dist/gui dist/gui/javafx

- name: Upload GUI artifact
uses: actions/upload-artifact@v4
with:
name: APKEditor
path: build/libs
name: APKEDITOR-GUI
path: dist/gui
if-no-files-found: error
35 changes: 29 additions & 6 deletions .github/workflows/gradle_build_beta.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build Beta Jar
name: Build Beta Jars

on:
push:
Expand All @@ -11,20 +11,43 @@ permissions:

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up JDK 8

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '8'
java-version: '21'
distribution: 'temurin'

- uses: gradle/actions/setup-gradle@v4
<<<<<<< HEAD
with:
gradle-version: '8.5'
- name: Build with Gradle
run: ./gradlew betaJar
run: gradle fatJar --no-daemon
- uses: actions/upload-artifact@v4
=======

- name: Build CLI and JavaFX jars
run: |
chmod +x gradlew
./gradlew fatJar guiFatJar --no-daemon
ls -lh build/libs build/javafx

- name: Package beta jars
run: |
mkdir -p dist/APKEditor/javafx
cp build/libs/*.jar dist/APKEditor/
cp build/javafx/*.jar dist/APKEditor/javafx/
ls -lh dist/APKEditor dist/APKEditor/javafx

- name: Upload beta artifacts
uses: actions/upload-artifact@v4
>>>>>>> job-work
with:
name: APKEditor
path: build/libs
path: dist/APKEditor
if-no-files-found: error
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Project exclude paths
/README.md/
/.gradle/
/build/
/build/classes/java/main/
/.github/
/.github/

# JavaFX/proot local test artifacts
/debian-trixie/
hs_err_pid*.log
/core.*
Binary file added .img/ui.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .img/ui_last.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
68 changes: 68 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# AGENTS.md

APKEditor Futuristic: a native JavaFX GUI wrapping the upstream APKEditor engine, plus the upstream CLI. Single Gradle module (`rootProject.name = 'APKEditor'`), Java 21. The old Swing/Java2D UI was removed.

## Build & run

```bash
sh gradlew compileJava --offline # CLI + shared model/services
sh gradlew javafxClasses # JavaFX UI (downloads OpenJFX on first run)
sh gradlew guiFatJar # build/libs/APKEditor-1.4.9-gui.jar
sh gradlew fatJar --offline # build/libs/APKEditor-1.4.9-all.jar (CLI)
sh gradlew build -x test --offline # no tests exist
```

- JavaFX 21.0.13 is a Maven Central dependency with a platform classifier
(`linux`, `linux-aarch64`, `win`, `mac`, `mac-aarch64`). The first build needs
network; later builds can use `--offline` once the artifacts are cached.

- On Termux `./gradlew` fails with permission denied; always use `sh gradlew`.
- `sh gradlew run` launches the **CLI** (`com.reandroid.apkeditor.Main`), not the GUI.
- `guiFatJar`/`javafxRuntime` copy the downloaded JavaFX modules to
`build/javafx`. Run the jar with:
`java --module-path build/javafx --add-modules javafx.controls -jar build/libs/APKEditor-1.4.9-gui.jar`
- `guiFatJar` includes the JavaFX app classes plus the engine/shared classes, but
not the JavaFX runtime (it stays in `build/javafx`).
- Jar names are derived from `version` in `build.gradle` (currently `1.4.9`); CI globs `build/libs/*-gui.jar`.

## JavaFX UI

- Sources live in a separate `javafx` source set (`src/javafx/java`, `src/javafx/resources`). `compileJava`/`fatJar` do not depend on JavaFX; `javafxClasses` and `guiFatJar` do.
- Entrypoint: `com.reandroid.apkeditor.javafx.JavaFXApplication` -> `javafx.MainView`. Views live under `src/javafx/java/com/reandroid/apkeditor/javafx/view/`.
- The UI reuses `gui.model.AppState`, `gui.service.ApkService`, `gui.service.OperationService`, `gui.service.LogService`, `gui.i18n.I18n`, `gui.navigation.Route`, and `operations.OperationCatalog`. The remaining `gui` packages are shared model/service code, not a Swing UI.
- Services still publish callbacks on the AWT EDT (`SwingUtilities.invokeLater`). Wrap JavaFX updates with `com.reandroid.apkeditor.javafx.Fx.run` (`Platform.runLater`).
- Theme palettes live in `FxTheme`. `src/javafx/resources/styles/app.css` is a template whose `-fx-apx-*` tokens `FxTheme.renderCss(...)` replaces with concrete palette colors; `MainView` loads the rendered CSS as a `data:text/css` stylesheet. Use `derive(<color>, <pct>)` for glows/translucent variants so all themes stay coherent.
- Icons are SVG paths in `com.reandroid.apkeditor.javafx.Icons` (no image assets). The workspace editor is `com.reandroid.apkeditor.javafx.CodeEditor` (editable `TextArea` + read-only gutter + `Ln/Col` status); it has no syntax highlighting.
- Run on glibc Linux: `sh gradlew javafxRun`.
- Smoke test: `sh gradlew javafxSmoke`.
- Termux tests use **only** `bash proot-run.sh` or `bash proot-run.sh --smoke-test` (Debian proot + glibc JavaFX). It runs `javafxRuntime`, binds `build/javafx` as `/jfx-modules`, and uses `--module-path /jfx-modules`. Defaults: `JFX_BASE=$HOME/javaFX`, `ROOTFS=$JFX_BASE/debian-trixie`, `START_XVFB=1`; override with env vars.

## Dependencies & offline builds

- Engine deps are checked-in jars in `libs/` (`ARSCLib.jar`, `smali.jar`, `JCommand.jar`), loaded via `files(...)`, not Maven coordinates. Do not replace with remote deps.
- `--offline` is expected after the first build; Gradle wrapper is 8.5. JavaFX is the one dependency that needs an initial online resolution from Maven Central.

## Entrypoints & architecture

- CLI: `src/main/java/com/reandroid/apkeditor/Main.java`.
- GUI: `com.reandroid.apkeditor.javafx.JavaFXApplication` -> `MainView`.
- Operations are registered once in `operations/OperationCatalog.java` and run via `core/OperationRegistry` -> `LegacyOptionsOperation`.
- Views must not call `Decompiler`/`Builder`/`Protector` directly. Route work through `gui/service/OperationService`.
- Shared UI state lives in `gui/model/AppState` (PropertyChangeSupport); it must not contain engine logic.
- `docs/dev-ui.md` is the authoritative deep reference for UI structure, routes, themes, shortcuts, and limitations. Update it when UI behavior changes.

## Conventions

- GUI source comments (and `build.gradle` comments) are in Spanish; upstream engine code is English. Match the file you edit.
- GUI strings live in `src/main/resources/i18n/messages.properties` (English base) and `messages_es.properties`. Add every new key to both; `I18n` returns the raw key on a miss. Default UI language is Spanish.
- Engine CLI strings use `src/main/resources/strings/strings*.properties` (separate from GUI i18n).
- `jar` task uses `duplicatesStrategy = FAIL`: duplicate resources break the regular jar (fat jars use EXCLUDE).
- No test framework is configured; do not invent unit-test commands. Verify with `compileJava`/`javafxClasses`/`guiFatJar`, and use `javafxSmoke` or `bash proot-run.sh --smoke-test` only for the JavaFX entrypoint.

## Known limitations (do not "fix" silently)

- Editor edits are in-memory only; saving back to APK/project is not implemented.
- JavaFX editor has line numbers and status but no syntax highlighting.
- Theme, language, and session are not persisted across restarts.
- ZIP entries read are capped at 2 MB; tree is capped at 6000 entries; hex dump shows 4096 bytes.
- AAB loading is offered by the file selector but actual support depends on the engine.
6 changes: 6 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## Beta

- Actualisar a javaFX para un mejor estilo
- second
- third

Empty file modified LICENSE
100755 → 100644
Empty file.
Loading