39 Commits

Author SHA1 Message Date
f64f690a0a UPDATE: 3.7.52
All checks were successful
Build / build (push) Successful in 13m0s
2025-11-11 21:04:25 +07:00
b0c4a7e05a UPDATE: Support TCP, Apply Singleton pattern, Replace reflection with Type Factory + sync.Pool for optimization, Optimize file release process
All checks were successful
Build / build (push) Successful in 8m47s
2025-10-19 13:20:56 +07:00
0a44f56c2f Re-optima apk
All checks were successful
Build / build (push) Successful in 6m3s
2025-10-18 09:13:43 +07:00
527c8176e4 FIX: Update new resource
All checks were successful
Build / build (push) Successful in 7m18s
2025-10-17 12:31:30 +07:00
a54219b781 FIX: Update new resource
Some checks failed
Build / build (push) Failing after 3m37s
2025-10-17 12:24:53 +07:00
84cf16c3bf UPDATE: Update to 3.6.54
Some checks failed
Build / build (push) Failing after 6m2s
2025-10-17 10:47:09 +07:00
becf6779f7 Add CI/CD
All checks were successful
Build / build (push) Successful in 8m55s
2025-10-08 21:51:08 +07:00
d61b2aa907 Add CI/CD
Some checks failed
Build / build (push) Failing after 5m40s
2025-10-08 20:51:48 +07:00
534c08c70a Add CI/CD
Some checks failed
Build / build (push) Has been cancelled
2025-10-08 19:51:05 +07:00
bc3e6f514a Add CI/CD
Some checks failed
Build / build (push) Failing after 8m14s
2025-10-08 19:29:42 +07:00
2469b9ff83 Add CI/CD
Some checks failed
Build / build (push) Failing after 9m7s
2025-10-08 19:15:26 +07:00
f3abdff971 Add CI/CD
Some checks failed
Build / build (push) Has been cancelled
2025-10-08 19:11:38 +07:00
af1b71f929 Add CI/CD
Some checks failed
Build / build (push) Failing after 7m20s
2025-10-08 19:00:23 +07:00
4146f260ac Add CI/CD
Some checks failed
Build / build (push) Failing after 6m29s
2025-10-08 18:00:20 +07:00
7c5200f838 Add CI/CD
Some checks failed
Build / build (push) Failing after 2m56s
2025-10-08 17:42:30 +07:00
17d6856f58 Add CI/CD
Some checks failed
Build / build (push) Failing after 4m3s
2025-10-08 17:32:49 +07:00
2ba164a05c Add CI/CD
Some checks failed
Build / build (push) Failing after 6m11s
2025-10-08 17:23:30 +07:00
ecd02b8885 Add CI/CD
Some checks failed
Build / build (push) Failing after 9m16s
2025-10-08 17:11:26 +07:00
08caef28ab Add CI/CD
Some checks failed
Build / build (push) Has been cancelled
2025-10-08 17:09:26 +07:00
b587da0b9a Add CI/CD
Some checks failed
Build / build (push) Has been cancelled
2025-10-08 16:52:32 +07:00
0f7748a1df Add CI/CD
Some checks failed
Build / build (push) Failing after 5m7s
2025-10-08 16:47:19 +07:00
2a2159eb8a Add CI/CD
Some checks failed
Build / build (push) Has been cancelled
2025-10-08 16:27:52 +07:00
866de7a49e Add CI/CD
Some checks failed
Build / build (push) Failing after 27s
2025-10-08 16:27:05 +07:00
c49be0b2e7 Add CI/CD
Some checks failed
Build / build (push) Failing after 29s
2025-10-08 16:19:25 +07:00
00155e3619 Add CI/CD
Some checks failed
Build / build (push) Failing after 27s
2025-10-08 16:14:26 +07:00
6a9b6bc3a8 Add CI/CD
Some checks failed
Build / build (push) Failing after 28s
2025-10-08 16:11:22 +07:00
e7b7751fbb Add CI/CD
Some checks failed
Build / build (push) Failing after 13m27s
2025-10-08 14:04:47 +07:00
66f6ef6cec Add CI/CD
Some checks failed
Build / build (push) Failing after 3m31s
2025-10-08 13:36:07 +07:00
1d149bfa19 Add CI/CD
Some checks failed
Build / build (push) Has been cancelled
2025-10-08 13:31:03 +07:00
707f7adbeb Add CI/CD
Some checks failed
Build / build (push) Failing after 4m26s
2025-10-08 13:21:11 +07:00
b9f73f0d0f Add CI/CD
Some checks failed
Build / build (push) Failing after 3m59s
2025-10-08 13:01:38 +07:00
2f191a2c41 Add CI/CD
Some checks failed
Build / build (push) Failing after 5m8s
2025-10-08 12:44:45 +07:00
47f3f1f55d Add CI/CD
Some checks failed
Build / build (push) Failing after 9m53s
2025-10-08 12:28:39 +07:00
9399dbe051 Add CI/CD
Some checks failed
Build / build (push) Failing after 6m43s
2025-10-08 12:02:22 +07:00
a044ca8189 Add CI/CD
Some checks failed
Build / build (push) Failing after 5m20s
2025-10-08 11:48:31 +07:00
67e06fd017 Add CI/CD
Some checks failed
Build / build (push) Failing after 3m30s
2025-10-08 11:26:43 +07:00
629e0cb456 Add CI/CD
Some checks failed
Build / build (push) Failing after 4m55s
2025-10-08 11:17:28 +07:00
4135f02885 Add CI/CD
Some checks failed
Build / build (push) Failing after 3m18s
2025-10-08 11:01:09 +07:00
6149ff55ab FIX: Fix sync data 2025-10-04 22:14:57 +07:00
27 changed files with 806 additions and 412 deletions

