45 Commits

Author SHA1 Message Date
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
7722e5fa70 UPDATE: Re-optimize performance 2025-10-04 21:16:44 +07:00
dafb6aba1b UPDATE: New res 2025-10-03 22:03:27 +07:00
3e967d7bed UPDATE: New res 2025-10-03 22:02:57 +07:00
c75207f8e1 UPDATE: Extra setting 2025-10-02 23:37:14 +07:00
3871dc8677 FIX: Fix env 2025-09-30 12:06:51 +07:00
72dc9b238f UPDATE: Update new link 2025-09-30 11:15:49 +07:00
edf158028e UPDATE: apk link 2025-09-30 10:30:40 +07:00
e21b59b9b1 UPDATE: Update to 3.6.52 2025-09-30 10:10:06 +07:00
4c10a53229 UPDATE: Fix bug, update libs 2025-09-02 20:00:36 +07:00
32 changed files with 909 additions and 404 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"

1
.gitignore vendored
View File

@@ -15,3 +15,4 @@
.externalNativeBuild .externalNativeBuild
.cxx .cxx
local.properties local.properties
.history/

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>

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

@@ -1,16 +1,22 @@
@file:Suppress("UnstableApiUsage")
plugins { plugins {
alias(libs.plugins.android.application) alias(libs.plugins.android.application)
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.fireflypsandorid" namespace = "com.example.firefly_go_android"
compileSdk = 35 compileSdk = 36
defaultConfig { defaultConfig {
applicationId = "com.example.fireflypsandorid" applicationId = "com.kain344.firefly_go_android"
minSdk = 24 minSdk = 24
//noinspection OldTargetApi
targetSdk = 35 targetSdk = 35
versionCode = 1 versionCode = 1
versionName = "1.0" versionName = "1.0"
@@ -20,7 +26,8 @@ android {
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"
@@ -28,60 +35,60 @@ android {
} }
} }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
buildFeatures { buildFeatures {
compose = true compose = true
viewBinding = true
} }
composeOptions { composeOptions {
kotlinCompilerExtensionVersion = "1.5.0" kotlinCompilerExtensionVersion = "1.5.0"
} }
buildToolsVersion = "36.0.0"
ndkVersion = "27.2.12479018"
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
} }
dependencies { dependencies {
implementation("androidx.core:core-ktx:1.13.0") implementation(libs.androidx.core.ktx)
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.3") implementation(libs.androidx.lifecycle.runtime.ktx.v293)
implementation("androidx.activity:activity-compose:1.10.1") implementation(libs.androidx.activity.compose.v1101)
// Compose UI // Compose UI
implementation("androidx.compose.ui:ui:1.9.0") implementation(libs.ui)
implementation("androidx.compose.ui:ui-graphics:1.9.0") implementation(libs.ui.graphics)
implementation("androidx.compose.ui:ui-tooling-preview:1.9.0") implementation(libs.ui.tooling.preview)
// Foundation & Animation // Foundation & Animation
implementation("androidx.compose.foundation:foundation:1.9.0") implementation(libs.androidx.foundation)
implementation("androidx.compose.animation:animation:1.9.0") implementation(libs.androidx.animation)
implementation("androidx.compose.animation:animation-core:1.9.0") implementation(libs.androidx.animation.core)
// Material & Material3 // Material & Material3
implementation("androidx.compose.material:material:1.9.0") implementation(libs.androidx.material)
implementation("androidx.compose.material:material-icons-extended:1.7.8") implementation(libs.androidx.material.icons.extended)
implementation("androidx.compose.material3:material3:1.3.2") implementation(libs.material3)
implementation("androidx.compose.material3:material3-window-size-class:1.3.2") implementation(libs.androidx.material3.window.size.class1)
// Auto updater library // Auto updater library
implementation("com.github.CSAbhiOnline:AutoUpdater:1.0.1") implementation(libs.autoupdater)
// Unit Test // Unit Test
testImplementation(libs.junit) testImplementation(libs.junit)
// Android Instrumentation Test // Android Instrumentation Test
androidTestImplementation("androidx.test.ext:junit:1.3.0") androidTestImplementation(libs.androidx.junit.v130)
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0") androidTestImplementation(libs.androidx.espresso.core.v370)
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.9.0") androidTestImplementation(libs.ui.test.junit4)
// Debug // Debug
debugImplementation("androidx.compose.ui:ui-tooling:1.9.0") debugImplementation(libs.ui.tooling)
debugImplementation("androidx.compose.ui:ui-test-manifest:1.9.0") debugImplementation(libs.ui.test.manifest)
// Local AAR library // Local AAR library
implementation(files("../library/firefly-go.aar")) implementation(files("libs/firefly-go.aar"))
implementation("org.slf4j:slf4j-android:1.7.36")
} }

Binary file not shown.

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

Binary file not shown.

View File

@@ -1,4 +1,4 @@
package com.example.fireflypsandorid package com.example.firefly_go_android
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4

View File

@@ -18,12 +18,12 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:theme="@style/Theme.FireflyPsAndorid" android:theme="@style/Theme.FireflyGoAndroid"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.FireflyPsAndorid"> android:theme="@style/Theme.FireflyGoAndroid">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />

View File

