Compare commits

...

11 Commits

Author SHA1 Message Date
87f9c17352 UPDATE: 4.2.0
All checks were successful
Build / build (push) Successful in 5m10s
2026-04-22 08:32:05 +07:00
79776ddb45 UPDATE: new data
All checks were successful
Build / build (push) Successful in 5m15s
2026-04-16 11:29:55 +07:00
e398ead7ba UPDATE: Support custom lineup
All checks were successful
Build / build (push) Successful in 5m32s
2026-04-12 17:16:00 +07:00
f6938e8b8a FIX: fix stuck when replace lineup
All checks were successful
Build / build (push) Successful in 5m22s
2026-04-07 20:46:46 +07:00
a2eb9d37f6 UPDATE: v4
All checks were successful
Build / build (push) Successful in 10m49s
2026-04-07 16:23:40 +07:00
a99eb85fdd UPDATE: Real map fix
All checks were successful
Build / build (push) Successful in 5m24s
2026-04-04 00:11:40 +07:00
bd647edd48 UPDATE: Fix bug
All checks were successful
Build / build (push) Successful in 5m18s
2026-04-03 18:01:15 +07:00
77374d8b50 UPDATE: Fix bug 2026-04-03 18:00:54 +07:00
a6be76cc3a UPDATE: Fix load map
All checks were successful
Build / build (push) Successful in 5m18s
2026-04-02 01:09:45 +07:00
8c56999da0 UPDATE: New data
All checks were successful
Build / build (push) Successful in 5m40s
2026-03-31 12:38:21 +07:00
898b0b9235 UPDATE: Fix something
All checks were successful
Build / build (push) Successful in 5m49s
2026-03-29 12:38:39 +07:00
12 changed files with 654 additions and 355 deletions

View File

