Skip to content

Commit a87344c

Browse files
committed
first release setup stuff
1 parent 9cc1e9a commit a87344c

13 files changed

Lines changed: 82 additions & 7 deletions

File tree

.github/workflows/release.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Dalvikus Cross-platform Release Build
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # Trigger on tag push like v1.0.0
7+
8+
jobs:
9+
build:
10+
name: Build on ${{ matrix.os }}
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
matrix:
14+
os: [ubuntu-latest, windows-latest, macos-latest]
15+
16+
steps:
17+
- name: Checkout repo
18+
uses: actions/checkout@v3
19+
20+
- name: Set up JDK 17
21+
uses: actions/setup-java@v3
22+
with:
23+
java-version: '17'
24+
distribution: temurin
25+
26+
- name: Grant execute permission for Gradle wrapper
27+
run: chmod +x ./composeApp/gradlew
28+
29+
- name: Build native installer
30+
run: |
31+
cd composeApp
32+
if [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then
33+
./gradlew packageReleaseDeb
34+
elif [[ "${{ matrix.os }}" == "windows-latest" ]]; then
35+
./gradlew packageReleaseMsi
36+
elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then
37+
./gradlew packageReleaseDmg
38+
fi
39+
40+
- name: Upload installer artifacts
41+
uses: actions/upload-artifact@v3
42+
with:
43+
name: dalvikus-${{ matrix.os }}
44+
path: |
45+
composeApp/build/compose/binaries/**/*.deb
46+
composeApp/build/compose/binaries/**/*.msi
47+
composeApp/build/compose/binaries/**/*.dmg

composeApp/build.gradle.kts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,29 @@ compose.desktop {
6666
application {
6767
mainClass = "MainKt"
6868

69+
buildTypes.release.proguard {
70+
configurationFiles.from(
71+
project.file("proguard-rules.pro")
72+
)
73+
isEnabled.set(false)
74+
}
75+
6976
nativeDistributions {
7077
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
7178
packageName = "dalvikus"
7279
packageVersion = "1.0.0"
80+
description = "Dalvikus is a versatile tool for working with Dalvik bytecode, APKs, and Android applications."
81+
vendor = "Leonhard Kohl-Loerting"
82+
copyright = "© 2025 Leonhard Kohl-Loerting - License: GPL-3.0"
7383

7484
linux {
75-
iconFile.set(project.file("desktopAppIcons/LinuxIcon.png"))
85+
iconFile.set(project.file("desktopAppIcons/logo.png"))
7686
}
7787
windows {
78-
iconFile.set(project.file("desktopAppIcons/WindowsIcon.ico"))
88+
iconFile.set(project.file("desktopAppIcons/logo.ico"))
7989
}
8090
macOS {
81-
iconFile.set(project.file("desktopAppIcons/MacosIcon.icns"))
91+
iconFile.set(project.file("desktopAppIcons/logo.icns"))
8292
bundleID = "me.lkl.dalvikus.desktopApp"
8393
}
8494
}
@@ -89,6 +99,7 @@ compose.desktop {
8999
composeCompiler {
90100
featureFlags.add(ComposeFeatureFlag.OptimizeNonSkippingGroups)
91101
}
102+
92103
tasks.withType<ComposeHotRun>().configureEach {
93104
mainClass.set("MainKt")
94105
}
-26.1 KB
Binary file not shown.
-255 KB
Binary file not shown.
-30.5 KB
Binary file not shown.
70.2 KB
Binary file not shown.
4.19 KB
Binary file not shown.
13.7 KB
Loading

composeApp/proguard-rules.pro

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-ignorewarnings
2+
-dontwarn kotlinx.coroutines.**
3+
-dontwarn kotlin.**
4+
-dontwarn java.awt.**
5+
-dontwarn javax.swing.**
6+
7+
-dontwarn com.ibm.icu.**
8+
-dontwarn sun.misc.**
9+
10+
-keep class com.ibm.icu.** { *; }

composeApp/src/commonMain/kotlin/me/lkl/dalvikus/ui/LeftPanel.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import me.lkl.dalvikus.tree.root.HiddenRoot
3737
import me.lkl.dalvikus.ui.tree.FileSelectorDialog
3838
import me.lkl.dalvikus.ui.tree.TreeDragAndDropTarget
3939
import me.lkl.dalvikus.ui.tree.TreeView
40+
import me.lkl.dalvikus.util.SearchOptions
4041
import org.jetbrains.compose.resources.stringResource
4142
import java.io.File
4243

@@ -45,6 +46,10 @@ val editableFiles = listOf("apk", "apks", "aab", "jar", "zip", "xapk", "dex", "o
4546
var showTreeAddFileDialog by mutableStateOf(false)
4647

4748
internal val uiTreeRoot: HiddenRoot = HiddenRoot(
49+
/*ApkNode(
50+
"sample.apk",
51+
File("/home/admin/Downloads/sample.apk"), null
52+
)*/
4853
)
4954
internal var currentSelection by mutableStateOf<Node?>(null)
5055
internal var scrollAndExpandSelection = mutableStateOf(false)
@@ -68,6 +73,7 @@ internal fun LeftPanelContent() {
6873
}
6974

7075
val scope = rememberCoroutineScope()
76+
7177
val searchBarState = rememberSearchBarState()
7278
val searchFieldState = rememberTextFieldState()
7379
var searchOptions by remember { mutableStateOf(SearchOptions()) }
@@ -336,7 +342,6 @@ private fun SearchResults(
336342
}
337343

338344
fun selectFileTreeNode(node: Node) {
339-
// TODO find out why it doesn't scroll.
340345
currentSelection = node
341346
scrollAndExpandSelection.value = true
342347
}

0 commit comments

Comments
 (0)