@@ -1,11 +1,11 @@
package com.example.fireflypsandorid package com.example.firefly_go_android
import android.app.NotificationChannel import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
import android.app.PendingIntent import android.app.PendingIntent
import android.app.Service import android.app.Service
import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.BitmapFactory
import android.os.Build import android.os.Build
import android.os.IBinder import android.os.IBinder
import android.os.PowerManager import android.os.PowerManager
@@ -14,6 +14,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.content.ContextCompat
import libandroid.Libandroid import libandroid.Libandroid
class GolangServerService : Service() { class GolangServerService : Service() {
@@ -47,20 +48,29 @@ class GolangServerService : Service() {
notificationIntent, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
) )
val largeIcon = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
val notification = NotificationCompat.Builder(this, CHANNEL_ID) val notification = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher_round)
.setLargeIcon(largeIcon)
.setContentTitle("FireflyGO Server") .setContentTitle("FireflyGO Server")
.setContentText("FireflyGO is running...") .setContentText("Server is running...")
.setSmallIcon(R.drawable.ic_launcher_foreground) .setColor(ContextCompat.getColor(this, R.color.teal_700))
.setOngoing(true)
.setOnlyAlertOnce(true)
.setContentIntent(pendingIntent) .setContentIntent(pendingIntent)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setShowWhen(false)
.setCategory(NotificationCompat.CATEGORY_SERVICE)
.build() .build()
startForeground(NOTIFICATION_ID, notification) startForeground(NOTIFICATION_ID, notification)
try { try {
val powerManager = getSystemService(POWER_SERVICE) as PowerManager val powerManager = getSystemService(POWER_SERVICE) as PowerManager
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "GolangServer::WakeLock") wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "GolangServer::WakeLock")
wakeLock?.acquire() wakeLock?.acquire(10*60*1000L)
Log.d(TAG, "✅ WakeLock acquired") Log.d(TAG, "✅ WakeLock acquired")
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "❌ WakeLock failed", e) Log.e(TAG, "❌ WakeLock failed", e)
@@ -106,7 +116,6 @@ class GolangServerService : Service() {
Log.e(TAG, "Error shutting down server", e) Log.e(TAG, "Error shutting down server", e)
} }
// 2. Giải phóng WakeLock nếu còn giữ
try { try {
wakeLock?.let { wakeLock?.let {
if (it.isHeld) { if (it.isHeld) {
@@ -132,7 +141,7 @@ class GolangServerService : Service() {
description = "Channel for running Golang backend in foreground" description = "Channel for running Golang backend in foreground"
} }
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
manager.createNotificationChannel(channel) manager.createNotificationChannel(channel)
Log.d(TAG, "✅ Notification channel created") Log.d(TAG, "✅ Notification channel created")
} }

View File

@@ -1,4 +1,4 @@
package com.example.fireflypsandorid package com.example.firefly_go_android
import AutoUpdaterManager import AutoUpdaterManager
import android.annotation.SuppressLint import android.annotation.SuppressLint
@@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
@@ -24,7 +23,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.example.autoupdater.UpdateFeatures import com.example.autoupdater.UpdateFeatures
import com.example.fireflypsandorid.ui.theme.FireflyPsAndoridTheme import com.example.firefly_go_android.ui.theme.FireflyPsAndoridTheme
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -34,7 +33,6 @@ import androidx.compose.animation.core.*
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@@ -57,12 +55,17 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.scale import androidx.compose.ui.draw.scale
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.graphics.Shadow
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties 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
data class AppVersion( data class AppVersion(
val latestVersion: String, val latestVersion: String,
@@ -99,7 +102,7 @@ class MainActivity : ComponentActivity() {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Box(modifier = Modifier.fillMaxSize()) { Box(modifier = Modifier.fillMaxSize()) {
ServerControlScreen(appDataPath, dataDir, appVersion, Modifier.padding(innerPadding)) ServerControlScreen(appDataPath, dataDir, appVersion, Modifier.padding(innerPadding))
AutoUpdateDialog(onDismiss = {}, appVersion, true) AutoUpdateDialog(onDismiss = {}, appVersion, dataDir, true)
} }
} }
} }
@@ -127,6 +130,28 @@ fun copyRawToFile(context: Context, targetDir: File, fileName: String, resId: In
} }
} }
fun removeFile(targetDir: File, fileName: String): Boolean {
val file = File(targetDir, fileName)
return if (file.exists()) {
try {
if (file.delete()) {
Log.i("FileRemove", "🗑️ Removed $fileName from ${file.absolutePath}")
true
} else {
Log.e("FileRemove", "❌ Failed to remove $fileName from ${file.absolutePath}")
false
}
} catch (e: Exception) {
Log.e("FileRemove", "❌ Error removing $fileName: ${e.message}")
false
}
} else {
Log.i("FileRemove", " $fileName does not exist in ${targetDir.absolutePath}")
false
}
}
@SuppressLint("ImplicitSamInstance") @SuppressLint("ImplicitSamInstance")
@Composable @Composable
fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersion, modifier: Modifier = Modifier) { fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersion, modifier: Modifier = Modifier) {
@@ -162,7 +187,7 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
) { ) {
// Title // Title
Text( Text(
text = "Firefly Ps for Android", text = "Firefly GO for Android",
fontSize = 26.sp, fontSize = 26.sp,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
modifier = Modifier.padding(top = 24.dp), modifier = Modifier.padding(top = 24.dp),
@@ -249,7 +274,6 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
horizontalArrangement = Arrangement.spacedBy(32.dp), horizontalArrangement = Arrangement.spacedBy(32.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
val context = LocalContext.current
// Check Update widget // Check Update widget
Column( Column(
@@ -382,7 +406,9 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
// Auto Update Dialog // Auto Update Dialog
if (showUpdateDialog) { if (showUpdateDialog) {
AutoUpdateDialog( AutoUpdateDialog(
onDismiss = { showUpdateDialog = false }, appVersion onDismiss = { showUpdateDialog = false },
appVersion,
dataDir
) )
} }
} }
@@ -395,6 +421,63 @@ fun parseGoLogLine(line: String): String? {
return if (content.isNullOrBlank()) null else content return if (content.isNullOrBlank()) null else content
} }
fun parseAnsi(text: String): AnnotatedString {
val regex = Regex("\u001B\\[(\\d+)(;\\d+)*m")
val builder = buildAnnotatedString {
var lastIndex = 0
var currentColor = Color.Black
for (match in regex.findAll(text)) {
val start = match.range.first
val before = text.substring(lastIndex, start)
withStyle(SpanStyle(color = currentColor)) {
append(before)
}
val code = match.groupValues[1].toInt()
currentColor = when (code) {
30 -> {
Color.Black
}
31 -> {
Color.Red
}
32 -> {
Color(0xFF00C853)
}
33 -> {
Color(0xFFFFD600)
}
34 -> {
Color(0xFF2962FF)
}
35 -> {
Color(0xFFD500F9)
}
36 -> {
Color(0xFF00B8D4)
}
37 -> {
Color.White
}
else -> {
Color.Black
}
}
lastIndex = match.range.last + 1
}
val remain = text.substring(lastIndex)
withStyle(SpanStyle(color = currentColor)) {
append(remain)
}
}
return builder
}
@Composable @Composable
fun LogPopup( fun LogPopup(
@@ -445,19 +528,16 @@ fun LogPopup(
) )
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))
LazyColumn( LazyColumn(state = listState, modifier = Modifier.weight(1f)) {
state = listState,
modifier = Modifier.weight(1f)
) {
items(logs.size) { index -> items(logs.size) { index ->
Text( Text(
text = logs[index], text = parseAnsi(logs[index]),
fontSize = 12.sp, fontSize = 12.sp,
color = Color.Black,
modifier = Modifier.padding(vertical = 2.dp) modifier = Modifier.padding(vertical = 2.dp)
) )
} }
} }
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))
Button( Button(
onClick = { onDismiss() }, onClick = { onDismiss() },
@@ -476,6 +556,7 @@ fun LogPopup(
fun AutoUpdateDialog( fun AutoUpdateDialog(
onDismiss: () -> Unit, onDismiss: () -> Unit,
appVersion: AppVersion, appVersion: AppVersion,
dataDir: File,
isFirstOpen: Boolean = false isFirstOpen: Boolean = false
) { ) {
val context = LocalContext.current val context = LocalContext.current
@@ -523,6 +604,10 @@ fun AutoUpdateDialog(
LaunchedEffect(progress) { LaunchedEffect(progress) {
if (progress >= 100 && isDownloading) { if (progress >= 100 && isDownloading) {
downloadComplete = true downloadComplete = true
removeFile(dataDir, "data-in-game.json" )
removeFile(dataDir, "freesr-data.json")
removeFile(dataDir, "version.json")
delay(500) delay(500)
} }
} }
@@ -602,7 +687,7 @@ fun AutoUpdateDialog(
autoUpdaterManager.downloadapk( autoUpdaterManager.downloadapk(
context, context,
update!!.apk_url, update!!.apk_url,
"MyApp_${update!!.latestversion}.apk" "FireflyGO_${update!!.latestversion}.apk"
) { prog -> progress = prog } ) { prog -> progress = prog }
} }
} }

View File

@@ -1,4 +1,4 @@
package com.example.fireflypsandorid.ui.theme package com.example.firefly_go_android.ui.theme
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color

View File

@@ -1,6 +1,5 @@
package com.example.fireflypsandorid.ui.theme package com.example.firefly_go_android.ui.theme
import android.app.Activity
import android.os.Build import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme

View File

@@ -1,4 +1,4 @@
package com.example.fireflypsandorid.ui.theme package com.example.firefly_go_android.ui.theme
import androidx.compose.material3.Typography import androidx.compose.material3.Typography
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle

View File

@@ -1,5 +1,5 @@
{ {
"latest_version": "3.5.4-01", "latest_version": "3.6.4-02",
"changelog": "UPDATE: Update for v4", "changelog": "UPDATE: Update to 3.6.54",
"apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Andoid/releases/download/3.5.4-01/firefly_go_android.apk" "apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/releases/download/3.6.4-02/firefly_go_android.apk"
} }

View File

@@ -2,21 +2,24 @@
"leader": 0, "leader": 0,
"lineups": { "lineups": {
"0": 1413, "0": 1413,
"1": 1403, "1": 1415,
"2": 1409, "2": 1409,
"3": 1407 "3": 1407
}, },
"position": { "position": {
"x": -4030, "x": 218004,
"z": -13006, "z": 259263,
"y": 0, "y": 53915,
"rot_y": 270000 "rot_y": 79863
}, },
"scene": { "scene": {
"plane_id": 10000, "plane_id": 20423,
"floor_id": 10000000, "floor_id": 20423001,
"entry_id": 100000104 "entry_id": 2042301
}, },
"player_outfit": [
1001
],
"char_path": { "char_path": {
"main": 8008, "main": 8008,
"march_7": 1224 "march_7": 1224
@@ -32,7 +35,7 @@
"skip_half": 0, "skip_half": 0,
"blessings": [], "blessings": [],
"is_in_challenge": false, "is_in_challenge": false,
"current_stage_id": 30117121, "current_stage_id": 30118121,
"path_resonance_id": 0, "path_resonance_id": 0,
"maze_buff": 0, "maze_buff": 0,
"first_lineup": [], "first_lineup": [],
@@ -40,7 +43,7 @@
}, },
"challenge_peak": { "challenge_peak": {
"current_mode": "Knight", "current_mode": "Knight",
"group_id": 1, "group_id": 2,
"is_in_challenge_peak": false, "is_in_challenge_peak": false,
"challenge_peak_data": { "challenge_peak_data": {
"1": { "1": {
@@ -91,16 +94,69 @@
} }
] ]
} }
},
"2": {
"checkmate_data": {
"challenge_id": 204,
"blessing": 3033021,
"lineup": [
1415,
1413,
1409,
1407
],
"stage_id": 30502022,
"is_hard_mode": true
},
"knight_data": {
"current_challenge_id": 203,
"details_data": [
{
"lineup": [
1302,
1309,
1410
],
"stage_id": 30502011,
"challenge_id": 201
},
{
"lineup": [
1221,
1222
],
"stage_id": 30502012,
"challenge_id": 202
},
{
"lineup": [
1415,
8001,
1414,
1313
],
"stage_id": 30502013,
"challenge_id": 203
}
]
}
} }
} }
}, },
"theory_craft": { "theory_craft": {
"hp": { "hp": {
"1": 600000, "1": [
"2": 10000000 200000,
1000000,
200000
],
"2": [
2000000000,
2000000000,
2000000000
]
}, },
"cycle_count": 1, "cycle_count": 1,
"log": false,
"mode": false "mode": false
}, },
"profile_data": { "profile_data": {
@@ -124,5 +180,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
} }
} }

