Skip to content

Commit 4ba4803

Browse files
committed
release: add preview debug workflow
1 parent dc36672 commit 4ba4803

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

.github/workflows/preview.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Preview APK
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- master
8+
9+
permissions:
10+
contents: write
11+
12+
concurrency:
13+
group: preview-${{ github.ref }}
14+
cancel-in-progress: false
15+
16+
jobs:
17+
preview:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
with:
22+
submodules: recursive
23+
fetch-depth: 0
24+
25+
- uses: gradle/actions/wrapper-validation@v3
26+
27+
- uses: actions/setup-java@v4
28+
with:
29+
distribution: temurin
30+
java-version: '17'
31+
cache: gradle
32+
33+
- name: Grant execute permission for gradlew
34+
run: chmod +x gradlew
35+
36+
- name: Build preview debug APK
37+
run: ./gradlew --no-daemon assembleDebug
38+
39+
- name: Prepare preview APK
40+
id: preview_apk
41+
shell: bash
42+
run: |
43+
preview_path="app/build/outputs/apk/debug/Android-Disassembler-preview-debug.apk"
44+
cp app/build/outputs/apk/debug/app-debug.apk "$preview_path"
45+
echo "path=$preview_path" >> "$GITHUB_OUTPUT"
46+
47+
- name: Upload preview APK artifact
48+
uses: actions/upload-artifact@v4
49+
with:
50+
name: Android-Disassembler-preview-debug-apk
51+
path: ${{ steps.preview_apk.outputs.path }}
52+
53+
- name: Update rolling preview tag
54+
shell: bash
55+
run: |
56+
git config user.name "github-actions[bot]"
57+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
58+
git tag -f preview-latest "$GITHUB_SHA"
59+
git push --force origin refs/tags/preview-latest
60+
61+
- name: Publish preview prerelease
62+
uses: softprops/action-gh-release@v2
63+
with:
64+
tag_name: preview-latest
65+
prerelease: true
66+
name: Preview latest
67+
files: ${{ steps.preview_apk.outputs.path }}
68+
body: |
69+
Latest debug-signed preview build for Android-Disassembler.
70+
71+
- Branch: `${{ github.ref_name }}`
72+
- Commit: `${{ github.sha }}`
73+
- APK type: `debug`
74+
75+
This asset is intended for trying the latest branch build before a formal signed release.

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ This repository is under active maintenance again.
1717
- Android compatibility work is in progress, with SAF-based file import preferred over legacy external storage access on modern Android.
1818
- Issue triage and maintenance docs live under `docs/maintenance/`.
1919

20+
## Preview builds
21+
22+
- Every CI run uploads a debug APK artifact in GitHub Actions.
23+
- A separate preview workflow can publish a rolling `Preview latest` prerelease with a debug-signed APK for people who want to try the newest branch build before a formal release.
24+
- Formal release assets stay on the normal GitHub Releases flow.
25+
2026
Android Disassembler is an application that is able to analyze several types of files such as APK files, dex files, shared libraries (aka .so files) (NDK, JNI), windows PE files(EXE, DLLs, SYSs, etc..), linux executables, object files and much more. These app features are based on [capstone library](https://github.com/aquynh/capstone), [elf](https://github.com/serge1/ELFIO) [parser](https://github.com/jawi/java-binutils), [PE parser](https://github.com/kichik/pecoff4j), [backsmali](https://github.com/JesusFreke/smali), and [facile reflector](https://github.com/TomSmartBishop/facile-api).
2127

2228
[<img src="https://play.google.com/intl/en_us/badges/images/apps/en-play-badge-border.png" width="200" alt="Get Android Disassembler on Google Play" />](https://play.google.com/store/apps/details?id=com.kyhsgeekcode.disassembler "Get Android Disassembler on Google Play")

docs/maintenance/implementation-log.ko.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
| Kotlin plugin deprecation 경고 | Kotlin Gradle plugin을 `1.9.24`, Compose compiler extension을 `1.5.14`로 올리고 stdlib 버전을 정렬했다 | AGP 업그레이드 뒤 남아 있던 `Convention` deprecation 경고를 Kotlin plugin 쪽에서 제거했고, `--warning-mode all` 기준으로 우리 빌드 스크립트에서 드러나는 Gradle 9 경고를 없앴다 | `build.gradle`, `app/build.gradle` | 완료 |
1313
| 이슈 `#719`, PR `#726` 릴리스 경로 부재 | tag push와 manual dispatch를 지원하는 `release.yml`을 추가하고 기존 CI를 최신 action 버전으로 정리 | 최신 브랜치에서 unsigned/signed APK를 GitHub Actions로 다시 만들고 배포할 수 있는 운영 경로를 복구했다 | `.github/workflows/ci.yml`, `.github/workflows/release.yml` | 완료 |
1414
| 릴리스 workflow의 branch push 오작동 | `release.yml`의 트리거를 `push tags`에서 `release published``workflow_dispatch`로 바꿨다 | 브랜치 push 때 0초 실패하는 가짜 release run을 없애고, 최신판은 CI debug artifact로, 정식 배포는 GitHub Release 이벤트로 역할을 분리했다 | `.github/workflows/release.yml`, `.github/workflows/ci.yml` | 완료 |
15+
| 이슈 `#719` 최신판 체험 경로 부족 | rolling `Preview latest` prerelease를 발행하는 `preview.yml`을 추가하고 README에 preview/debug 배포 정책을 문서화 | CI artifact만 아는 사람만 최신판을 받던 상태에서, GitHub Releases의 prerelease 자산으로도 최신 debug 빌드를 쉽게 배포할 수 있게 했다 | `.github/workflows/preview.yml`, `README.md` | 완료 |
1516
| 저장소 정책 현대화 착수, 이슈 `#95` 대응 기반 | SAF 기반 선택 경로를 도입하고 `content://` 입력을 앱 내부 import 파일로 저장 | 외부 절대경로 전제를 줄이고, 재시작 이후에도 다시 열 수 있는 URI 권한 흐름을 시작했다 | `app/src/main/java/com/kyhsgeekcode/filechooser/NewFileChooserActivity.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/viewmodel/MainViewModel.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/PermissionUtils.kt` | 진행 중 |
1617
| 이슈 `#95` 외부 문서 인텐트 권한 누락 | 앱이 `ACTION_VIEW``EXTRA_STREAM`으로 열린 경우에도 persistable grant 가능 여부를 계산하고 `content://` URI 권한을 선제적으로 유지 | SAF picker 밖에서 들어온 문서도 같은 storage 정책 흐름으로 흡수해서, provider가 허용하는 경우 앱 재실행 이후에도 접근이 끊길 가능성을 줄였다 | `app/src/main/java/com/kyhsgeekcode/disassembler/MainActivity.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/PermissionUtils.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/PermissionUtilsTest.kt` | 완료 |
1718
| 프로젝트 경계의 raw path 의존 | `ProjectModel`에 source helper를 추가하고 프로젝트 트리/리스트/저장소가 helper를 사용하도록 교체 | `sourceFilePath` 문자열 조합을 한곳으로 모아서 이후 `sourceDescriptor` 중심 구조로 더 옮기기 쉬운 상태를 만들었다 | `app/src/main/java/com/kyhsgeekcode/disassembler/project/models/ProjectModel.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/ui/FileDrawerTree.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/FileDrawerListAdapter.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/FileDrawerListItem.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/project/ProjectDataStorage.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/viewmodel/MainViewModel.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/ProjectManagerTest.kt` | 완료 |

0 commit comments

Comments
 (0)