@@ -21,7 +21,6 @@ android {
defaultConfig {
applicationId = "com.kain344.firefly_go_android"
minSdk = 24
//noinspection OldTargetApi
targetSdk = 35
versionCode = 1
versionName = "1.0"

Binary file not shown.

View File

@@ -2,12 +2,20 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"
tools:ignore="ForegroundServicesPolicy" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"
tools:ignore="RequestInstallPackagesPolicy" />
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<application
android:allowBackup="true"
@@ -20,6 +28,7 @@
android:requestLegacyExternalStorage="true"
android:theme="@style/Theme.FireflyGoAndroid"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
@@ -32,9 +41,12 @@
<service
android:name=".GolangServerService"
android:foregroundServiceType="dataSync"
android:exported="false" />
android:foregroundServiceType="specialUse"
android:exported="false">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="Running local Golang TCP/UDP Server" />
</service>
<provider
android:name="androidx.core.content.FileProvider"

View File

@@ -1,21 +1,21 @@
{
"leader": 3,
"leader": 0,
"lineups": {
"0": 1217,
"1": 1307,
"2": 1005,
"3": 1410
"0": 1415,
"1": 1413,
"2": 1409,
"3": 1407
},
"position": {
"x": -30,
"z": -22750,
"y": -15000,
"rot_y": 234288
"x": -38,
"z": 91788,
"y": -2052,
"rot_y": 0
},
"scene": {
"plane_id": 10000,
"floor_id": 10000003,
"entry_id": 100000352
"plane_id": 10341,
"floor_id": 10341001,
"entry_id": 1034102
},
"player_outfit": [
1003
@@ -39,6 +39,7 @@
"challenge": {
"challenge_id": 0,
"skip_half": 0,
"random_seed": 0,
"blessings": [],
"is_in_challenge": false,
"current_stage_id": 30122121,
@@ -48,7 +49,7 @@
"second_lineup": []
},
"challenge_peak": {
"current_mode": "Knight",
"current_mode": "Boss",
"group_id": 6,
"is_in_challenge_peak": false,
"challenge_peak_data": {
@@ -269,16 +270,16 @@
"challenge_id": 604,
"blessing": 3033053,
"lineup": [
1501,
1506,
1505,
1217,
1502,
1217
8001
],
"stage_id": 30506021,
"is_hard_mode": false
},
"knight_data": {
"current_challenge_id": 603,
"current_challenge_id": 602,
"details_data": [
{
"lineup": [
@@ -328,7 +329,8 @@
},
"cycle_count": 1,
"stage_id": 30118121,
"mode": false
"mode": false,
"custom_lineup": []
},
"profile_data": {
"cur_chat_bubble_id": 220009,
@@ -339,6 +341,7 @@
"cur_avatar_player_icon": 202034,
"cur_player_personal_card": 253001,
"cur_signature": "Firefly GO By Kain",
"cur_nickname": "Firefly GO",
"cur_display_avatar": [
1310,
1309,

View File

@@ -10,9 +10,9 @@
},
{
"level": 80,
"item_id": 22000,
"item_id": 23024,
"equip_avatar": 1004,
"rank": 5,
"rank": 1,
"promotion": 6,
"internal_uid": 1
},
@@ -434,9 +434,9 @@
},
{
"level": 80,
"item_id": 24006,
"item_id": 23054,
"equip_avatar": 8010,
"rank": 5,
"rank": 1,
"promotion": 6,
"internal_uid": 54
}
@@ -8890,13 +8890,13 @@
},
{
"sub_affix_id": 5,
"count": 2,
"count": 1,
"step": 4
},
{
"sub_affix_id": 8,
"count": 3,
"step": 0
"count": 4,
"step": 2
}
],
"internal_uid": 281,
@@ -8945,8 +8945,8 @@
},
{
"sub_affix_id": 8,
"count": 3,
"step": 5
"count": 4,
"step": 7
},
{
"sub_affix_id": 9,
@@ -8955,8 +8955,8 @@
},
{
"sub_affix_id": 12,
"count": 2,
"step": 2
"count": 1,
"step": 1
}
],
"internal_uid": 283,
@@ -9029,24 +9029,24 @@
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 11,
"count": 3,
"step": 5
},
{
"sub_affix_id": 4,
"sub_affix_id": 5,
"count": 1,
"step": 1
},
{
"sub_affix_id": 8,
"count": 3,
"step": 3
},
{
"sub_affix_id": 9,
"count": 1,
"step": 2
},
{
"sub_affix_id": 7,
"count": 3,
"step": 5
},
{
"sub_affix_id": 9,
"count": 1,
"step": 0
}
],
"internal_uid": 286,
@@ -9059,24 +9059,24 @@
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 7,
"sub_affix_id": 5,
"count": 3,
"step": 2
},
{
"sub_affix_id": 5,
"sub_affix_id": 8,
"count": 2,
"step": 1
},
{
"sub_affix_id": 1,
"count": 2,
"step": 2
"sub_affix_id": 9,
"count": 1,
"step": 0
},
{
"sub_affix_id": 6,
"count": 2,
"step": 0
"sub_affix_id": 7,
"count": 3,
"step": 4
}
],
"internal_uid": 287,
@@ -9086,27 +9086,27 @@
"level": 15,
"relic_id": 61303,
"relic_set_id": 130,
"main_affix_id": 4,
"main_affix_id": 5,
"sub_affixes": [
{
"sub_affix_id": 6,
"sub_affix_id": 5,
"count": 2,
"step": 1
},
{
"sub_affix_id": 9,
"count": 2,
"step": 3
},
{
"sub_affix_id": 2,
"count": 1,
"step": 0
},
{
"sub_affix_id": 7,
"count": 3,
"step": 3
},
{
"sub_affix_id": 8,
"count": 3,
"step": 3
},
{
"sub_affix_id": 4,
"count": 1,
"step": 1
}
],
"internal_uid": 288,
@@ -9119,24 +9119,24 @@
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 5,
"count": 2,
"step": 3
},
{
"sub_affix_id": 9,
"sub_affix_id": 2,
"count": 2,
"step": 2
},
{
"sub_affix_id": 12,
"count": 1,
"step": 1
"sub_affix_id": 8,
"count": 2,
"step": 2
},
{
"sub_affix_id": 8,
"sub_affix_id": 5,
"count": 2,
"step": 4
},
{
"sub_affix_id": 9,
"count": 3,
"step": 3
"step": 2
}
],
"internal_uid": 289,
@@ -9144,28 +9144,28 @@
},
{
"level": 15,
"relic_id": 63085,
"relic_set_id": 308,
"main_affix_id": 1,
"relic_id": 63245,
"relic_set_id": 324,
"main_affix_id": 2,
"sub_affixes": [
{
"sub_affix_id": 10,
"count": 1,
"step": 0
"sub_affix_id": 9,
"count": 2,
"step": 2
},
{
"sub_affix_id": 2,
"count": 1,
"sub_affix_id": 8,
"count": 2,
"step": 1
},
{
"sub_affix_id": 7,
"sub_affix_id": 1,
"count": 3,
"step": 6
"step": 2
},
{
"sub_affix_id": 3,
"count": 4,
"sub_affix_id": 7,
"count": 2,
"step": 4
}
],
@@ -9174,29 +9174,29 @@
},
{
"level": 15,
"relic_id": 63086,
"relic_set_id": 308,
"main_affix_id": 2,
"relic_id": 63246,
"relic_set_id": 324,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 7,
"count": 3,
"step": 1
},
{
"sub_affix_id": 6,
"count": 2,
"step": 1
},
{
"sub_affix_id": 1,
"sub_affix_id": 2,
"count": 2,
"step": 0
},
{
"sub_affix_id": 4,
"sub_affix_id": 8,
"count": 3,
"step": 4
},
{
"sub_affix_id": 9,
"count": 2,
"step": 1
"step": 2
},
{
"sub_affix_id": 7,
"count": 2,
"step": 4
}
],
"internal_uid": 291,
@@ -9539,7 +9539,7 @@
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 4,
"sub_affix_id": 7,
"count": 2,
"step": 2
},
@@ -9626,7 +9626,7 @@
"level": 15,
"relic_id": 61294,
"relic_set_id": 129,
"main_affix_id": 2,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 6,
@@ -9656,22 +9656,22 @@
"level": 15,
"relic_id": 63255,
"relic_set_id": 325,
"main_affix_id": 2,
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 12,
"count": 1,
"step": 2
},
{
"sub_affix_id": 9,
"count": 3,
"step": 4
"step": 1
},
{
"sub_affix_id": 3,
"sub_affix_id": 7,
"count": 3,
"step": 0
"step": 6
},
{
"sub_affix_id": 10,
"count": 2,
"step": 1
},
{
"sub_affix_id": 8,
@@ -9686,27 +9686,27 @@
"level": 15,
"relic_id": 63256,
"relic_set_id": 325,
"main_affix_id": 4,
"main_affix_id": 3,
"sub_affixes": [
{
"sub_affix_id": 1,
"count": 1,
"step": 0
"sub_affix_id": 7,
"count": 4,
"step": 1
},
{
"sub_affix_id": 2,
"count": 2,
"count": 1,
"step": 2
},
{
"sub_affix_id": 8,
"count": 3,
"step": 1
"count": 1,
"step": 0
},
{
"sub_affix_id": 9,
"count": 3,
"step": 4
"step": 6
}
],
"internal_uid": 308,
@@ -10254,29 +10254,29 @@
},
{
"level": 15,
"relic_id": 61291,
"relic_set_id": 129,
"relic_id": 61301,
"relic_set_id": 130,
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 4,
"count": 2,
"step": 2
"sub_affix_id": 11,
"count": 3,
"step": 5
},
{
"sub_affix_id": 5,
"count": 2,
"step": 4
"sub_affix_id": 4,
"count": 1,
"step": 1
},
{
"sub_affix_id": 7,
"count": 3,
"step": 5
},
{
"sub_affix_id": 9,
"count": 2,
"count": 1,
"step": 0
},
{
"sub_affix_id": 11,
"count": 2,
"step": 3
}
],
"internal_uid": 327,
@@ -10284,29 +10284,29 @@
},
{
"level": 15,
"relic_id": 61292,
"relic_set_id": 129,
"relic_id": 61302,
"relic_set_id": 130,
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 11,
"count": 1,
"step": 1
"sub_affix_id": 7,
"count": 3,
"step": 2
},
{
"sub_affix_id": 5,
"count": 3,
"step": 3
"count": 2,
"step": 1
},
{
"sub_affix_id": 4,
"count": 1,
"sub_affix_id": 1,
"count": 2,
"step": 2
},
{
"sub_affix_id": 6,
"count": 2,
"step": 0
},
{
"sub_affix_id": 8,
"count": 4,
"step": 7
}
],
"internal_uid": 328,
@@ -10314,29 +10314,29 @@
},
{
"level": 15,
"relic_id": 61293,
"relic_set_id": 129,
"relic_id": 61303,
"relic_set_id": 130,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 4,
"count": 3,
"step": 2
},
{
"sub_affix_id": 7,
"count": 1,
"step": 2
"sub_affix_id": 6,
"count": 2,
"step": 1
},
{
"sub_affix_id": 9,
"count": 3,
"count": 2,
"step": 3
},
{
"sub_affix_id": 11,
"sub_affix_id": 2,
"count": 1,
"step": 1
"step": 0
},
{
"sub_affix_id": 7,
"count": 3,
"step": 3
}
],
"internal_uid": 329,
@@ -10344,19 +10344,14 @@
},
{
"level": 15,
"relic_id": 61294,
"relic_set_id": 129,
"relic_id": 61304,
"relic_set_id": 130,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 5,
"count": 3,
"step": 4
},
{
"sub_affix_id": 8,
"count": 1,
"step": 1
"count": 2,
"step": 3
},
{
"sub_affix_id": 9,
@@ -10365,8 +10360,13 @@
},
{
"sub_affix_id": 12,
"count": 1,
"step": 1
},
{
"sub_affix_id": 8,
"count": 3,
"step": 6
"step": 3
}
],
"internal_uid": 330,
@@ -10379,24 +10379,24 @@
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 3,
"sub_affix_id": 10,
"count": 1,
"step": 2
},
{
"sub_affix_id": 7,
"count": 1,
"step": 2
},
{
"sub_affix_id": 9,
"count": 2,
"step": 4
"step": 0
},
{
"sub_affix_id": 2,
"count": 1,
"step": 1
},
{
"sub_affix_id": 7,
"count": 3,
"step": 6
},
{
"sub_affix_id": 3,
"count": 4,
"step": 5
"step": 4
}
],
"internal_uid": 331,
@@ -10409,24 +10409,24 @@
"main_affix_id": 2,
"sub_affixes": [
{
"sub_affix_id": 3,
"count": 1,
"step": 0
},
{
"sub_affix_id": 2,
"count": 1,
"sub_affix_id": 7,
"count": 3,
"step": 1
},
{
"sub_affix_id": 7,
"count": 3,
"sub_affix_id": 6,
"count": 2,
"step": 1
},
{
"sub_affix_id": 1,
"count": 2,
"step": 0
},
{
"sub_affix_id": 8,
"count": 3,
"step": 3
"sub_affix_id": 4,
"count": 2,
"step": 1
}
],
"internal_uid": 332,
@@ -10594,7 +10594,7 @@
"owner_uid": 0,
"avatar_id": 1004,
"data": {
"rank": 2,
"rank": 4,
"skills": {
"11004001": 6,
"11004002": 10,
@@ -10698,7 +10698,7 @@
"owner_uid": 0,
"avatar_id": 1006,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"11006001": 6,
"11006002": 10,
@@ -10960,7 +10960,7 @@
"owner_uid": 0,
"avatar_id": 1015,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1015001": 6,
"1015002": 10,
@@ -12457,24 +12457,24 @@
"data": {
"rank": 0,
"skills": {
"1217001": 6,
"1217002": 10,
"1217003": 10,
"1217004": 10,
"1217007": 1,
"1217101": 1,
"1217102": 1,
"1217103": 1,
"1217201": 1,
"1217202": 1,
"1217203": 1,
"1217204": 1,
"1217205": 1,
"1217206": 1,
"1217207": 1,
"1217208": 1,
"1217209": 1,
"1217210": 1
"11217001": 6,
"11217002": 10,
"11217003": 10,
"11217004": 10,
"11217007": 1,
"11217101": 1,
"11217102": 1,
"11217103": 1,
"11217201": 1,
"11217202": 1,
"11217203": 1,
"11217204": 1,
"11217205": 1,
"11217206": 1,
"11217207": 1,
"11217208": 1,
"11217209": 1,
"11217210": 1
},
"skills_by_anchor_type": {
"1": 6,
@@ -12507,7 +12507,7 @@
"owner_uid": 0,
"avatar_id": 1218,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1218001": 6,
"1218002": 10,
@@ -12981,7 +12981,7 @@
"owner_uid": 0,
"avatar_id": 1303,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1303001": 6,
"1303002": 10,
@@ -13137,7 +13137,7 @@
"owner_uid": 0,
"avatar_id": 1306,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"11306001": 6,
"11306002": 10,
@@ -13192,7 +13192,7 @@
"owner_uid": 0,
"avatar_id": 1307,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1307001": 6,
"1307002": 10,
@@ -13296,7 +13296,7 @@
"owner_uid": 0,
"avatar_id": 1309,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1309001": 6,
"1309002": 10,
@@ -13348,26 +13348,26 @@
"owner_uid": 0,
"avatar_id": 1310,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1310001": 6,
"1310002": 10,
"1310003": 10,
"1310004": 10,
"1310007": 1,
"1310101": 1,
"1310102": 1,
"1310103": 1,
"1310201": 1,
"1310202": 1,
"1310203": 1,
"1310204": 1,
"1310205": 1,
"1310206": 1,
"1310207": 1,
"1310208": 1,
"1310209": 1,
"1310210": 1
"11310001": 6,
"11310002": 10,
"11310003": 10,
"11310004": 10,
"11310007": 1,
"11310101": 1,
"11310102": 1,
"11310103": 1,
"11310201": 1,
"11310202": 1,
"11310203": 1,
"11310204": 1,
"11310205": 1,
"11310206": 1,
"11310207": 1,
"11310208": 1,
"11310209": 1,
"11310210": 1
},
"skills_by_anchor_type": {
"1": 6,
@@ -13455,7 +13455,7 @@
"owner_uid": 0,
"avatar_id": 1313,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1313001": 2,
"1313002": 10,
@@ -13507,7 +13507,7 @@
"owner_uid": 0,
"avatar_id": 1314,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1314001": 6,
"1314002": 10,
@@ -13663,7 +13663,7 @@
"owner_uid": 0,
"avatar_id": 1321,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1321001": 6,
"1321002": 10,
@@ -13825,7 +13825,7 @@
"owner_uid": 0,
"avatar_id": 1403,
"data": {
"rank": 6,
"rank": 0,
"skills": {
"1403001": 6,
"1403002": 10,
@@ -14038,7 +14038,7 @@
"owner_uid": 0,
"avatar_id": 1407,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1407001": 1,
"1407002": 10,
@@ -14094,7 +14094,7 @@
"owner_uid": 0,
"avatar_id": 1408,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1408001": 6,
"1408002": 10,
@@ -14146,7 +14146,7 @@
"owner_uid": 0,
"avatar_id": 1409,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1409001": 6,
"1409002": 10,
@@ -14204,7 +14204,7 @@
"owner_uid": 0,
"avatar_id": 1410,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1410001": 6,
"1410002": 10,
@@ -14256,7 +14256,7 @@
"owner_uid": 0,
"avatar_id": 1412,
"data": {
"rank": 1,
"rank": 0,
"skills": {
"1412001": 6,
"1412002": 10,
@@ -14308,7 +14308,7 @@
"owner_uid": 0,
"avatar_id": 1413,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1413001": 6,
"1413002": 10,
@@ -14366,7 +14366,7 @@
"owner_uid": 0,
"avatar_id": 1414,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1414001": 6,
"1414002": 10,
@@ -14418,7 +14418,7 @@
"owner_uid": 0,
"avatar_id": 1415,
"data": {
"rank": 2,
"rank": 0,
"skills": {
"1415001": 6,
"1415002": 10,
@@ -14965,7 +14965,7 @@
"owner_uid": 0,
"avatar_id": 8005,
"data": {
"rank": 0,
"rank": 6,
"skills": {
"8005001": 1,
"8005002": 1,
@@ -15019,7 +15019,7 @@
"owner_uid": 0,
"avatar_id": 8006,
"data": {
"rank": 0,
"rank": 6,
"skills": {
"8006001": 1,
"8006002": 1,
@@ -15189,7 +15189,7 @@
"owner_uid": 0,
"avatar_id": 8009,
"data": {
"rank": 0,
"rank": 6,
"skills": {
"8009001": 6,
"8009002": 10,

View File

@@ -0,0 +1,260 @@
{
"CNBETAAndroid4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"CNBETAAndroid4.1.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14427120_6f7bdcd832cf_5c861411529529",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14426018_808f7828fdd4_646eb1de0d5580",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14460274_5ed5ff5977db_299d2e7b72efe8"
},
"CNBETAAndroid4.1.53": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14536466_eef3376243be_0b6e5633eb67ac",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14527836_2bed15e185c1_05d2c57e28ff4e",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAAndroid4.1.54": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14611439_56f651a0b674_84a023d793fd76",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14609090_1218af71d445_3d7b85e94ad21f",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAAndroid4.1.55": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14680684_6e4cc15140f9_aef71dde394fda",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14669747_01b97b7c1a31_171acc2ac3948b",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAWin4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"CNBETAWin4.1.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14427120_6f7bdcd832cf_5c861411529529",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14426018_808f7828fdd4_646eb1de0d5580",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14460274_5ed5ff5977db_299d2e7b72efe8"
},
"CNBETAWin4.1.53": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14536466_eef3376243be_0b6e5633eb67ac",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14527836_2bed15e185c1_05d2c57e28ff4e",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAWin4.1.54": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14611439_56f651a0b674_84a023d793fd76",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14609090_1218af71d445_3d7b85e94ad21f",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAWin4.1.55": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14680684_6e4cc15140f9_aef71dde394fda",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14669747_01b97b7c1a31_171acc2ac3948b",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAiOS4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"CNBETAiOS4.1.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14427120_6f7bdcd832cf_5c861411529529",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14426018_808f7828fdd4_646eb1de0d5580",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14460274_5ed5ff5977db_299d2e7b72efe8"
},
"CNBETAiOS4.1.53": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14536466_eef3376243be_0b6e5633eb67ac",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14527836_2bed15e185c1_05d2c57e28ff4e",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAiOS4.1.54": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14611439_56f651a0b674_84a023d793fd76",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14609090_1218af71d445_3d7b85e94ad21f",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNBETAiOS4.1.55": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14680684_6e4cc15140f9_aef71dde394fda",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14669747_01b97b7c1a31_171acc2ac3948b",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"CNCECREATIONAndroid4.1.55": {},
"CNCECREATIONWin4.1.55": {},
"CNCECREATIONiOS4.1.55": {},
"CNPRODAndroid4.2.0": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/V4.2Live/output_14793379_a945d8c4b314_456137761fcb18",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/V4.2Live/output_14758049_c9aedfef76a6_4aae9bb4805fd9",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/V4.2Live/output_14809204_9a3979caa26d_8ad13605a75930",
"lua_url": "https://autopatchos.starrails.com/lua/V4.2Live/output_14798030_578417ec7fc2_8809e0c490dc79",
"ifix_url": "https://autopatchos.starrails.com/ifix/V4.2Live/output_14796630_83d6d28a8791_25c0eb07d813e8"
},
"CNPRODWin4.2.0": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/V4.2Live/output_14793379_a945d8c4b314_456137761fcb18",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/V4.2Live/output_14758049_c9aedfef76a6_4aae9bb4805fd9",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/V4.2Live/output_14809204_9a3979caa26d_8ad13605a75930",
"lua_url": "https://autopatchos.starrails.com/lua/V4.2Live/output_14798030_578417ec7fc2_8809e0c490dc79",
"ifix_url": "https://autopatchos.starrails.com/ifix/V4.2Live/output_14796630_83d6d28a8791_25c0eb07d813e8"
},
"CNPRODiOS4.2.0": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/V4.2Live/output_14793379_a945d8c4b314_456137761fcb18",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/V4.2Live/output_14758049_c9aedfef76a6_4aae9bb4805fd9",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/V4.2Live/output_14809204_9a3979caa26d_8ad13605a75930",
"lua_url": "https://autopatchos.starrails.com/lua/V4.2Live/output_14798030_578417ec7fc2_8809e0c490dc79",
"ifix_url": "https://autopatchos.starrails.com/ifix/V4.2Live/output_14796630_83d6d28a8791_25c0eb07d813e8"
},
"OSBETAAndroid4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"OSBETAAndroid4.1.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14427120_6f7bdcd832cf_5c861411529529",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14426018_808f7828fdd4_646eb1de0d5580",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14460274_5ed5ff5977db_299d2e7b72efe8"
},
"OSBETAAndroid4.1.53": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14536466_eef3376243be_0b6e5633eb67ac",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14527836_2bed15e185c1_05d2c57e28ff4e",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAAndroid4.1.54": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14611439_56f651a0b674_84a023d793fd76",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14609090_1218af71d445_3d7b85e94ad21f",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAAndroid4.1.55": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14680684_6e4cc15140f9_aef71dde394fda",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14669747_01b97b7c1a31_171acc2ac3948b",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAWin4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"OSBETAWin4.1.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14427120_6f7bdcd832cf_5c861411529529",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14426018_808f7828fdd4_646eb1de0d5580",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14460274_5ed5ff5977db_299d2e7b72efe8"
},
"OSBETAWin4.1.53": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14536466_eef3376243be_0b6e5633eb67ac",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14527836_2bed15e185c1_05d2c57e28ff4e",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAWin4.1.54": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14611439_56f651a0b674_84a023d793fd76",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14609090_1218af71d445_3d7b85e94ad21f",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAWin4.1.55": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14680684_6e4cc15140f9_aef71dde394fda",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14669747_01b97b7c1a31_171acc2ac3948b",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAiOS4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"OSBETAiOS4.1.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14420305_7a74f0e95f84_edf69bcd963b3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14427120_6f7bdcd832cf_5c861411529529",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14426018_808f7828fdd4_646eb1de0d5580",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14460274_5ed5ff5977db_299d2e7b72efe8"
},
"OSBETAiOS4.1.53": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14511152_92f232b7216a_602de31e31b1a4",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14536466_eef3376243be_0b6e5633eb67ac",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14527836_2bed15e185c1_05d2c57e28ff4e",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAiOS4.1.54": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14608970_b10116831d46_f4a480ee801414",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14611439_56f651a0b674_84a023d793fd76",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14609090_1218af71d445_3d7b85e94ad21f",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSBETAiOS4.1.55": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_14669556_c7c835eb7ee7_fc59aa87daea7f",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14680684_6e4cc15140f9_aef71dde394fda",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14669747_01b97b7c1a31_171acc2ac3948b",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
},
"OSCECREATIONAndroid4.1.55": {},
"OSCECREATIONWin4.1.55": {},
"OSCECREATIONiOS4.1.55": {},
"OSPRODAndroid4.2.0": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/V4.2Live/output_14793379_a945d8c4b314_456137761fcb18",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/V4.2Live/output_14758049_c9aedfef76a6_4aae9bb4805fd9",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/V4.2Live/output_14809204_9a3979caa26d_8ad13605a75930",
"lua_url": "https://autopatchos.starrails.com/lua/V4.2Live/output_14798030_578417ec7fc2_8809e0c490dc79",
"ifix_url": "https://autopatchos.starrails.com/ifix/V4.2Live/output_14796630_83d6d28a8791_25c0eb07d813e8"
},
"OSPRODWin4.2.0": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/V4.2Live/output_14793379_a945d8c4b314_456137761fcb18",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/V4.2Live/output_14758049_c9aedfef76a6_4aae9bb4805fd9",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/V4.2Live/output_14809204_9a3979caa26d_8ad13605a75930",
"lua_url": "https://autopatchos.starrails.com/lua/V4.2Live/output_14798030_578417ec7fc2_8809e0c490dc79",
"ifix_url": "https://autopatchos.starrails.com/ifix/V4.2Live/output_14796630_83d6d28a8791_25c0eb07d813e8"
},
"OSPRODiOS4.2.0": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/V4.2Live/output_14793379_a945d8c4b314_456137761fcb18",
"asset_bundle_url_b": "https://autopatchos.starrails.com/asb/V4.2Live/output_14758049_c9aedfef76a6_4aae9bb4805fd9",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/V4.2Live/output_14809204_9a3979caa26d_8ad13605a75930",
"lua_url": "https://autopatchos.starrails.com/lua/V4.2Live/output_14798030_578417ec7fc2_8809e0c490dc79",
"ifix_url": "https://autopatchos.starrails.com/ifix/V4.2Live/output_14796630_83d6d28a8791_25c0eb07d813e8"
}
}

View File

@@ -1,10 +1,12 @@
package com.example.firefly_go_android
import android.annotation.SuppressLint
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.app.Service
import android.content.Intent
import android.content.pm.ServiceInfo
import android.graphics.BitmapFactory
import android.os.Build
import android.os.IBinder
@@ -16,6 +18,7 @@ import androidx.compose.runtime.setValue
import androidx.core.app.NotificationCompat
import androidx.core.content.ContextCompat
import libandroid.Libandroid
import androidx.core.content.edit
class GolangServerService : Service() {
@@ -33,9 +36,10 @@ class GolangServerService : Service() {
createNotificationChannel()
}
@SuppressLint("WakelockTimeout")
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
if (isRunning) {
Log.d(TAG, "Server is already running")
Log.d(TAG, "Server is already running")
return START_STICKY
}
isRunning = true
@@ -64,42 +68,63 @@ class GolangServerService : Service() {
.setCategory(NotificationCompat.CATEGORY_SERVICE)
.build()
if (Build.VERSION.SDK_INT >= 34) {
startForeground(
NOTIFICATION_ID,
notification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE
)
} else if (Build.VERSION.SDK_INT >= 29) {
startForeground(
NOTIFICATION_ID,
notification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST
)
} else {
startForeground(NOTIFICATION_ID, notification)
}
startForeground(NOTIFICATION_ID, notification)
// Khởi tạo WakeLock và WifiLock
try {
val powerManager = getSystemService(POWER_SERVICE) as PowerManager
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "GolangServer::WakeLock")
wakeLock?.acquire(10*60*1000L)
Log.d(TAG, "WakeLock acquired")
wakeLock?.acquire()
Log.d(TAG, "WakeLock acquired")
} catch (e: Exception) {
Log.e(TAG, "❌ WakeLock failed", e)
Log.e(TAG, "Lock failed", e)
}
Thread {
try {
val appDataPath = intent?.getStringExtra("appDataPath")
val sharedPrefs = getSharedPreferences("AppPrefs", MODE_PRIVATE)
var appDataPath = intent?.getStringExtra("appDataPath")
if (appDataPath != null) {
sharedPrefs.edit { putString("saved_app_data_path", appDataPath) }
} else {
appDataPath = sharedPrefs.getString("saved_app_data_path", null)
}
if (appDataPath != null) {
Libandroid.setPathDataLocal(appDataPath)
Log.d(TAG, "Set path data: $appDataPath")
Log.d(TAG, "Set path data: $appDataPath")
} else {
isRunning = false
Log.e(TAG, "appDataPath not received in intent")
Log.e(TAG, "appDataPath not received and not found in SharedPreferences")
stopSelf()
return@Thread
}
Libandroid.setServerRunning(true)
isRunning = true
Log.d(TAG, "Server started")
Log.d(TAG, "Server started")
} catch (e: Exception) {
isRunning = false
Log.e(TAG, "Error starting server", e)
Log.e(TAG, "Error starting server", e)
stopSelf()
}
}.start()
return START_STICKY
}
@@ -107,7 +132,6 @@ class GolangServerService : Service() {
super.onDestroy()
Log.d(TAG, "onDestroy called")
// 1. Tắt server
try {
val result = Libandroid.setServerRunning(false)
isRunning = false
@@ -116,15 +140,16 @@ class GolangServerService : Service() {
Log.e(TAG, "Error shutting down server", e)
}
// Nhả các khóa tài nguyên
try {
wakeLock?.let {
if (it.isHeld) {
it.release()
Log.d(TAG, "WakeLock released")
Log.d(TAG, "WakeLock released")
}
}
} catch (e: Exception) {
Log.e(TAG, "Failed to release WakeLock", e)
Log.e(TAG, "Failed to release Locks", e)
}
isRunning = false
}
@@ -143,7 +168,7 @@ class GolangServerService : Service() {
val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
manager.createNotificationChannel(channel)
Log.d(TAG, "Notification channel created")
Log.d(TAG, "Notification channel created")
}
}
}
}

View File

@@ -4,8 +4,9 @@ import AutoUpdaterManager
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.util.Log
import android.widget.Toast
import androidx.activity.ComponentActivity
@@ -67,6 +68,11 @@ import kotlinx.coroutines.delay
import org.json.JSONObject
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontFamily
import android.os.PowerManager
import android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import android.provider.Settings
data class AppVersion(
val latestVersion: String,
@@ -77,14 +83,14 @@ data class AppVersion(
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestBatteryExemption(this)
requestInstallPermission(this)
val appDataPath = filesDir.absolutePath
val appDataPath = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "FireflyGo").absolutePath
val dataDir = File("$appDataPath/data")
dataDir.mkdirs()
if (!dataDir.exists()) dataDir.mkdirs()
copyRawToFile(this, dataDir, "data-in-game.json", R.raw.data_in_game_json)
copyRawToFile(this, dataDir, "freesr-data.json", R.raw.freesr_data_json)
copyRawToFile(this, dataDir, "version.json", R.raw.version_json)
copyRawToFile(dataDir)
val jsonString = resources.openRawResource(R.raw.app_version_json).use { input ->
input.bufferedReader().use { it.readText() }
@@ -112,22 +118,61 @@ class MainActivity : ComponentActivity() {
}
}
@SuppressLint("BatteryLife")
fun copyRawToFile(context: Context, targetDir: File, fileName: String, resId: Int, override: Boolean = false) {
val outFile = File(targetDir, fileName)
if (!outFile.exists() || override) {
try {
context.resources.openRawResource(resId).use { input ->
fun requestBatteryExemption(context: Context) {
val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
if (!powerManager.isIgnoringBatteryOptimizations(context.packageName)) {
val intent = Intent().apply {
action = ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
data = "package:${context.packageName}".toUri()
}
context.startActivity(intent)
}
}
fun requestInstallPermission(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!context.packageManager.canRequestPackageInstalls()) {
val intent = Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).apply {
data = "package:${context.packageName}".toUri()
}
context.startActivity(intent)
Toast.makeText(context, "Please allow installing unknown apps to update", Toast.LENGTH_LONG).show()
}
}
}
fun copyRawToFile(targetDir: File, override: Boolean = false): Boolean {
val files = listOf(
"assets/data-in-game.json" to "data-in-game.json",
"assets/freesr-data.json" to "freesr-data.json",
"assets/version.json" to "version.json"
)
return try {
if (!targetDir.exists()) targetDir.mkdirs()
for ((assetPath, name) in files) {
val outFile = File(targetDir, name)
if (outFile.exists() && !override) continue
val inputStream =
MainActivity::class.java.classLoader
?.getResourceAsStream(assetPath)
?: return false
inputStream.use { input ->
FileOutputStream(outFile).use { output ->
input.copyTo(output)
output.fd.sync()
}
}
Log.i("FileCopy", "${if (override) "✅ Overridden" else "✅ Copied"} $fileName to ${outFile.absolutePath}")
} catch (e: Exception) {
Log.e("FileCopy", "❌ Failed to copy $fileName: ${e.message}")
}
} else {
Log.i("FileCopy", " $fileName already exists at ${outFile.absolutePath}")
true
} catch (e: Exception) {
false
}
}
@@ -136,18 +181,18 @@ fun removeFile(targetDir: File, fileName: String): Boolean {
return if (file.exists()) {
try {
if (file.delete()) {
Log.i("FileRemove", "🗑️ Removed $fileName from ${file.absolutePath}")
Log.i("FileRemove", "Removed $fileName from ${file.absolutePath}")
true
} else {
Log.e("FileRemove", "Failed to remove $fileName from ${file.absolutePath}")
Log.e("FileRemove", "Failed to remove $fileName from ${file.absolutePath}")
false
}
} catch (e: Exception) {
Log.e("FileRemove", "Error removing $fileName: ${e.message}")
Log.e("FileRemove", "Error removing $fileName: ${e.message}")
false
}
} else {
Log.i("FileRemove", " $fileName does not exist in ${targetDir.absolutePath}")
Log.i("FileRemove", "$fileName does not exist in ${targetDir.absolutePath}")
false
}
}
@@ -239,7 +284,7 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
if (!isRunning) {
val intent = Intent(context, GolangServerService::class.java)
intent.putExtra("appDataPath", appDataPath)
context.startService(intent)
ContextCompat.startForegroundService(context, intent)
} else {
context.stopService(Intent(context, GolangServerService::class.java))
}
@@ -382,9 +427,7 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
onClick = {
showResetDialog = false
try {
copyRawToFile(context, dataDir, "data-in-game.json", R.raw.data_in_game_json, true)
copyRawToFile(context, dataDir, "freesr-data.json", R.raw.freesr_data_json, true)
copyRawToFile(context, dataDir, "version.json", R.raw.version_json, true)
copyRawToFile(dataDir, true)
Toast.makeText(context, "Data has been reset successfully", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {
Toast.makeText(context, "Reset failed: ${e.message}", Toast.LENGTH_SHORT).show()

View File

@@ -1,5 +1,5 @@
{
"latest_version": "4.1.1-01",
"changelog": "UPDATE: 4.1.51",
"apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/releases/download/4.1.1-01/firefly_go_android.apk"
"latest_version": "4.2.0-01",
"changelog": "UPDATE: Custom lineup",
"apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/releases/download/4.2.0-01/firefly_go_android.apk"
}

View File

@@ -1,44 +0,0 @@
{
"CNBETAAndroid4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"CNBETAWin4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"CNBETAiOS4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"OSBETAAndroid4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"OSBETAWin4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"OSBETAiOS4.1.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14372365_fa78e03ad599_36972b4e3bb553",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14352532_e3dee8767e70_9fd758f12171f5",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14394020_12e3f0c6a002_07566508dd1394",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
}
}

View File

@@ -1,3 +1,3 @@
# Changelog
## - UPDATE: Support 4.1.5X
## - UPDATE: Support 4.2.0

View File

@@ -1,4 +1,5 @@
{
"tag": "4.1.1-01",
"title": "PreBuild Version 4.1.51 - 01"
}
"tag": "4.2.0-01",
"title": "PreBuild Version 4.2.0 - 01"
}