View File

@@ -338,19 +338,27 @@
}, },
{ {
"level": 80, "level": 80,
"item_id": 21050, "item_id": 23052,
"equip_avatar": 8007, "equip_avatar": 1415,
"rank": 5, "rank": 1,
"promotion": 6, "promotion": 6,
"internal_uid": 42 "internal_uid": 42
}, },
{ {
"level": 80, "level": 80,
"item_id": 24005, "item_id": 21050,
"equip_avatar": 8008, "equip_avatar": 8007,
"rank": 5, "rank": 5,
"promotion": 6, "promotion": 6,
"internal_uid": 43 "internal_uid": 43
},
{
"level": 80,
"item_id": 22006,
"equip_avatar": 8008,
"rank": 5,
"promotion": 6,
"internal_uid": 44
} }
], ],
"relics": [ "relics": [
@@ -1198,7 +1206,7 @@
"level": 15, "level": 15,
"relic_id": 63095, "relic_id": 63095,
"relic_set_id": 309, "relic_set_id": 309,
"main_affix_id": 8, "main_affix_id": 9,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 5, "sub_affix_id": 5,
@@ -8096,8 +8104,8 @@
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61101, "relic_id": 61281,
"relic_set_id": 110, "relic_set_id": 128,
"main_affix_id": 1, "main_affix_id": 1,
"sub_affixes": [ "sub_affixes": [
{ {
@@ -8126,8 +8134,8 @@
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61102, "relic_id": 61282,
"relic_set_id": 110, "relic_set_id": 128,
"main_affix_id": 1, "main_affix_id": 1,
"sub_affixes": [ "sub_affixes": [
{ {
@@ -8156,9 +8164,9 @@
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61103, "relic_id": 61283,
"relic_set_id": 110, "relic_set_id": 128,
"main_affix_id": 3, "main_affix_id": 2,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 2, "sub_affix_id": 2,
@@ -8186,8 +8194,8 @@
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61104, "relic_id": 61284,
"relic_set_id": 110, "relic_set_id": 128,
"main_affix_id": 4, "main_affix_id": 4,
"sub_affixes": [ "sub_affixes": [
{ {
@@ -8216,9 +8224,9 @@
}, },
{ {
"level": 15, "level": 15,
"relic_id": 63085, "relic_id": 63175,
"relic_set_id": 308, "relic_set_id": 317,
"main_affix_id": 3, "main_affix_id": 2,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 3, "sub_affix_id": 3,
@@ -8246,13 +8254,193 @@
}, },
{ {
"level": 15, "level": 15,
"relic_id": 63086, "relic_id": 63176,
"relic_set_id": 308, "relic_set_id": 317,
"main_affix_id": 2, "main_affix_id": 2,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 3, "sub_affix_id": 3,
"count": 2, "count": 2,
"step": 3
},
{
"sub_affix_id": 7,
"count": 3,
"step": 3
},
{
"sub_affix_id": 2,
"count": 2,
"step": 2
},
{
"sub_affix_id": 5,
"count": 2,
"step": 3
}
],
"internal_uid": 263,
"equip_avatar": 1414
},
{
"level": 15,
"relic_id": 61271,
"relic_set_id": 127,
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 7,
"count": 3,
"step": 4
},
{
"sub_affix_id": 4,
"count": 2,
"step": 3
},
{
"sub_affix_id": 8,
"count": 2,
"step": 4
},
{
"sub_affix_id": 9,
"count": 2,
"step": 3
}
],
"internal_uid": 264,
"equip_avatar": 1415
},
{
"level": 15,
"relic_id": 61272,
"relic_set_id": 127,
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 7,
"count": 3,
"step": 3
},
{
"sub_affix_id": 8,
"count": 2,
"step": 2
},
{
"sub_affix_id": 4,
"count": 3,
"step": 1
},
{
"sub_affix_id": 9,
"count": 1,
"step": 1
}
],
"internal_uid": 265,
"equip_avatar": 1415
},
{
"level": 15,
"relic_id": 61273,
"relic_set_id": 127,
"main_affix_id": 5,
"sub_affixes": [
{
"sub_affix_id": 8,
"count": 2,
"step": 2
},
{
"sub_affix_id": 4,
"count": 3,
"step": 2
},
{
"sub_affix_id": 1,
"count": 2,
"step": 3
},
{
"sub_affix_id": 12,
"count": 2,
"step": 1
}
],
"internal_uid": 266,
"equip_avatar": 1415
},
{
"level": 15,
"relic_id": 61274,
"relic_set_id": 127,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 4,
"count": 3,
"step": 3
},
{
"sub_affix_id": 8,
"count": 2,
"step": 1
},
{
"sub_affix_id": 9,
"count": 2,
"step": 4
},
{
"sub_affix_id": 1,
"count": 2,
"step": 2
}
],
"internal_uid": 267,
"equip_avatar": 1415
},
{
"level": 15,
"relic_id": 63235,
"relic_set_id": 323,
"main_affix_id": 6,
"sub_affixes": [
{
"sub_affix_id": 9,
"count": 5,
"step": 3
},
{
"sub_affix_id": 8,
"count": 1,
"step": 2
},
{
"sub_affix_id": 7,
"count": 2,
"step": 1
},
{
"sub_affix_id": 4,
"count": 1,
"step": 0
}
],
"internal_uid": 268,
"equip_avatar": 1415
},
{
"level": 15,
"relic_id": 63236,
"relic_set_id": 323,
"main_affix_id": 3,
"sub_affixes": [
{
"sub_affix_id": 8,
"count": 2,
"step": 4 "step": 4
}, },
{ {
@@ -8262,17 +8450,17 @@
}, },
{ {
"sub_affix_id": 9, "sub_affix_id": 9,
"count": 2, "count": 3,
"step": 2 "step": 3
}, },
{ {
"sub_affix_id": 10, "sub_affix_id": 1,
"count": 2, "count": 2,
"step": 2 "step": 1
} }
], ],
"internal_uid": 263, "internal_uid": 269,
"equip_avatar": 1414 "equip_avatar": 1415
}, },
{ {
"level": 15, "level": 15,
@@ -8301,7 +8489,7 @@
"step": 2 "step": 2
} }
], ],
"internal_uid": 264, "internal_uid": 270,
"equip_avatar": 8007 "equip_avatar": 8007
}, },
{ {
@@ -8331,7 +8519,7 @@
"step": 2 "step": 2
} }
], ],
"internal_uid": 265, "internal_uid": 271,
"equip_avatar": 8007 "equip_avatar": 8007
}, },
{ {
@@ -8361,7 +8549,7 @@
"step": 0 "step": 0
} }
], ],
"internal_uid": 266, "internal_uid": 272,
"equip_avatar": 8007 "equip_avatar": 8007
}, },
{ {
@@ -8391,7 +8579,7 @@
"step": 2 "step": 2
} }
], ],
"internal_uid": 267, "internal_uid": 273,
"equip_avatar": 8007 "equip_avatar": 8007
}, },
{ {
@@ -8421,7 +8609,7 @@
"step": 2 "step": 2
} }
], ],
"internal_uid": 268, "internal_uid": 274,
"equip_avatar": 8007 "equip_avatar": 8007
}, },
{ {
@@ -8451,187 +8639,187 @@
"step": 2 "step": 2
} }
], ],
"internal_uid": 269, "internal_uid": 275,
"equip_avatar": 8007 "equip_avatar": 8007
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61101, "relic_id": 61271,
"relic_set_id": 110, "relic_set_id": 127,
"main_affix_id": 1, "main_affix_id": 1,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 2, "sub_affix_id": 5,
"count": 2, "count": 3,
"step": 3 "step": 1
}, },
{ {
"sub_affix_id": 7, "sub_affix_id": 7,
"count": 1, "count": 2,
"step": 1 "step": 2
}, },
{ {
"sub_affix_id": 11, "sub_affix_id": 8,
"count": 2, "count": 1,
"step": 1 "step": 2
}, },
{ {
"sub_affix_id": 9, "sub_affix_id": 9,
"count": 4, "count": 3,
"step": 4 "step": 4
} }
], ],
"internal_uid": 270, "internal_uid": 276,
"equip_avatar": 8008 "equip_avatar": 8008
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61102, "relic_id": 61272,
"relic_set_id": 110, "relic_set_id": 127,
"main_affix_id": 1, "main_affix_id": 1,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 6, "sub_affix_id": 5,
"count": 2, "count": 4,
"step": 3 "step": 3
}, },
{ {
"sub_affix_id": 7, "sub_affix_id": 7,
"count": 3, "count": 2,
"step": 2 "step": 3
}, },
{ {
"sub_affix_id": 9, "sub_affix_id": 9,
"count": 2, "count": 2,
"step": 2 "step": 1
}, },
{ {
"sub_affix_id": 11, "sub_affix_id": 8,
"count": 2, "count": 1,
"step": 2 "step": 0
} }
], ],
"internal_uid": 271, "internal_uid": 277,
"equip_avatar": 8008 "equip_avatar": 8008
}, },
{ {
"level": 15, "level": 15,
"relic_id": 61103, "relic_id": 61273,
"relic_set_id": 110, "relic_set_id": 127,
"main_affix_id": 5, "main_affix_id": 5,
"sub_affixes": [ "sub_affixes": [
{ {
"sub_affix_id": 4, "sub_affix_id": 4,
"count": 3, "count": 3,
"step": 4
},
{
"sub_affix_id": 5,
"count": 3,
"step": 2
},
{
"sub_affix_id": 7,
"count": 2,
"step": 1
},
{
"sub_affix_id": 8,
"count": 1,
"step": 0
}
],
"internal_uid": 278,
"equip_avatar": 8008
},
{
"level": 15,
"relic_id": 61274,
"relic_set_id": 127,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 5,
"count": 3,
"step": 4
},
{
"sub_affix_id": 9,
"count": 3,
"step": 4
},
{
"sub_affix_id": 8,
"count": 2,
"step": 3 "step": 3
}, },
{ {
"sub_affix_id": 1, "sub_affix_id": 11,
"count": 1, "count": 1,
"step": 1 "step": 2
}
],
"internal_uid": 279,
"equip_avatar": 8008
},
{
"level": 15,
"relic_id": 63215,
"relic_set_id": 321,
"main_affix_id": 6,
"sub_affixes": [
{
"sub_affix_id": 5,
"count": 3,
"step": 3
},
{
"sub_affix_id": 9,
"count": 3,
"step": 3
},
{
"sub_affix_id": 7,
"count": 2,
"step": 3
},
{
"sub_affix_id": 8,
"count": 1,
"step": 2
}
],
"internal_uid": 280,
"equip_avatar": 8008
},
{
"level": 15,
"relic_id": 63216,
"relic_set_id": 321,
"main_affix_id": 2,
"sub_affixes": [
{
"sub_affix_id": 5,
"count": 2,
"step": 3
}, },
{ {
"sub_affix_id": 7, "sub_affix_id": 7,
"count": 3, "count": 3,
"step": 4 "step": 4
}, },
{
"sub_affix_id": 11,
"count": 2,
"step": 3
}
],
"internal_uid": 272,
"equip_avatar": 8008
},
{
"level": 15,
"relic_id": 61104,
"relic_set_id": 110,
"main_affix_id": 4,
"sub_affixes": [
{
"sub_affix_id": 1,
"count": 2,
"step": 3
},
{ {
"sub_affix_id": 9, "sub_affix_id": 9,
"count": 3, "count": 1,
"step": 3
},
{
"sub_affix_id": 10,
"count": 2,
"step": 2 "step": 2
}, },
{ {
"sub_affix_id": 11, "sub_affix_id": 8,
"count": 1,
"step": 1
}
],
"internal_uid": 273,
"equip_avatar": 8008
},
{
"level": 15,
"relic_id": 63105,
"relic_set_id": 310,
"main_affix_id": 1,
"sub_affixes": [
{
"sub_affix_id": 3,
"count": 2,
"step": 3
},
{
"sub_affix_id": 9,
"count": 1,
"step": 1
},
{
"sub_affix_id": 7,
"count": 3,
"step": 3
},
{
"sub_affix_id": 11,
"count": 3, "count": 3,
"step": 3 "step": 3
} }
], ],
"internal_uid": 274, "internal_uid": 281,
"equip_avatar": 8008
},
{
"level": 15,
"relic_id": 63106,
"relic_set_id": 310,
"main_affix_id": 2,
"sub_affixes": [
{
"sub_affix_id": 5,
"count": 1,
"step": 1
},
{
"sub_affix_id": 7,
"count": 3,
"step": 3
},
{
"sub_affix_id": 9,
"count": 2,
"step": 1
},
{
"sub_affix_id": 11,
"count": 2,
"step": 3
}
],
"internal_uid": 275,
"equip_avatar": 8008 "equip_avatar": 8008
} }
], ],
@@ -8916,10 +9104,10 @@
"data": { "data": {
"rank": 0, "rank": 0,
"skills": { "skills": {
"1013001": 1, "1013001": 6,
"1013002": 1, "1013002": 10,
"1013003": 1, "1013003": 10,
"1013004": 1, "1013004": 10,
"1013007": 1, "1013007": 1,
"1013101": 1, "1013101": 1,
"1013102": 1, "1013102": 1,
@@ -9108,10 +9296,10 @@
"data": { "data": {
"rank": 0, "rank": 0,
"skills": { "skills": {
"1104001": 1, "1104001": 6,
"1104002": 1, "1104002": 10,
"1104003": 1, "1104003": 10,
"1104004": 1, "1104004": 10,
"1104007": 1, "1104007": 1,
"1104101": 1, "1104101": 1,
"1104102": 1, "1104102": 1,
@@ -9172,8 +9360,8 @@
"data": { "data": {
"rank": 6, "rank": 6,
"skills": { "skills": {
"1106001": 3, "1106001": 6,
"1106002": 9, "1106002": 10,
"1106003": 10, "1106003": 10,
"1106004": 10, "1106004": 10,
"1106007": 1, "1106007": 1,
@@ -9670,10 +9858,10 @@
"data": { "data": {
"rank": 0, "rank": 0,
"skills": { "skills": {
"1209001": 1, "1209001": 6,
"1209002": 1, "1209002": 10,
"1209003": 1, "1209003": 10,
"1209004": 1, "1209004": 10,
"1209007": 1, "1209007": 1,
"1209101": 1, "1209101": 1,
"1209102": 1, "1209102": 1,
@@ -10518,7 +10706,7 @@
"owner_uid": 0, "owner_uid": 0,
"avatar_id": 1313, "avatar_id": 1313,
"data": { "data": {
"rank": 0, "rank": 2,
"skills": { "skills": {
"1313001": 2, "1313001": 2,
"1313002": 10, "1313002": 10,
@@ -11045,12 +11233,12 @@
"owner_uid": 0, "owner_uid": 0,
"avatar_id": 1414, "avatar_id": 1414,
"data": { "data": {
"rank": 5, "rank": 2,
"skills": { "skills": {
"1414001": 1, "1414001": 6,
"1414002": 1, "1414002": 10,
"1414003": 1, "1414003": 10,
"1414004": 1, "1414004": 10,
"1414007": 1, "1414007": 1,
"1414101": 1, "1414101": 1,
"1414102": 1, "1414102": 1,
@@ -11077,6 +11265,40 @@
"sp_value": 70, "sp_value": 70,
"sp_max": 140 "sp_max": 140
}, },
"1415": {
"owner_uid": 0,
"avatar_id": 1415,
"data": {
"rank": 2,
"skills": {
"1415001": 6,
"1415002": 10,
"1415003": 10,
"1415004": 10,
"1415007": 1,
"1415101": 1,
"1415102": 1,
"1415103": 1,
"1415201": 1,
"1415202": 1,
"1415203": 1,
"1415204": 1,
"1415205": 1,
"1415206": 1,
"1415207": 1,
"1415208": 1,
"1415209": 1,
"1415210": 1,
"1415301": 6,
"1415302": 6
}
},
"level": 80,
"promotion": 6,
"techniques": [],
"sp_value": 12,
"sp_max": 24
},
"8001": { "8001": {
"owner_uid": 0, "owner_uid": 0,
"avatar_id": 8001, "avatar_id": 8001,
@@ -11294,7 +11516,8 @@
"8007209": 1, "8007209": 1,
"8007210": 1, "8007210": 1,
"8007301": 6, "8007301": 6,
"8007302": 6 "8007302": 6,
"8007501": 1
} }
}, },
"level": 80, "level": 80,
@@ -11328,7 +11551,8 @@
"8008209": 1, "8008209": 1,
"8008210": 1, "8008210": 1,
"8008301": 6, "8008301": 6,
"8008302": 6 "8008302": 6,
"8008501": 1
} }
}, },
"level": 80, "level": 80,
@@ -11339,21 +11563,42 @@
} }
}, },
"battle_config": { "battle_config": {
"battle_type": "CE", "battle_type": "MOC",
"blessings": [], "blessings": [
{
"level": 1,
"id": 3030141
}
],
"custom_stats": [], "custom_stats": [],
"cycle_count": 30, "cycle_count": 30,
"stage_id": 103202, "stage_id": 30118121,
"path_resonance_id": 0, "path_resonance_id": 0,
"monsters": [ "monsters": [
[ [
{ {
"monster_id": 8034012, "monster_id": 2023030,
"level": 95,
"amount": 1
},
{
"monster_id": 4053020,
"level": 95,
"amount": 1
},
{
"monster_id": 2023030,
"level": 95, "level": 95,
"amount": 1 "amount": 1
} }
], ],
[] [
{
"monster_id": 4014020,
"level": 95,
"amount": 1
}
]
] ]
} }
} }

View File

@@ -1,135 +1,128 @@
{ {
"CNBETAAndroid3.5.52": { "CNBETAAndroid3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06", "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_11555075_e532a47d9e06_61b3c1ed162173", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"CNBETAAndroid3.5.53": { "CNBETAAndroid3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "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_11652344_6dae28086399_aaf63e0fedc33b", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
}, },
"CNBETAAndroid3.5.54": { "CNBETAAndroid3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "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_11748833_44e6507dc182_fc55ad3d7434ba", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11715817_6b9296fec056_20fd6286275e46", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
}, },
"CNBETAWin3.5.51": { "CNBETAWin3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11497493_b4a5d8f717df_d632f2f00b0108", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11443120_75e75bb630b2_bb1653f50a24b3", "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_11503893_72129078bcdf_31a0117dd0c5aa", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11475376_d8a6597dc30c_b9f6afe07715f3", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_11454524_a18a9e47d5b8_3647b1d6ce2d9a" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"CNBETAWin3.5.52": { "CNBETAWin3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06", "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_11555075_e532a47d9e06_61b3c1ed162173", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
}, },
"CNBETAWin3.5.53": { "CNBETAWin3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "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_11652344_6dae28086399_aaf63e0fedc33b", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
}, },
"CNBETAWin3.5.54": { "CNBETAiOS3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "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_11748833_44e6507dc182_fc55ad3d7434ba", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11715817_6b9296fec056_20fd6286275e46", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"CNBETAiOS3.5.52": { "CNBETAiOS3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06", "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_11555075_e532a47d9e06_61b3c1ed162173", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
}, },
"CNBETAiOS3.5.53": { "CNBETAiOS3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "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_11652344_6dae28086399_aaf63e0fedc33b", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
}, },
"CNBETAiOS3.5.54": { "OSBETAAndroid3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "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_11748833_44e6507dc182_fc55ad3d7434ba", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11715817_6b9296fec056_20fd6286275e46", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"OSBETAAndroid3.5.52": { "OSBETAAndroid3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06", "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_11555075_e532a47d9e06_61b3c1ed162173", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
}, },
"OSBETAAndroid3.5.53": { "OSBETAAndroid3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "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_11652344_6dae28086399_aaf63e0fedc33b", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
}, },
"OSBETAAndroid3.5.54": { "OSBETAWin3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "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_11748833_44e6507dc182_fc55ad3d7434ba", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11715817_6b9296fec056_20fd6286275e46", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"OSBETAWin3.5.52": { "OSBETAWin3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06", "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_11555075_e532a47d9e06_61b3c1ed162173", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
}, },
"OSBETAWin3.5.53": { "OSBETAWin3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "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_11652344_6dae28086399_aaf63e0fedc33b", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
}, },
"OSBETAWin3.5.54": { "OSBETAiOS3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e", "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_11748833_44e6507dc182_fc55ad3d7434ba", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11715817_6b9296fec056_20fd6286275e46", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
}, },
"OSBETAiOS3.5.52": { "OSBETAiOS3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06", "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_11555075_e532a47d9e06_61b3c1ed162173", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
}, },
"OSBETAiOS3.5.53": { "OSBETAiOS3.6.53": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab", "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_11652344_6dae28086399_aaf63e0fedc33b", "ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625", "lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885" "ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
},
"OSBETAiOS3.5.54": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e",
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11715498_4850ed5bf0fe_76bdeb19894e7e",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11748833_44e6507dc182_fc55ad3d7434ba",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11715817_6b9296fec056_20fd6286275e46",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
} }
} }