View File

@@ -0,0 +1,61 @@
name: Build
run-name: ${{ gitea.actor }} build 🚀
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set Up JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
- name: Setup Android SDK
uses: amyu/setup-android@v5
with:
cache-disabled: true
- name: Grant execute permissions
run: |
chmod +x ./gradlew
chmod +x ./script/release-uploader
- name: Download AAR manually
run: |
FILE="app/libs/firefly-go.aar"
URL="https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/media/branch/master/app/libs/firefly-go.aar"
echo "📥 Downloading $FILE from $URL"
curl -L -o "$FILE" "$URL"
- name: Build signed release APK
env:
KEYSTORE_PATH: ${{ github.workspace }}/KeyStore.jks
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: |
./gradlew assembleRelease \
-Pandroid.injected.signing.store.file=$KEYSTORE_PATH \
-Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
-Pandroid.injected.signing.key.password=$KEY_PASSWORD
- name: Find and rename release APK
run: |
APK_FILE=$(ls app/build/outputs/apk/release/*.apk | head -n 1)
echo "Found APK: $APK_FILE"
mv "$APK_FILE" app/build/outputs/apk/release/firefly_go_android.apk
- name: Upload release
env:
REPO_TOKEN: ${{ secrets.REPO_TOKEN }}
run: script/release-uploader -token=$REPO_TOKEN -release-url="https://git.kain.io.vn/api/v1/repos/Firefly-Shelter/FireflyGo_Android/releases" -files="app/build/outputs/apk/release/firefly_go_android.apk"

2
.idea/.name generated
View File

@@ -1 +1 @@
FireflyPsAndorid FireflyGoAndroid

2
.idea/compiler.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="21" /> <bytecodeTargetLevel target="17" />
</component> </component>
</project> </project>

13
.idea/deviceManager.xml generated Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceTable">
<option name="columnSorters">
<list>
<ColumnSorterState>
<option name="column" value="Name" />
<option name="order" value="ASCENDING" />
</ColumnSorterState>
</list>
</option>
</component>
</project>

1
.idea/gradle.xml generated
View File

@@ -15,5 +15,6 @@
</option> </option>
</GradleProjectSettings> </GradleProjectSettings>
</option> </option>
<option name="parallelModelFetch" value="true" />
</component> </component>
</project> </project>

3
.idea/misc.xml generated
View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@@ -5,13 +5,16 @@ plugins {
alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.compose)
} }
kotlin {
jvmToolchain(17)
}
android { android {
namespace = "com.example.firefly_go_android" namespace = "com.example.firefly_go_android"
compileSdk = 36 compileSdk = 36
defaultConfig { defaultConfig {
applicationId = "com.example.firefly_go_android" applicationId = "com.kain344.firefly_go_android"
minSdk = 24 minSdk = 24
//noinspection OldTargetApi //noinspection OldTargetApi
targetSdk = 35 targetSdk = 35
@@ -19,29 +22,27 @@ android {
versionName = "1.0" versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {
release { release {
isMinifyEnabled = false isMinifyEnabled = true
isShrinkResources = true
proguardFiles( proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"), getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro" "proguard-rules.pro"
) )
ndk {
abiFilters.addAll(listOf("arm64-v8a"))
} }
} }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
} }
buildFeatures { buildFeatures {
compose = true compose = true
viewBinding = true
} }
composeOptions { composeOptions {
@@ -49,6 +50,10 @@ android {
} }
buildToolsVersion = "36.0.0" buildToolsVersion = "36.0.0"
ndkVersion = "27.2.12479018" ndkVersion = "27.2.12479018"
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
} }
dependencies { dependencies {
@@ -87,6 +92,8 @@ dependencies {
debugImplementation(libs.ui.test.manifest) debugImplementation(libs.ui.test.manifest)
// Local AAR library // Local AAR library
implementation(files("../library/firefly-go.aar")) implementation(files("libs/firefly-go.aar"))
implementation(libs.slf4j.android)
} }

Binary file not shown.

BIN
app/libs/firefly-go.aar LFS Normal file

Binary file not shown.

View File

@@ -66,6 +66,7 @@ import androidx.compose.ui.window.DialogProperties
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import org.json.JSONObject import org.json.JSONObject
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontFamily
data class AppVersion( data class AppVersion(
val latestVersion: String, val latestVersion: String,
@@ -421,64 +422,60 @@ fun parseGoLogLine(line: String): String? {
return if (content.isNullOrBlank()) null else content return if (content.isNullOrBlank()) null else content
} }
fun parseAnsi(text: String): AnnotatedString {
fun parseAnsi(text: String, defaultColor: Color): AnnotatedString {
val regex = Regex("\u001B\\[(\\d+)(;\\d+)*m") val regex = Regex("\u001B\\[(\\d+)(;\\d+)*m")
val builder = buildAnnotatedString { val builder = buildAnnotatedString {
var lastIndex = 0 var lastIndex = 0
var currentColor = Color.Black var currentColor = defaultColor
for (match in regex.findAll(text)) { for (match in regex.findAll(text)) {
val start = match.range.first val start = match.range.first
// 1. Thêm phần text TRƯỚC mã ANSI với màu HIỆN TẠI
val before = text.substring(lastIndex, start) val before = text.substring(lastIndex, start)
if (before.isNotEmpty()) {
withStyle(SpanStyle(color = currentColor)) { withStyle(SpanStyle(color = currentColor)) {
append(before) append(before)
} }
}
// 2. Lấy mã code (ví dụ 31, 36, hoặc 0)
val code = try {
match.groupValues[1].toInt()
} catch (e: NumberFormatException) {
0
}
val code = match.groupValues[1].toInt()
currentColor = when (code) { currentColor = when (code) {
30 -> { 0 -> defaultColor
Color.Black 30 -> Color.Black
} 31 -> Color.Red
31 -> { 32 -> Color(0xFF00C853) // Green
Color.Red 33 -> Color(0xFFFFD600) // Yellow
} 34 -> Color(0xFF2962FF) // Blue
32 -> { 35 -> Color(0xFFD500F9) // Magenta
Color(0xFF00C853) 36 -> Color(0xFF00B8D4) // Cyan
} 37 -> Color.White
33 -> { else -> currentColor
Color(0xFFFFD600)
}
34 -> {
Color(0xFF2962FF)
}
35 -> {
Color(0xFFD500F9)
}
36 -> {
Color(0xFF00B8D4)
}
37 -> {
Color.White
}
else -> {
Color.Black
}
} }
lastIndex = match.range.last + 1 lastIndex = match.range.last + 1
} }
if (lastIndex < text.length) {
val remain = text.substring(lastIndex) val remain = text.substring(lastIndex)
if (remain.isNotEmpty()) {
withStyle(SpanStyle(color = currentColor)) { withStyle(SpanStyle(color = currentColor)) {
append(remain) append(remain)
} }
} }
}
}
return builder return builder
} }
@Composable @Composable
fun LogPopup( fun LogPopup(
onDismiss: () -> Unit onDismiss: () -> Unit
@@ -512,6 +509,8 @@ fun LogPopup(
} }
} }
val defaultTextColor = LocalContentColor.current
Dialog(onDismissRequest = { onDismiss() }) { Dialog(onDismissRequest = { onDismiss() }) {
Surface( Surface(
shape = RoundedCornerShape(12.dp), shape = RoundedCornerShape(12.dp),
@@ -531,8 +530,15 @@ fun LogPopup(
LazyColumn(state = listState, modifier = Modifier.weight(1f)) { LazyColumn(state = listState, modifier = Modifier.weight(1f)) {
items(logs.size) { index -> items(logs.size) { index ->
Text( Text(
text = parseAnsi(logs[index]), text = parseAnsi(logs[index], defaultTextColor),
fontSize = 12.sp, fontSize = 12.sp,
// 2. DÙNG FONT MONOSPACE
fontFamily = FontFamily.Monospace,
// 3. (Tuỳ chọn) Giảm chiều cao dòng để logo liền mạch
lineHeight = 14.sp,
modifier = Modifier.padding(vertical = 2.dp) modifier = Modifier.padding(vertical = 2.dp)
) )
} }

View File

@@ -1,5 +1,5 @@
{ {
"latest_version": "3.6.2-05", "latest_version": "3.7.2-01",
"changelog": "UPDATE: Re-optimize performance", "changelog": "UPDATE: 3.7.52",
"apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/releases/download/3.6.2-05/firefly_go_android.apk" "apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/releases/download/3.7.2-01/firefly_go_android.apk"
} }

View File

@@ -1,5 +1,5 @@
{ {
"leader": 0, "leader": 1,
"lineups": { "lineups": {
"0": 1413, "0": 1413,
"1": 1415, "1": 1415,
@@ -7,15 +7,15 @@
"3": 1407 "3": 1407
}, },
"position": { "position": {
"x": 218004, "x": -4030,
"z": 259263, "z": -13006,
"y": 53915, "y": 0,
"rot_y": 79863 "rot_y": 270000
}, },
"scene": { "scene": {
"plane_id": 20423, "plane_id": 10000,
"floor_id": 20423001, "floor_id": 10000000,
"entry_id": 2042301 "entry_id": 100000104
}, },
"player_outfit": [ "player_outfit": [
1001 1001
@@ -35,15 +35,15 @@
"skip_half": 0, "skip_half": 0,
"blessings": [], "blessings": [],
"is_in_challenge": false, "is_in_challenge": false,
"current_stage_id": 30118121, "current_stage_id": 30119122,
"path_resonance_id": 0, "path_resonance_id": 0,
"maze_buff": 0, "maze_buff": 0,
"first_lineup": [], "first_lineup": [],
"second_lineup": [] "second_lineup": []
}, },
"challenge_peak": { "challenge_peak": {
"current_mode": "Knight", "current_mode": "Boss",
"group_id": 2, "group_id": 3,
"is_in_challenge_peak": false, "is_in_challenge_peak": false,
"challenge_peak_data": { "challenge_peak_data": {
"1": { "1": {
@@ -140,6 +140,46 @@
} }
] ]
} }
},
"3": {
"checkmate_data": {
"challenge_id": 304,
"blessing": 3033032,
"lineup": [
1222,
1225,
1310,
1321
],
"stage_id": 30503021,
"is_hard_mode": false
},
"knight_data": {
"current_challenge_id": 302,
"details_data": [
{
"lineup": [
1003
],
"stage_id": 30503011,
"challenge_id": 301
},
{
"lineup": [
1315
],
"stage_id": 30503012,
"challenge_id": 302
},
{
"lineup": [
8001
],
"stage_id": 30503013,
"challenge_id": 303
}
]
}
} }
} }
}, },
@@ -151,20 +191,20 @@
200000 200000
], ],
"2": [ "2": [
500000, 2000000000,
10000000, 2000000000,
500000 2000000000
] ]
}, },
"cycle_count": 1, "cycle_count": 1,
"mode": true "mode": false
}, },
"profile_data": { "profile_data": {
"cur_chat_bubble_id": 220008, "cur_chat_bubble_id": 220009,
"cur_phone_theme_id": 221012, "cur_phone_theme_id": 221012,
"cur_phone_case_id": 254001, "cur_phone_case_id": 254001,
"cur_pam_skin_id": 252000, "cur_pam_skin_id": 252000,
"cur_pet_id": 1003, "cur_pet_id": 0,
"cur_avatar_player_icon": 202034, "cur_avatar_player_icon": 202034,
"cur_player_personal_card": 253001, "cur_player_personal_card": 253001,
"cur_signature": "Firefly GO By Kain", "cur_signature": "Firefly GO By Kain",
@@ -180,5 +220,11 @@
"skin_data": { "skin_data": {
"1001": 1100101, "1001": 1100101,
"1310": 1131001 "1310": 1131001
},
"extra_setting": {
"censorship": false,
"cm": false,
"first_person": false,
"hide_ui": false
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,34 @@
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"CNBETAAndroid3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"CNBETAAndroid3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"CNBETAAndroid3.6.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
},
"CNBETAAndroid3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"CNBETAWin3.6.51": { "CNBETAWin3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e", "asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
@@ -13,6 +41,34 @@
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"CNBETAWin3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"CNBETAWin3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"CNBETAWin3.6.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
},
"CNBETAWin3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"CNBETAiOS3.6.51": { "CNBETAiOS3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e", "asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
@@ -20,6 +76,34 @@
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"CNBETAiOS3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"CNBETAiOS3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"CNBETAiOS3.6.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
},
"CNBETAiOS3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"OSBETAAndroid3.6.51": { "OSBETAAndroid3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e", "asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
@@ -27,6 +111,34 @@
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"OSBETAAndroid3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"OSBETAAndroid3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"OSBETAAndroid3.6.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
},
"OSBETAAndroid3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"OSBETAWin3.6.51": { "OSBETAWin3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e", "asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
@@ -34,11 +146,67 @@
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"OSBETAWin3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"OSBETAWin3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"OSBETAWin3.6.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
},
"OSBETAWin3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"OSBETAiOS3.6.51": { "OSBETAiOS3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e", "asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
},
"OSBETAiOS3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"OSBETAiOS3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"OSBETAiOS3.6.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
},
"OSBETAiOS3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
} }
} }

View File

@@ -14,12 +14,13 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# AndroidX package structure to make it clearer which packages are bundled with the # AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK # Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn # https://developer.android.com/topic/libraries/support-library/androidx-rn
org.gradle.parallel=true
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=false
# Kotlin code style for this project: "official" or "obsolete": # Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the # Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies, # resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library # thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true android.nonTransitiveRClass=true
org.gradle.configuration-cache=true #org.gradle.configuration-cache=false
android.r8.optimizedResourceShrinking=true

View File

@@ -1,24 +1,25 @@
[versions] [versions]
activityComposeVersion = "1.10.1" activityComposeVersion = "1.11.0"
agp = "8.9.3" agp = "8.13.0"
androidxJunit = "1.3.0" androidxJunit = "1.3.0"
animationCore = "1.9.0" animationCore = "1.9.3"
autoupdater = "1.0.1" autoupdater = "1.0.1"
espressoCoreVersion = "3.7.0" espressoCoreVersion = "3.7.0"
foundation = "1.9.0" foundation = "1.9.3"
kotlin = "2.0.21" kotlin = "2.2.20"
coreKtx = "1.17.0" coreKtx = "1.17.0"
junit = "4.13.2" junit = "4.13.2"
lifecycleRuntimeKtxVersion = "2.9.3" lifecycleRuntimeKtxVersion = "2.9.4"
material = "1.9.0" material = "1.9.3"
material3WindowSizeClass = "1.3.2" material3WindowSizeClass = "1.4.0"
materialIconsExtended = "1.7.8" materialIconsExtended = "1.7.8"
ui = "1.9.0" slf4jAndroidVersion = "1.7.36"
uiGraphics = "1.9.0" ui = "1.9.3"
uiTestJunit4 = "1.9.0" uiGraphics = "1.9.3"
uiTestManifest = "1.9.0" uiTestJunit4 = "1.9.3"
uiTooling = "1.9.0" uiTestManifest = "1.9.3"
uiToolingPreview = "1.9.0" uiTooling = "1.9.3"
uiToolingPreview = "1.9.3"
[libraries] [libraries]
androidx-activity-compose-v1101 = { module = "androidx.activity:activity-compose", version.ref = "activityComposeVersion" } androidx-activity-compose-v1101 = { module = "androidx.activity:activity-compose", version.ref = "activityComposeVersion" }
@@ -35,6 +36,7 @@ androidx-material3-window-size-class1 = { module = "androidx.compose.material3:m
autoupdater = { module = "com.github.CSAbhiOnline:AutoUpdater", version.ref = "autoupdater" } autoupdater = { module = "com.github.CSAbhiOnline:AutoUpdater", version.ref = "autoupdater" }
junit = { group = "junit", name = "junit", version.ref = "junit" } junit = { group = "junit", name = "junit", version.ref = "junit" }
material3 = { module = "androidx.compose.material3:material3", version.ref = "material3WindowSizeClass" } material3 = { module = "androidx.compose.material3:material3", version.ref = "material3WindowSizeClass" }
slf4j-android = { module = "org.slf4j:slf4j-android", version.ref = "slf4jAndroidVersion" }
ui = { module = "androidx.compose.ui:ui", version.ref = "ui" } ui = { module = "androidx.compose.ui:ui", version.ref = "ui" }
ui-graphics = { module = "androidx.compose.ui:ui-graphics", version.ref = "uiGraphics" } ui-graphics = { module = "androidx.compose.ui:ui-graphics", version.ref = "uiGraphics" }
ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "uiTestJunit4" } ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "uiTestJunit4" }

View File

@@ -1,6 +1,6 @@
#Mon Apr 28 17:05:34 ICT 2025 #Wed Oct 08 15:20:16 ICT 2025
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b2890a23bc1bad9326247f5b8a055f7bfe93eeaaf0e89e220fe27cf9aedf07b5
size 89623442

2
script/.gitignore vendored
View File

@@ -1,2 +0,0 @@
.env
*.exe

View File

@@ -1,2 +1,3 @@
# Changelog # Changelog
## - UPDATE: Re-optimize performance
## - UPDATE: 3.7.52

View File

@@ -1,5 +0,0 @@
module release
go 1.25.0
require github.com/joho/godotenv v1.5.1

View File

@@ -1,2 +0,0 @@
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=

View File

@@ -1,154 +0,0 @@
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
"path/filepath"
"github.com/joho/godotenv"
)
const (
repoOwner = "Firefly-Shelter"
repoName = "FireflyGo_Android"
giteaURL = "https://git.kain.io.vn"
)
type ReleaseInput struct {
TagName string `json:"tag_name"`
Name string `json:"name"`
Body string `json:"body"`
Draft bool `json:"draft"`
Prerelease bool `json:"prerelease"`
}
type ReleaseResponse struct {
ID int `json:"id"`
HTMLURL string `json:"html_url"`
URL string `json:"url"`
}
func readFile(path string) string {
data, err := os.ReadFile(path)
if err != nil {
panic(fmt.Sprintf("Failed to read %s: %v", path, err))
}
return string(data)
}
func main() {
err := godotenv.Load("script/.env")
if err != nil {
fmt.Println("Error loading .env file")
}
token := os.Getenv("TOKEN")
if token == "" {
fmt.Println("TOKEN not found in .env")
}
releaseJSON := readFile("script/release.json")
var meta map[string]string
if err := json.Unmarshal([]byte(releaseJSON), &meta); err != nil {
panic("Invalid release.json")
}
tag := meta["tag"]
title := meta["title"]
body := readFile("script/README_Note.md")
// Step 1: Create release
releaseInput := ReleaseInput{
TagName: tag,
Name: title,
Body: body,
Draft: false,
Prerelease: false,
}
payload, _ := json.Marshal(releaseInput)
req, _ := http.NewRequest("POST",
fmt.Sprintf("%s/api/v1/repos/%s/%s/releases", giteaURL, repoOwner, repoName),
bytes.NewReader(payload),
)
req.Header.Set("Authorization", "token "+token)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusCreated {
bodyBytes, _ := io.ReadAll(resp.Body)
panic(fmt.Sprintf("Failed to create release: %s", bodyBytes))
}
var releaseResp ReleaseResponse
if err := json.NewDecoder(resp.Body).Decode(&releaseResp); err != nil {
panic("Failed to decode release response")
}
fmt.Printf("Release created:\n- ID: %d\n- HTML: %s\n", releaseResp.ID, releaseResp.HTMLURL)
uploadURL := releaseResp.URL
if uploadURL == "" {
panic("url missing in release response")
}
files, err := os.ReadDir("app/release")
if err != nil {
panic("Cannot read prebuild folder")
}
for _, file := range files {
if filepath.Ext(file.Name()) != ".apk" {
continue
}
uploadPath := filepath.Join("app/release", file.Name())
fmt.Println("Uploading:", uploadPath)
buf := new(bytes.Buffer)
writer := multipart.NewWriter(buf)
part, err := writer.CreateFormFile("attachment", filepath.Base(uploadPath))
if err != nil {
fmt.Printf("Failed to create form: %v\n", err)
continue
}
src, err := os.Open(uploadPath)
if err != nil {
fmt.Printf("Cannot open file %s: %v\n", file.Name(), err)
continue
}
io.Copy(part, src)
src.Close()
writer.Close()
req, err := http.NewRequest("POST", uploadURL+"/assets", buf)
if err != nil {
fmt.Printf("NewRequest error: %v\n", err)
continue
}
req.Header.Set("Authorization", "token "+token)
req.Header.Set("Content-Type", writer.FormDataContentType())
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Printf("Upload failed: %v\n", err)
continue
}
if resp.StatusCode != http.StatusCreated {
bodyBytes, _ := io.ReadAll(resp.Body)
fmt.Printf("Upload failed: %s\n", bodyBytes)
} else {
fmt.Println("Uploaded:", file.Name())
}
resp.Body.Close()
}
}

BIN
script/release-uploader Normal file

Binary file not shown.

View File

@@ -1,5 +1,5 @@
{ {
"tag": "3.6.2-05", "tag": "3.7.2-01",
"title": "PreBuild Version 3.6.52 - 05" "title": "PreBuild Version 3.7.52 - 01"
} }

View File

@@ -1,5 +1,8 @@
pluginManagement { pluginManagement {
repositories { repositories {
maven {
setUrl("https://jitpack.io")
}
google { google {
content { content {
includeGroupByRegex("com\\.android.*") includeGroupByRegex("com\\.android.*")
@@ -9,18 +12,20 @@ pluginManagement {
} }
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
} }
} }
dependencyResolutionManagement { dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories { repositories {
maven {
setUrl("https://jitpack.io")
}
google() google()
mavenCentral() mavenCentral()
maven{
url=uri("https://jitpack.io")
}
} }
} }
rootProject.name = "FireflyPsAndorid" rootProject.name = "FireflyGoAndroid"
include(":app") include(":app")