Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
277 commits
Select commit Hold shift + click to select a range
71e337c
fix: package installed split APKs as .apks input before patching
Jman-Github Feb 21, 2026
bc441aa
feat: add manager update push notifications and improve push notifica…
Jman-Github Feb 21, 2026
36c890d
feat: refine bundle/manager update alerts and websocket status
Jman-Github Feb 21, 2026
2c5a7f3
feat: add `Split APK installer` tool
Jman-Github Feb 22, 2026
769986c
fix: memory issues, `Patch confirmation` screen issues, and patcher p…
Jman-Github Feb 22, 2026
1b7ab23
fix: certain APKs obtained through downloader plugins causing errors …
Jman-Github Feb 22, 2026
7dd5c34
feat: redesign and reorganize settings screens
Jman-Github Feb 23, 2026
e6b596b
feat: minor UI corrections
Jman-Github Feb 23, 2026
127df6a
feat: add select from downloaded apps option to patch profiles settin…
Jman-Github Feb 23, 2026
636c5bb
feat: make package name always shown on `App info` screen
Jman-Github Feb 23, 2026
cfcc5d8
feat: improve `Create custom YouTube icons & headers` tool screen & a…
Jman-Github Feb 23, 2026
bf62d1a
chore: generate ABI specific artifacts & update detection accordingly
Jman-Github Feb 23, 2026
be84945
Merge branch 'main' into dev
Jman-Github Feb 23, 2026
9f05280
feat: convert `Create custom YouTube icons & headers` screen color pi…
Jman-Github Feb 23, 2026
8680a89
fix: exported keystores having the `.json` file extension
Jman-Github Feb 23, 2026
1963019
feat: correct a few things in settings
Jman-Github Feb 26, 2026
a2a1b52
fix: UI bugs on the `Create custom YouTube icons & headers` tool screen
Jman-Github Feb 27, 2026
3f0ab07
fix: `Tools` tab not being scrollable
Jman-Github Feb 27, 2026
e415a1f
fix: sync top bar/fab state with fast tab swipes
Jman-Github Feb 27, 2026
8314607
fix: clarify the patch profile APK placeholder text from `No APK sele…
Jman-Github Feb 27, 2026
f407d8f
fix: resolve patching notification issues
Jman-Github Feb 28, 2026
1260797
fix: crashes when Android Documents Provider is used to export apps f…
Jman-Github Mar 1, 2026
439cb2b
feat: add loading screen for selecting an app from storage
Jman-Github Mar 2, 2026
3c9ca5e
feat: add ReVanced Patcher v22 support with backwards compatibility f…
Jman-Github Mar 2, 2026
7b09828
fix: enforce runtime compatibility and stabilize ReVanced v22 split m…
Jman-Github Mar 3, 2026
0074012
docs: changelog version
Jman-Github Mar 3, 2026
de74add
fix: stabilize process runtimes and align revanced-v22 WriteAPK dex p…
Jman-Github Mar 4, 2026
c0f6122
fix: improve patcher write progress, ReVanced v22 runtime stability a…
Jman-Github Mar 5, 2026
cc0cb04
fix: restore multi-bundle app details and apps tab selection
Jman-Github Mar 5, 2026
75906b8
fix: disable and reset dependent patching flow settings
Jman-Github Mar 6, 2026
021488f
fix: remove duplicate export button from app info screen
Jman-Github Mar 6, 2026
bc4cf74
fix: correct export filename format field cursor and scroll behavior
Jman-Github Mar 6, 2026
5f8fd8d
fix: smooth patcher step transitions, update runtime merge tooling, a…
Jman-Github Mar 7, 2026
de20d54
feat: add configurable bundle changelog history backfill and storage …
Jman-Github Mar 7, 2026
a6fb7b9
fix: harden manager update resume and release asset selection
Jman-Github Mar 7, 2026
57ec16e
fix: improve patcher progress flow, logging, and saved app handling
Jman-Github Mar 8, 2026
d878250
fix: stabilize patcher progress and split merge behavior across runtimes
Jman-Github Mar 8, 2026
a0c2979
feat: rename the manager keystore and improve export format editing
Jman-Github Mar 8, 2026
3ac8e0d
fix: correct predictive back handling and previews
Jman-Github Mar 8, 2026
6599e2e
fix: update AAPT2 binaries and report the selected binary in patcher …
Jman-Github Mar 8, 2026
0c0b4b7
feat: polish search, patch profile APK handling, and patcher UI
Jman-Github Mar 8, 2026
f1ef8ee
feat: support selected APK versions in patch profiles and harden bund…
Jman-Github Mar 9, 2026
8bd1728
fix: `Patching in progress` notification issues
Jman-Github Mar 9, 2026
9f84f21
fix: auto-generate the signing keystore on first use
Jman-Github Mar 9, 2026
8480731
feat: add latest-only downloader retention and delete confirmation
Jman-Github Mar 9, 2026
cb5c15d
feat: update manager update notification
Jman-Github Mar 9, 2026
4cb7fb6
feat: increase size of status bar icon
Jman-Github Mar 9, 2026
5c45cae
feat: improve patch bundle update notification wording
Jman-Github Mar 9, 2026
321d764
feat: track viewed manager updates in the dashboard icon
Jman-Github Mar 10, 2026
c578a43
fix: improve background update scheduling and notifications
Jman-Github Mar 10, 2026
f138413
feat: reorder General settings sections
Jman-Github Mar 10, 2026
8ed272c
fix: clarify package selection wording
Jman-Github Mar 10, 2026
d3ab0fe
feat: rename the patch prep app info screen
Jman-Github Mar 10, 2026
31bb589
feat: align dashboard search hint wording across tabs
Jman-Github Mar 10, 2026
6e54233
feat: improve patch profile bundle tabs and option menus
Jman-Github Mar 10, 2026
27af069
fix: preserve patch profile options and show bundle patch counts
Jman-Github Mar 10, 2026
e63690a
feat: clarify changelog links to GitHub
Jman-Github Mar 10, 2026
8caf1f9
feat: add changelog preview to the manager update dialog
Jman-Github Mar 10, 2026
966c0d6
feat: prompt for restart after app language changes
Jman-Github Mar 10, 2026
ace0592
feat: remove extra UI line on `General` settings screen
Jman-Github Mar 10, 2026
9715f5e
fix: correct fullscreen back gesture previews (again)
Jman-Github Mar 10, 2026
9597594
fix: stop stale patching notifications after cancellation
Jman-Github Mar 10, 2026
36978e0
fix: fix patcher cancellation and progress desync
Jman-Github Mar 10, 2026
e58b5d8
fix: isolate patch profile selections from last-used patch state
Jman-Github Mar 11, 2026
297cbd6
feat: add adjustable accidental swipe protection
Jman-Github Mar 12, 2026
586cfc8
fix: preserve saved patched app variants when repatching installed apps
Jman-Github Mar 12, 2026
328228b
feat: improve split APK merge flow and reliability
Jman-Github Mar 13, 2026
1123548
fix: correct uninstall error reporting
Jman-Github Mar 13, 2026
3c3a43f
fix: improve predictive back preview handling
Jman-Github Mar 14, 2026
7f527ef
fix: correct saved app persistence and duplicate app entries
Jman-Github Mar 15, 2026
42d4a94
feat: add subsection icons and refine settings surfaces
Jman-Github Mar 16, 2026
050887c
feat: polish settings actions UI, about screen UI and dashboard UI
Jman-Github Mar 16, 2026
81c6c21
fix: stdio warnings causing patcher progress issues
Jman-Github Mar 16, 2026
993f77f
feat: overhaul downloader plugin sources and host compatibility
Jman-Github Mar 18, 2026
75fc96c
feat: add ReVanced announcements and notification support
Jman-Github Mar 18, 2026
bf63e68
fix: harden split patching and merge stability across runtimes
Jman-Github Mar 22, 2026
0cb3cbb
fix: refresh dashboard announcements on resume
Jman-Github Mar 22, 2026
089510d
feat: fix patching notifaction progress issues and bump Morphe patche…
Jman-Github Mar 24, 2026
d7961d4
fix: improve patch bundle URL dialog input
Jman-Github Mar 24, 2026
2b58e75
feat: stop auto-seeding remote downloader plugins on startup & fix cr…
Jman-Github Mar 26, 2026
30c9fdf
fix: reduce runtime patch memory retention
Jman-Github Mar 26, 2026
523bcbc
fix: improve APK file detection across app flows
Jman-Github Mar 26, 2026
f57d8b3
fix: sanitize malformed APK resources before patching
Jman-Github Mar 28, 2026
60e0ca2
fix: tighten patch bundle type detection
Jman-Github Mar 28, 2026
9723a42
fix: preserve replaced saved-app variants and clarify patcher save se…
Jman-Github Mar 28, 2026
ad86183
refactor: migrate URV sources to `app.urv.manager`
Jman-Github Mar 28, 2026
e554741
fix: align fullscreen bundle dialog system bars
Jman-Github Mar 28, 2026
6b0df94
fix: correct downloader plugin warning on clean installs & restore do…
Jman-Github Mar 28, 2026
adfc8e3
fix: resolve patch bundle URL editor double-confirm
Jman-Github Mar 29, 2026
04d636a
fix: possibly resolve issues with patching Google Photos with `De-ReV…
Jman-Github Mar 30, 2026
e3e1c11
fix: resolve split APK merger edge cases
Jman-Github Mar 31, 2026
7ab4364
fix: harden patch worker lifecycle and pin smali deps
Jman-Github Apr 1, 2026
545c627
fix: stabilize patcher progress UI across runtimes
Jman-Github Apr 3, 2026
e5b0dcf
fix: respect patch action collapse preference
Jman-Github Apr 3, 2026
89a6832
fix: preserve custom bundle names in update notifications
Jman-Github Apr 4, 2026
cc42bc8
feat: request required permissions after settings import
Jman-Github Apr 4, 2026
8599980
fix: refine split APK merge selection and progress behavior
Jman-Github Apr 5, 2026
ccaf818
feat: remove uneeded `libaapt2.so` binaries & aapt2 selector system
Jman-Github Apr 5, 2026
0c8e91e
fix: improve settings action button behavior under screen zoom
Jman-Github Apr 5, 2026
45a1142
fix: handle in-process patcher OOM failures safely
Jman-Github Apr 5, 2026
26150f8
fix: sync write-apk progress between notification and patcher UI
Jman-Github Apr 8, 2026
a4d03e9
fix: polish patch profile and custom asset UI edge cases
Jman-Github Apr 8, 2026
573f64e
fix: harden remote patch bundle updates and API refresh flow
Jman-Github Apr 9, 2026
f07000f
fix: universal fallback safeguard handling
Jman-Github Apr 9, 2026
bad7b8d
feat: add about credits and in-app licensing viewers & harden root se…
Jman-Github Apr 10, 2026
78af766
feat: add profile-based builds and profile-aware manager updates
Jman-Github Apr 10, 2026
f3179dc
docs: changelog
Jman-Github Apr 10, 2026
7503280
feat: add merge split APK progress and log export UI
Jman-Github Apr 10, 2026
bdffe0d
feat: refine update status
Jman-Github Apr 10, 2026
4e5301d
fix: bundle and profile count pluralization
Jman-Github Apr 11, 2026
33c5fe3
feat: refine update changelog typography
Jman-Github Apr 11, 2026
5bed599
fix: set explicit gh repo context for dev and release publish jobs
Jman-Github Apr 11, 2026
ad611db
fix: rename split filter and correct bundle update grammar
Jman-Github Apr 11, 2026
daa2a7c
fix: polish installer notes, clickable link punctuation and patch bun…
Jman-Github Apr 11, 2026
fa1fe1b
feat: remove `MEDIUM` build profile
Jman-Github Apr 11, 2026
7196367
feat: refine About screen layout and settings status styling
Jman-Github Apr 11, 2026
a0fa546
feat: polish merge tool and patch bundle copy
Jman-Github Apr 11, 2026
f96d86e
fix: duplicate saved entries for rooted mount installs
Jman-Github Apr 12, 2026
753492d
feat: polish log actions and delete dialog copy
Jman-Github Apr 12, 2026
cd653e9
fix: align dialog action buttons to the trailing edge
Jman-Github Apr 12, 2026
f419bc2
feat: gate app input until patch bundles finish loading
Jman-Github Apr 12, 2026
e408e76
fix: preserve selected local APK state across patcher navigation
Jman-Github Apr 13, 2026
472b3ba
feat: exclude ReVanced v21 patcher runtime from `LITE` build type
Jman-Github Apr 13, 2026
303f8d8
fix: sync patching notification lifecycle and progress state
Jman-Github Apr 15, 2026
fca9fc7
fix: improve downloader plugin recovery and import dialog layout
Jman-Github Apr 15, 2026
9faf78f
fix: stop creating unused legacy root mount directories
Jman-Github Apr 15, 2026
00b7f57
fix: refine import export settings wording and order
Jman-Github Apr 15, 2026
27f142a
fix: improve patcher progress replay and app metadata fallback handling
Jman-Github Apr 17, 2026
758fc92
fix: keep dashboard storage selection on the loading state
Jman-Github Apr 18, 2026
dd937f9
fix: clean up dashboard selection state across tabs
Jman-Github Apr 18, 2026
28fb497
fix: stop predictive back preview on intercepted UI back actions
Jman-Github Apr 18, 2026
0fe9039
fix: framework cache recovery across runtimes
Jman-Github Apr 18, 2026
c0f7e97
feat: bump morphe patcher to `1.4.1` & add Morphe bytecode mode setting
Jman-Github Apr 19, 2026
1287997
fix: collapse duplicate saved entries when installing the same patche…
Jman-Github Apr 20, 2026
5b5d673
fix: framework cache validation and probe temp handling
Jman-Github Apr 20, 2026
35c4ad4
feat: only make the manager version value selectable
Jman-Github Apr 20, 2026
2e1f013
chore: use canonical ABI names for manager APKs and updater assets
Jman-Github Apr 20, 2026
57f923e
feat: add patch option import-export to patch selection backups
Jman-Github Apr 21, 2026
d1a3768
feat: block interaction during app selection loading
Jman-Github Apr 21, 2026
1f527a6
feat: pluralize dashboard delete confirmation dialogs
Jman-Github Apr 21, 2026
c73f8b2
feat: improve dialog and search keyboard autofocus
Jman-Github Apr 22, 2026
5bcd1d1
feat: show selected split count in merge action FAB
Jman-Github Apr 22, 2026
e946a09
feat: add per-install installer selection for patcher and saved apps
Jman-Github Apr 22, 2026
9dde96b
fix: split archive display selection for metadata
Jman-Github Apr 22, 2026
8cf9f42
feat: add configurable patcher logging modes
Jman-Github Apr 23, 2026
c2f9aaa
fix: preserve required split APK config files
Jman-Github Apr 24, 2026
28ce483
feat: remember split merge preset choice
Jman-Github Apr 24, 2026
bea3117
feat: add latest release toggle for downloader plugin sources
Jman-Github Apr 24, 2026
bc74e0d
feat: Various improvements to string consistency (#433)
Kuddus73 Apr 25, 2026
d2a766e
feat: improve UI messaging and bundle feedback & bump Morphe Patcher
Jman-Github Apr 25, 2026
203cc53
Resolve conflicts and upstream with https://github.com/Jman-Github/Un…
Jman-Github Apr 25, 2026
7f7f1a7
fix: split APK tool settings and installer log UX
Jman-Github Apr 26, 2026
8939d79
fix: duplicate saved app entries after custom installs
Jman-Github Apr 26, 2026
cc09801
fix: respect patch action collapse setting
Jman-Github Apr 26, 2026
c1922da
feat: add color picker and normalize patch option colors & bump Morph…
Jman-Github Apr 26, 2026
a3b008b
feat: move input cursors to the end when focused
Jman-Github Apr 27, 2026
cc29a13
feat: add storage and cache management settings & upgrade assets from…
Jman-Github Apr 29, 2026
03019d3
feat: improve storage cleanup controls and add auto-clear cache
Jman-Github Apr 30, 2026
90a2d2c
feat: use patch icon for split merge action
Jman-Github May 1, 2026
3723927
feat: clean up split merge selection actions
Jman-Github May 1, 2026
7fcac76
feat: add manager update changelog display setting
Jman-Github May 1, 2026
b3aed57
feat: keep screen awake during split merge
Jman-Github May 1, 2026
9b9920e
feat: add patch failure continuation support
Jman-Github May 5, 2026
c8a33c5
feat: string consistency improvements (#449)
Kuddus73 May 6, 2026
b1a1804
feat: move legacy runtimes to plugins
Jman-Github May 15, 2026
07d182b
Merge branch 'dev' of https://github.com/Jman-Github/Universal-ReVanc…
Jman-Github May 15, 2026
2765a9a
fix: bundle update notification disappearing after repeat checks
Jman-Github May 15, 2026
78e1de9
fix: prerelease patch bundle update badges
Jman-Github May 16, 2026
0a6285f
feat: polish runtime plugin settings and release signing
Jman-Github May 16, 2026
988ea3e
feat: align dialog confirmation buttons
Jman-Github May 17, 2026
7138e19
feat: match keystore converter error text size
Jman-Github May 17, 2026
23a7c4c
feat: refine bundle filters and organize UI
Jman-Github May 17, 2026
65e191b
feat: fix saved app entries and polish UI behavior
Jman-Github May 17, 2026
707c7d0
ci: fix release/dev workflows
Jman-Github May 18, 2026
61c5050
feat: improve patcher runtime plugin import and trust dialogs
Jman-Github May 18, 2026
1464d0a
fix: prune orphaned saved patched APKs
Jman-Github May 19, 2026
ad1048f
feat: Improve plugin source settings
Jman-Github May 20, 2026
7d95d53
feat: Improve plugin trust dialogs
Jman-Github May 20, 2026
0bd0065
feat: Polish English settings strings
Jman-Github May 20, 2026
78ec2c1
feat: Polish runtime plugin dialog actions
Jman-Github May 22, 2026
5442b98
feat: Polish plugin labels and bundle empty state
Jman-Github May 24, 2026
6469ceb
feat: show ABI labels for saved patched apps
Jman-Github May 24, 2026
3000e74
fix: show empty bundle search state after pagination ends
Jman-Github May 24, 2026
49aeb70
feat: Polish bundle recommendations and runtime plugin UI
Jman-Github May 30, 2026
3613ee9
fix: hide color picker for path patch options
Jman-Github May 30, 2026
144bbea
feat: center remaining patch dialog text
Jman-Github May 30, 2026
f979b45
feat: expand patch filter sheet by default
Jman-Github May 30, 2026
e13ae67
fix: use bundle display names in version dialogs
Jman-Github May 30, 2026
bb4595f
fix: retry ReVanced output with fallback AAPT2
Jman-Github Jun 2, 2026
6d21e58
feat: improve runtime plugins icon
Jman-Github Jun 2, 2026
db5ff99
feat: add patch selection sorting options
Jman-Github Jun 2, 2026
24eb061
feat: add YouTube asset background and notification icon options
Jman-Github Jun 3, 2026
d191a4f
feat: enlarge bundle discovery empty state text
Jman-Github Jun 3, 2026
2c4d1e5
feat: add runtime plugin notification
Jman-Github Jun 4, 2026
183536e
feat: support experimental Morphe patch versions
Jman-Github Jun 4, 2026
dcbe177
feat: standardize exported log filenames
Jman-Github Jun 9, 2026
c2fc76a
fix: select ReVanced v22 AAPT2 after sanitizing input
Jman-Github Jun 9, 2026
aad4ca7
feat: improve background notification UI
Jman-Github Jun 9, 2026
a932fe8
feat: add Split APK merger step controls
Jman-Github Jun 9, 2026
f0322bd
feat: add split APK merger progress notification
Jman-Github Jun 10, 2026
62c62c4
feat: add manager icon to patching notification
Jman-Github Jun 10, 2026
d4849bc
feat: improve patcher runtime button styling
Jman-Github Jun 10, 2026
dcab09c
fix: show uninstall in local runtime trust dialog
Jman-Github Jun 10, 2026
3ba80e1
feat: update plugin dialog labels and copy toasts
Jman-Github Jun 10, 2026
d3e2e88
feat: use copy icons for plugin URLs
Jman-Github Jun 10, 2026
1bd0007
feat: move latest option last
Jman-Github Jun 10, 2026
132fb64
feat: align plugin dialogs and actions
Jman-Github Jun 10, 2026
1f9cb6f
feat: compact saved app bundle update badges
Jman-Github Jun 10, 2026
99fa053
feat: improve plugin labels and dialog consistency
Jman-Github Jun 10, 2026
0b8bcae
feat: add force patch bundle download toasts
Jman-Github Jun 10, 2026
a2ed688
feat: confirm revoke trust for plugins
Jman-Github Jun 10, 2026
99e31d1
feat: polish bundle, storage, and dialog UI
Jman-Github Jun 10, 2026
2dc6fa3
feat: add APK signer tool
Jman-Github Jun 11, 2026
af291ea
feat: add Shizuku Google Play source
Jman-Github Jun 11, 2026
37ccff9
fix: color option detection for path-like values
Jman-Github Jun 12, 2026
e6eb93b
fix: bundle update notification lifecycle issues
Jman-Github Jun 12, 2026
b487fce
feat: center dialog title alignment
Jman-Github Jun 12, 2026
344fb38
feat: add patch profile action controls and fix selector back
Jman-Github Jun 12, 2026
ad9b949
feat: center more dialog titles
Jman-Github Jun 12, 2026
d10f8cb
feat: improve patch bundle and profile import summaries
Jman-Github Jun 13, 2026
ee8755a
feat: center install result dialog titles
Jman-Github Jun 13, 2026
e280c1f
fix: correct changelogs
Jman-Github Jun 13, 2026
bdbcac0
feat: add merged APK filename customization
Jman-Github Jun 13, 2026
11dd354
feat: center downloader help and language restart dialog text
Jman-Github Jun 13, 2026
ca9f2cd
feat: allow combined cleanup filters in split APK merger
Jman-Github Jun 14, 2026
19a293c
feat: center and standardize supported version dialogs
Jman-Github Jun 14, 2026
c1d76c5
feat: add new patches filter and section
Jman-Github Jun 14, 2026
7b0aeba
fix: wrong issue link in changelogs
Jman-Github Jun 14, 2026
1624e61
feat: Center signature mismatch dialog body text across install flows
Jman-Github Jun 14, 2026
7d83c35
feat: Use alias and password defaults for manager keystores
Jman-Github Jun 14, 2026
3a9d39f
feat: Add repository URL imports for remote patch bundles
Jman-Github Jun 14, 2026
8ffc431
feat: bump v21 plugin version
Jman-Github Jun 14, 2026
7c854f0
fix: disabled saved app badge toggle state
Jman-Github Jun 14, 2026
6db25ad
fix: merger step auto-collapse behavior
Jman-Github Jun 14, 2026
34e4a20
fix: merge split APK tool filter persistence
Jman-Github Jun 16, 2026
5f25f4c
feat: Improve split APK tool downloader plugin flow
Jman-Github Jun 16, 2026
2389829
feat: add live memory graphs to patcher and merger
Jman-Github Jun 27, 2026
ee56f55
feat: force isolated patching and split APK merging
Jman-Github Jun 28, 2026
7ff8de0
fix: prevent bundle update notification reposts
Jman-Github Jun 28, 2026
2629d75
fix: prevent split merge progress regression
Jman-Github Jun 28, 2026
ede20fd
fix: dismiss notification on cancellation
Jman-Github Jun 28, 2026
bbc3e00
fix: keep bundle update badges visible
Jman-Github Jun 28, 2026
0a0f478
fix: keep back handling active after merge
Jman-Github Jun 28, 2026
bf15ee6
refactor: remove unused system back long press
Jman-Github Jun 29, 2026
e312572
feat: restore saved bundle selection
Jman-Github Jun 30, 2026
02c57bd
fix: reload patched apps after boot
Jman-Github Jun 30, 2026
f1a1e2d
fix: remove progress bar stop indicators
Jman-Github Jun 30, 2026
bc9d0f6
feat: add detailed patching progress
Jman-Github Jul 1, 2026
6cb88a1
feat: show color previews for option presets
Jman-Github Jul 1, 2026
4bc32d6
feat: label loaded local plugins consistently
Jman-Github Jul 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
171 changes: 110 additions & 61 deletions .github/workflows/dev-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,17 @@ on:
workflow_dispatch:

jobs:
build:
name: Build signed APK
prepare:
name: Prepare dev metadata
runs-on: ubuntu-latest
permissions:
contents: write

outputs:
version: ${{ steps.changelog.outputs.version }}
base_version: ${{ steps.changelog.outputs.base_version }}
dev_suffix: ${{ steps.changelog.outputs.dev_suffix }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Java
id: setup-java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'

- name: Set Gradle Java Home
run: echo "ORG_GRADLE_JAVA_HOME=${{ steps.setup-java.outputs.path }}" >> "$GITHUB_ENV"

- name: Cache Gradle
uses: burrunan/gradle-cache-action@v3

- name: Setup keystore
run: |
echo "${{ secrets.KEYSTORE }}" | base64 --decode > "app/keystore.jks"

- name: Setup Node.js
uses: actions/setup-node@v4
with:
Expand Down Expand Up @@ -66,6 +50,42 @@ jobs:
fs.appendFileSync(process.env.GITHUB_OUTPUT, `dev_suffix=${devSuffix}\n`);
NODE

- name: Upload dev release notes
uses: actions/upload-artifact@v4
with:
name: dev-release-notes
retention-days: 1
if-no-files-found: error
path: dev_release_notes.md

build:
name: Build signed APKs
runs-on: ubuntu-latest
needs: prepare
permissions:
contents: write

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Java
id: setup-java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'

- name: Set Gradle Java Home
run: echo "ORG_GRADLE_JAVA_HOME=${{ steps.setup-java.outputs.path }}" >> "$GITHUB_ENV"

- name: Cache Gradle
uses: burrunan/gradle-cache-action@v3

- name: Setup keystore
run: |
echo "${{ secrets.KEYSTORE }}" | base64 --decode > "app/keystore.jks"

- name: Build dev
env:
GITHUB_ACTOR: ${{ github.actor }}
Expand All @@ -75,77 +95,106 @@ jobs:
KEYSTORE_ENTRY_PASSWORD: ${{ secrets.KEYSTORE_ENTRY_PASSWORD }}
run: |
./gradlew -Dorg.gradle.java.home="${{ steps.setup-java.outputs.path }}" --no-daemon \
-Pversion="${{ steps.changelog.outputs.base_version }}" \
-PdevVersionSuffix="${{ steps.changelog.outputs.dev_suffix }}" \
:app:assembleDev
-Pversion="${{ needs.prepare.outputs.base_version }}" \
-PdevVersionSuffix="${{ needs.prepare.outputs.dev_suffix }}" \
:app:assembleDev \
:revanced.v21-runtime-plugin:assembleRelease

- name: Locate dev artifacts
id: artifact
env:
VERSION: ${{ needs.prepare.outputs.version }}
run: |
APK_DIR="app/build/outputs/apk/dev"
VERSION="${{ steps.changelog.outputs.version }}"
REVANCED_V21_PLUGIN="revanced.v21-runtime-plugin/build/outputs/apk/release/revanced.v21-plugin.apk"
EXPECTED=(
"universal-revanced-manager-${VERSION}-all.apk"
"universal-revanced-manager-${VERSION}-arm64_v8.apk"
"universal-revanced-manager-${VERSION}-armeabi_v7a.apk"
"universal-revanced-manager-${VERSION}-x86.apk"
"universal-revanced-manager-${VERSION}-x86_64.apk"
"${APK_DIR}/universal-revanced-manager-${VERSION}-universal.apk"
"${APK_DIR}/universal-revanced-manager-${VERSION}-arm64-v8a.apk"
"${APK_DIR}/universal-revanced-manager-${VERSION}-armeabi-v7a.apk"
"${APK_DIR}/universal-revanced-manager-${VERSION}-x86.apk"
"${APK_DIR}/universal-revanced-manager-${VERSION}-x86_64.apk"
"${REVANCED_V21_PLUGIN}"
)
for name in "${EXPECTED[@]}"; do
if [ ! -f "$APK_DIR/$name" ]; then
echo "Missing expected dev APK artifact: $APK_DIR/$name"
ls -la "$APK_DIR" || true
exit 1
fi
echo "Found $APK_DIR/$name"
done
mapfile -t ACTUAL < <(find "$APK_DIR" -maxdepth 1 -type f -name 'universal-revanced-manager-*.apk' -printf '%f\n' | sort)
if [ "${#ACTUAL[@]}" -ne "${#EXPECTED[@]}" ]; then
echo "Unexpected number of manager APK artifacts. Expected ${#EXPECTED[@]}, found ${#ACTUAL[@]}"
printf 'Actual manager APKs:\n%s\n' "${ACTUAL[@]}"
ls -la "$APK_DIR" || true
exit 1
fi
for name in "${ACTUAL[@]}"; do
if [[ ! " ${EXPECTED[*]} " =~ " ${name} " ]]; then
echo "Unexpected manager APK artifact name: $name"
if [ ! -f "$name" ]; then
echo "Missing expected dev APK artifact: $name"
ls -la "$APK_DIR" || true
ls -la "$(dirname "$REVANCED_V21_PLUGIN")" || true
exit 1
fi
echo "Found $name"
done
echo "apk_dir=$APK_DIR" >> "$GITHUB_OUTPUT"

- name: Upload APK artifacts
uses: actions/upload-artifact@v4
with:
name: urv-dev
retention-days: 14
if-no-files-found: error
path: |
${{ steps.artifact.outputs.apk_dir }}/universal-revanced-manager-${{ needs.prepare.outputs.version }}-universal.apk
${{ steps.artifact.outputs.apk_dir }}/universal-revanced-manager-${{ needs.prepare.outputs.version }}-arm64-v8a.apk
${{ steps.artifact.outputs.apk_dir }}/universal-revanced-manager-${{ needs.prepare.outputs.version }}-armeabi-v7a.apk
${{ steps.artifact.outputs.apk_dir }}/universal-revanced-manager-${{ needs.prepare.outputs.version }}-x86.apk
${{ steps.artifact.outputs.apk_dir }}/universal-revanced-manager-${{ needs.prepare.outputs.version }}-x86_64.apk
revanced.v21-runtime-plugin/build/outputs/apk/release/revanced.v21-plugin.apk
app/build/outputs/apk/dev/output-metadata.json

publish:
name: Publish prerelease
runs-on: ubuntu-latest
needs: [prepare, build]
permissions:
contents: write
env:
GH_REPO: ${{ github.repository }}
steps:
- name: Download dev APK artifacts
uses: actions/download-artifact@v4
with:
name: urv-dev
path: release-artifacts

- name: Download dev release notes
uses: actions/download-artifact@v4
with:
name: dev-release-notes
path: .

- name: Prepare prerelease tag
id: release
env:
VERSION: ${{ steps.changelog.outputs.version }}
VERSION: ${{ needs.prepare.outputs.version }}
run: |
if [ -z "${VERSION}" ]; then
echo "Version extracted from dev changelog is empty."
exit 1
fi
echo "NEW_TAG=${VERSION}" >> "$GITHUB_OUTPUT"

- name: Collect APK assets
if: steps.release.outputs.NEW_TAG != ''
run: |
mkdir -p release-assets
find release-artifacts -type f -name '*.apk' -exec cp '{}' release-assets/ \;
APK_COUNT="$(find release-assets -maxdepth 1 -type f -name '*.apk' | wc -l)"
if [ "$APK_COUNT" -eq 0 ]; then
echo "No APK assets were found in downloaded artifacts."
find release-artifacts -type f -print
exit 1
fi
ls -la release-assets

- name: Publish prerelease
if: steps.release.outputs.NEW_TAG != ''
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ steps.release.outputs.NEW_TAG }}
APK_DIR: ${{ steps.artifact.outputs.apk_dir }}
run: |
if ! gh release view "$TAG" >/dev/null 2>&1; then
gh release create "$TAG" --title "Universal ReVanced Manager ${TAG}" --notes-file dev_release_notes.md --prerelease
else
gh release edit "$TAG" --title "Universal ReVanced Manager ${TAG}" --notes-file dev_release_notes.md --prerelease
fi
gh release upload "$TAG" "$APK_DIR"/*.apk --clobber

- name: Upload APK artifacts
uses: actions/upload-artifact@v4
with:
name: universal-revanced-manager-dev-${{ github.sha }}
retention-days: 14
if-no-files-found: error
path: |
${{ steps.artifact.outputs.apk_dir }}/*.apk
app/build/outputs/apk/dev/output-metadata.json
gh release upload "$TAG" release-assets/*.apk --clobber
Loading