View File

@@ -1,3 +1,3 @@
<resources> <resources>
<string name="app_name">FireflyGo-3.5.5X</string> <string name="app_name">Firefly Go</string>
</resources> </resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Theme.FireflyPsAndorid" parent="android:Theme.Material.Light.NoActionBar" /> <style name="Theme.FireflyGoAndroid" parent="android:Theme.Material.Light.NoActionBar" />
</resources> </resources>

View File

@@ -1,4 +1,4 @@
package com.example.fireflypsandorid package com.example.firefly_go_android
import org.junit.Test import org.junit.Test

View File

@@ -14,12 +14,12 @@ 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=true
# 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

View File

@@ -1,29 +1,46 @@
[versions] [versions]
agp = "8.9.1" activityComposeVersion = "1.11.0"
kotlin = "2.0.21" agp = "8.13.0"
coreKtx = "1.10.1" androidxJunit = "1.3.0"
animationCore = "1.9.2"
autoupdater = "1.0.1"
espressoCoreVersion = "3.7.0"
foundation = "1.9.2"
kotlin = "2.2.20"
coreKtx = "1.17.0"
junit = "4.13.2" junit = "4.13.2"
junitVersion = "1.1.5" lifecycleRuntimeKtxVersion = "2.9.4"
espressoCore = "3.5.1" material = "1.9.2"
lifecycleRuntimeKtx = "2.6.1" material3WindowSizeClass = "1.4.0"
activityCompose = "1.8.0" materialIconsExtended = "1.7.8"
composeBom = "2024.09.00" ui = "1.9.2"
uiGraphics = "1.9.2"
uiTestJunit4 = "1.9.2"
uiTestManifest = "1.9.2"
uiTooling = "1.9.2"
uiToolingPreview = "1.9.2"
[libraries] [libraries]
androidx-activity-compose-v1101 = { module = "androidx.activity:activity-compose", version.ref = "activityComposeVersion" }
androidx-animation = { module = "androidx.compose.animation:animation", version.ref = "animationCore" }
androidx-animation-core = { module = "androidx.compose.animation:animation-core", version.ref = "animationCore" }
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-espresso-core-v370 = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCoreVersion" }
androidx-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "foundation" }
androidx-junit-v130 = { module = "androidx.test.ext:junit", version.ref = "androidxJunit" }
androidx-lifecycle-runtime-ktx-v293 = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtxVersion" }
androidx-material = { module = "androidx.compose.material:material", version.ref = "material" }
androidx-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "materialIconsExtended" }
androidx-material3-window-size-class1 = { module = "androidx.compose.material3:material3-window-size-class", version.ref = "material3WindowSizeClass" }
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" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } material3 = { module = "androidx.compose.material3:material3", version.ref = "material3WindowSizeClass" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } ui = { module = "androidx.compose.ui:ui", version.ref = "ui" }
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } ui-graphics = { module = "androidx.compose.ui:ui-graphics", version.ref = "uiGraphics" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "uiTestJunit4" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "uiTestManifest" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" } ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "uiTooling" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "uiToolingPreview" }
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
[plugins] [plugins]
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }

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:fbc29acc100bafe70ed46d921495ce98d93735d4c62d7af2fd78bc0f4d67651b
size 86920442

2
script/README_Note.md Normal file
View File

@@ -0,0 +1,2 @@
# Changelog
## - FIX: I forgot update new data

BIN
script/release-uploader Normal file

Binary file not shown.

5
script/release.json Normal file
View File

@@ -0,0 +1,5 @@
{
"tag": "3.6.4-02",
"title": "PreBuild Version 3.6.54 - 02"
}

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")