Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f64f690a0a | |||
| b0c4a7e05a | |||
| 0a44f56c2f | |||
| 527c8176e4 | |||
| a54219b781 | |||
| 84cf16c3bf | |||
| becf6779f7 | |||
| d61b2aa907 | |||
| 534c08c70a | |||
| bc3e6f514a | |||
| 2469b9ff83 | |||
| f3abdff971 | |||
| af1b71f929 | |||
| 4146f260ac | |||
| 7c5200f838 | |||
| 17d6856f58 | |||
| 2ba164a05c | |||
| ecd02b8885 | |||
| 08caef28ab | |||
| b587da0b9a | |||
| 0f7748a1df | |||
| 2a2159eb8a | |||
| 866de7a49e | |||
| c49be0b2e7 | |||
| 00155e3619 | |||
| 6a9b6bc3a8 | |||
| e7b7751fbb | |||
| 66f6ef6cec | |||
| 1d149bfa19 | |||
| 707f7adbeb | |||
| b9f73f0d0f | |||
| 2f191a2c41 | |||
| 47f3f1f55d | |||
| 9399dbe051 | |||
| a044ca8189 | |||
| 67e06fd017 | |||
| 629e0cb456 | |||
| 4135f02885 | |||
| 6149ff55ab | |||
| 7722e5fa70 | |||
| dafb6aba1b | |||
| 3e967d7bed | |||
| c75207f8e1 | |||
| 3871dc8677 | |||
| 72dc9b238f | |||
| edf158028e | |||
| e21b59b9b1 | |||
| 4c10a53229 |
61
.gitea/workflows/build.yml
Normal file
61
.gitea/workflows/build.yml
Normal 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
1
.gitignore
vendored
@@ -15,3 +15,4 @@
|
||||
.externalNativeBuild
|
||||
.cxx
|
||||
local.properties
|
||||
.history/
|
||||
2
.idea/.name
generated
2
.idea/.name
generated
@@ -1 +1 @@
|
||||
FireflyPsAndorid
|
||||
FireflyGoAndroid
|
||||
2
.idea/compiler.xml
generated
2
.idea/compiler.xml
generated
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="21" />
|
||||
<bytecodeTargetLevel target="17" />
|
||||
</component>
|
||||
</project>
|
||||
13
.idea/deviceManager.xml
generated
Normal file
13
.idea/deviceManager.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DeviceTable">
|
||||
<option name="columnSorters">
|
||||
<list>
|
||||
<ColumnSorterState>
|
||||
<option name="column" value="Name" />
|
||||
<option name="order" value="ASCENDING" />
|
||||
</ColumnSorterState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@@ -15,5 +15,6 @@
|
||||
</option>
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
<option name="parallelModelFetch" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<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" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
||||
@@ -1,87 +1,99 @@
|
||||
@file:Suppress("UnstableApiUsage")
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.android.application)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.kotlin.compose)
|
||||
}
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.example.fireflypsandorid"
|
||||
compileSdk = 35
|
||||
namespace = "com.example.firefly_go_android"
|
||||
compileSdk = 36
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.example.fireflypsandorid"
|
||||
applicationId = "com.kain344.firefly_go_android"
|
||||
minSdk = 24
|
||||
//noinspection OldTargetApi
|
||||
targetSdk = 35
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
isMinifyEnabled = true
|
||||
isShrinkResources = true
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
ndk {
|
||||
abiFilters.addAll(listOf("arm64-v8a"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "11"
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
compose = true
|
||||
viewBinding = true
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.5.0"
|
||||
}
|
||||
buildToolsVersion = "36.0.0"
|
||||
ndkVersion = "27.2.12479018"
|
||||
dependenciesInfo {
|
||||
includeInApk = false
|
||||
includeInBundle = false
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("androidx.core:core-ktx:1.13.0")
|
||||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.3")
|
||||
implementation("androidx.activity:activity-compose:1.10.1")
|
||||
implementation(libs.androidx.core.ktx)
|
||||
implementation(libs.androidx.lifecycle.runtime.ktx.v293)
|
||||
implementation(libs.androidx.activity.compose.v1101)
|
||||
// Compose UI
|
||||
implementation("androidx.compose.ui:ui:1.9.0")
|
||||
implementation("androidx.compose.ui:ui-graphics:1.9.0")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview:1.9.0")
|
||||
implementation(libs.ui)
|
||||
implementation(libs.ui.graphics)
|
||||
implementation(libs.ui.tooling.preview)
|
||||
|
||||
// Foundation & Animation
|
||||
implementation("androidx.compose.foundation:foundation:1.9.0")
|
||||
implementation("androidx.compose.animation:animation:1.9.0")
|
||||
implementation("androidx.compose.animation:animation-core:1.9.0")
|
||||
implementation(libs.androidx.foundation)
|
||||
implementation(libs.androidx.animation)
|
||||
implementation(libs.androidx.animation.core)
|
||||
|
||||
// Material & Material3
|
||||
implementation("androidx.compose.material:material:1.9.0")
|
||||
implementation("androidx.compose.material:material-icons-extended:1.7.8")
|
||||
implementation("androidx.compose.material3:material3:1.3.2")
|
||||
implementation("androidx.compose.material3:material3-window-size-class:1.3.2")
|
||||
implementation(libs.androidx.material)
|
||||
implementation(libs.androidx.material.icons.extended)
|
||||
implementation(libs.material3)
|
||||
implementation(libs.androidx.material3.window.size.class1)
|
||||
|
||||
// Auto updater library
|
||||
implementation("com.github.CSAbhiOnline:AutoUpdater:1.0.1")
|
||||
implementation(libs.autoupdater)
|
||||
|
||||
// Unit Test
|
||||
testImplementation(libs.junit)
|
||||
|
||||
// Android Instrumentation Test
|
||||
androidTestImplementation("androidx.test.ext:junit:1.3.0")
|
||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0")
|
||||
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.9.0")
|
||||
androidTestImplementation(libs.androidx.junit.v130)
|
||||
androidTestImplementation(libs.androidx.espresso.core.v370)
|
||||
androidTestImplementation(libs.ui.test.junit4)
|
||||
|
||||
// Debug
|
||||
debugImplementation("androidx.compose.ui:ui-tooling:1.9.0")
|
||||
debugImplementation("androidx.compose.ui:ui-test-manifest:1.9.0")
|
||||
debugImplementation(libs.ui.tooling)
|
||||
debugImplementation(libs.ui.test.manifest)
|
||||
|
||||
// Local AAR library
|
||||
implementation(files("../library/firefly-go.aar"))
|
||||
implementation(files("libs/firefly-go.aar"))
|
||||
|
||||
implementation(libs.slf4j.android)
|
||||
}
|
||||
|
||||
|
||||
BIN
app/libs/firefly-go-sources.jar
Normal file
BIN
app/libs/firefly-go-sources.jar
Normal file
Binary file not shown.
BIN
app/libs/firefly-go.aar
LFS
Normal file
BIN
app/libs/firefly-go.aar
LFS
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
package com.example.fireflypsandorid
|
||||
package com.example.firefly_go_android
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
@@ -18,12 +18,12 @@
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:theme="@style/Theme.FireflyPsAndorid"
|
||||
android:theme="@style/Theme.FireflyGoAndroid"
|
||||
tools:targetApi="31">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/Theme.FireflyPsAndorid">
|
||||
android:theme="@style/Theme.FireflyGoAndroid">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.example.fireflypsandorid
|
||||
package com.example.firefly_go_android
|
||||
|
||||
import android.app.NotificationChannel
|
||||
import android.app.NotificationManager
|
||||
import android.app.PendingIntent
|
||||
import android.app.Service
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.BitmapFactory
|
||||
import android.os.Build
|
||||
import android.os.IBinder
|
||||
import android.os.PowerManager
|
||||
@@ -14,6 +14,7 @@ import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import libandroid.Libandroid
|
||||
|
||||
class GolangServerService : Service() {
|
||||
@@ -47,20 +48,29 @@ class GolangServerService : Service() {
|
||||
notificationIntent,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
|
||||
)
|
||||
val largeIcon = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
|
||||
|
||||
val notification = NotificationCompat.Builder(this, CHANNEL_ID)
|
||||
.setSmallIcon(R.mipmap.ic_launcher_round)
|
||||
.setLargeIcon(largeIcon)
|
||||
.setContentTitle("FireflyGO Server")
|
||||
.setContentText("FireflyGO is running...")
|
||||
.setSmallIcon(R.drawable.ic_launcher_foreground)
|
||||
.setContentText("Server is running...")
|
||||
.setColor(ContextCompat.getColor(this, R.color.teal_700))
|
||||
.setOngoing(true)
|
||||
.setOnlyAlertOnce(true)
|
||||
.setContentIntent(pendingIntent)
|
||||
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
||||
.setShowWhen(false)
|
||||
.setCategory(NotificationCompat.CATEGORY_SERVICE)
|
||||
.build()
|
||||
|
||||
|
||||
startForeground(NOTIFICATION_ID, notification)
|
||||
|
||||
try {
|
||||
val powerManager = getSystemService(POWER_SERVICE) as PowerManager
|
||||
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "GolangServer::WakeLock")
|
||||
wakeLock?.acquire()
|
||||
wakeLock?.acquire(10*60*1000L)
|
||||
Log.d(TAG, "✅ WakeLock acquired")
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ WakeLock failed", e)
|
||||
@@ -106,7 +116,6 @@ class GolangServerService : Service() {
|
||||
Log.e(TAG, "Error shutting down server", e)
|
||||
}
|
||||
|
||||
// 2. Giải phóng WakeLock nếu còn giữ
|
||||
try {
|
||||
wakeLock?.let {
|
||||
if (it.isHeld) {
|
||||
@@ -132,7 +141,7 @@ class GolangServerService : Service() {
|
||||
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)
|
||||
Log.d(TAG, "✅ Notification channel created")
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.example.fireflypsandorid
|
||||
package com.example.firefly_go_android
|
||||
|
||||
import AutoUpdaterManager
|
||||
import android.annotation.SuppressLint
|
||||
@@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
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.sp
|
||||
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.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -34,7 +33,6 @@ import androidx.compose.animation.core.*
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
@@ -57,12 +55,18 @@ import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.draw.scale
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
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.withStyle
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import kotlinx.coroutines.delay
|
||||
import org.json.JSONObject
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.text.font.FontFamily
|
||||
|
||||
data class AppVersion(
|
||||
val latestVersion: String,
|
||||
@@ -99,7 +103,7 @@ class MainActivity : ComponentActivity() {
|
||||
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
ServerControlScreen(appDataPath, dataDir, appVersion, Modifier.padding(innerPadding))
|
||||
AutoUpdateDialog(onDismiss = {}, appVersion, true)
|
||||
AutoUpdateDialog(onDismiss = {}, appVersion, dataDir, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,6 +131,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")
|
||||
@Composable
|
||||
fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersion, modifier: Modifier = Modifier) {
|
||||
@@ -162,7 +188,7 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
|
||||
) {
|
||||
// Title
|
||||
Text(
|
||||
text = "Firefly Ps for Android",
|
||||
text = "Firefly GO for Android",
|
||||
fontSize = 26.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.padding(top = 24.dp),
|
||||
@@ -249,7 +275,6 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
|
||||
horizontalArrangement = Arrangement.spacedBy(32.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
// Check Update widget
|
||||
Column(
|
||||
@@ -382,7 +407,9 @@ fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersi
|
||||
// Auto Update Dialog
|
||||
if (showUpdateDialog) {
|
||||
AutoUpdateDialog(
|
||||
onDismiss = { showUpdateDialog = false }, appVersion
|
||||
onDismiss = { showUpdateDialog = false },
|
||||
appVersion,
|
||||
dataDir
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -396,6 +423,59 @@ fun parseGoLogLine(line: String): String? {
|
||||
}
|
||||
|
||||
|
||||
fun parseAnsi(text: String, defaultColor: Color): AnnotatedString {
|
||||
val regex = Regex("\u001B\\[(\\d+)(;\\d+)*m")
|
||||
val builder = buildAnnotatedString {
|
||||
var lastIndex = 0
|
||||
var currentColor = defaultColor
|
||||
|
||||
for (match in regex.findAll(text)) {
|
||||
val start = match.range.first
|
||||
|
||||
// 1. Thêm phần text TRƯỚC mã ANSI với màu HIỆN TẠI
|
||||
val before = text.substring(lastIndex, start)
|
||||
if (before.isNotEmpty()) {
|
||||
withStyle(SpanStyle(color = currentColor)) {
|
||||
append(before)
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Lấy mã code (ví dụ 31, 36, hoặc 0)
|
||||
val code = try {
|
||||
match.groupValues[1].toInt()
|
||||
} catch (e: NumberFormatException) {
|
||||
0
|
||||
}
|
||||
|
||||
currentColor = when (code) {
|
||||
0 -> defaultColor
|
||||
30 -> Color.Black
|
||||
31 -> Color.Red
|
||||
32 -> Color(0xFF00C853) // Green
|
||||
33 -> Color(0xFFFFD600) // Yellow
|
||||
34 -> Color(0xFF2962FF) // Blue
|
||||
35 -> Color(0xFFD500F9) // Magenta
|
||||
36 -> Color(0xFF00B8D4) // Cyan
|
||||
37 -> Color.White
|
||||
else -> currentColor
|
||||
}
|
||||
|
||||
lastIndex = match.range.last + 1
|
||||
}
|
||||
|
||||
if (lastIndex < text.length) {
|
||||
val remain = text.substring(lastIndex)
|
||||
if (remain.isNotEmpty()) {
|
||||
withStyle(SpanStyle(color = currentColor)) {
|
||||
append(remain)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return builder
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun LogPopup(
|
||||
onDismiss: () -> Unit
|
||||
@@ -429,6 +509,8 @@ fun LogPopup(
|
||||
}
|
||||
}
|
||||
|
||||
val defaultTextColor = LocalContentColor.current
|
||||
|
||||
Dialog(onDismissRequest = { onDismiss() }) {
|
||||
Surface(
|
||||
shape = RoundedCornerShape(12.dp),
|
||||
@@ -445,19 +527,23 @@ fun LogPopup(
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
LazyColumn(
|
||||
state = listState,
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
LazyColumn(state = listState, modifier = Modifier.weight(1f)) {
|
||||
items(logs.size) { index ->
|
||||
Text(
|
||||
text = logs[index],
|
||||
text = parseAnsi(logs[index], defaultTextColor),
|
||||
fontSize = 12.sp,
|
||||
color = Color.Black,
|
||||
|
||||
// 2. DÙNG FONT MONOSPACE
|
||||
fontFamily = FontFamily.Monospace,
|
||||
|
||||
// 3. (Tuỳ chọn) Giảm chiều cao dòng để logo liền mạch
|
||||
lineHeight = 14.sp,
|
||||
|
||||
modifier = Modifier.padding(vertical = 2.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Button(
|
||||
onClick = { onDismiss() },
|
||||
@@ -476,6 +562,7 @@ fun LogPopup(
|
||||
fun AutoUpdateDialog(
|
||||
onDismiss: () -> Unit,
|
||||
appVersion: AppVersion,
|
||||
dataDir: File,
|
||||
isFirstOpen: Boolean = false
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
@@ -523,6 +610,10 @@ fun AutoUpdateDialog(
|
||||
LaunchedEffect(progress) {
|
||||
if (progress >= 100 && isDownloading) {
|
||||
downloadComplete = true
|
||||
|
||||
removeFile(dataDir, "data-in-game.json" )
|
||||
removeFile(dataDir, "freesr-data.json")
|
||||
removeFile(dataDir, "version.json")
|
||||
delay(500)
|
||||
}
|
||||
}
|
||||
@@ -602,7 +693,7 @@ fun AutoUpdateDialog(
|
||||
autoUpdaterManager.downloadapk(
|
||||
context,
|
||||
update!!.apk_url,
|
||||
"MyApp_${update!!.latestversion}.apk"
|
||||
"FireflyGO_${update!!.latestversion}.apk"
|
||||
) { prog -> progress = prog }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.example.fireflypsandorid.ui.theme
|
||||
package com.example.firefly_go_android.ui.theme
|
||||
|
||||
import androidx.compose.ui.graphics.Color
|
||||
|
||||
@@ -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 androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
@@ -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.ui.text.TextStyle
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"latest_version": "3.5.4-01",
|
||||
"changelog": "UPDATE: Update for v4",
|
||||
"apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Andoid/releases/download/3.5.4-01/firefly_go_android.apk"
|
||||
"latest_version": "3.7.2-01",
|
||||
"changelog": "UPDATE: 3.7.52",
|
||||
"apk_url": "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/releases/download/3.7.2-01/firefly_go_android.apk"
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"leader": 0,
|
||||
"leader": 1,
|
||||
"lineups": {
|
||||
"0": 1413,
|
||||
"1": 1403,
|
||||
"1": 1415,
|
||||
"2": 1409,
|
||||
"3": 1407
|
||||
},
|
||||
@@ -17,6 +17,9 @@
|
||||
"floor_id": 10000000,
|
||||
"entry_id": 100000104
|
||||
},
|
||||
"player_outfit": [
|
||||
1001
|
||||
],
|
||||
"char_path": {
|
||||
"main": 8008,
|
||||
"march_7": 1224
|
||||
@@ -32,15 +35,15 @@
|
||||
"skip_half": 0,
|
||||
"blessings": [],
|
||||
"is_in_challenge": false,
|
||||
"current_stage_id": 30117121,
|
||||
"current_stage_id": 30119122,
|
||||
"path_resonance_id": 0,
|
||||
"maze_buff": 0,
|
||||
"first_lineup": [],
|
||||
"second_lineup": []
|
||||
},
|
||||
"challenge_peak": {
|
||||
"current_mode": "Knight",
|
||||
"group_id": 1,
|
||||
"current_mode": "Boss",
|
||||
"group_id": 3,
|
||||
"is_in_challenge_peak": false,
|
||||
"challenge_peak_data": {
|
||||
"1": {
|
||||
@@ -91,24 +94,117 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"checkmate_data": {
|
||||
"challenge_id": 304,
|
||||
"blessing": 3033032,
|
||||
"lineup": [
|
||||
1222,
|
||||
1225,
|
||||
1310,
|
||||
1321
|
||||
],
|
||||
"stage_id": 30503021,
|
||||
"is_hard_mode": false
|
||||
},
|
||||
"knight_data": {
|
||||
"current_challenge_id": 302,
|
||||
"details_data": [
|
||||
{
|
||||
"lineup": [
|
||||
1003
|
||||
],
|
||||
"stage_id": 30503011,
|
||||
"challenge_id": 301
|
||||
},
|
||||
{
|
||||
"lineup": [
|
||||
1315
|
||||
],
|
||||
"stage_id": 30503012,
|
||||
"challenge_id": 302
|
||||
},
|
||||
{
|
||||
"lineup": [
|
||||
8001
|
||||
],
|
||||
"stage_id": 30503013,
|
||||
"challenge_id": 303
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"theory_craft": {
|
||||
"hp": {
|
||||
"1": 600000,
|
||||
"2": 10000000
|
||||
"1": [
|
||||
200000,
|
||||
1000000,
|
||||
200000
|
||||
],
|
||||
"2": [
|
||||
2000000000,
|
||||
2000000000,
|
||||
2000000000
|
||||
]
|
||||
},
|
||||
"cycle_count": 1,
|
||||
"log": false,
|
||||
"mode": false
|
||||
},
|
||||
"profile_data": {
|
||||
"cur_chat_bubble_id": 220008,
|
||||
"cur_chat_bubble_id": 220009,
|
||||
"cur_phone_theme_id": 221012,
|
||||
"cur_phone_case_id": 254001,
|
||||
"cur_pam_skin_id": 252000,
|
||||
"cur_pet_id": 1003,
|
||||
"cur_pet_id": 0,
|
||||
"cur_avatar_player_icon": 202034,
|
||||
"cur_player_personal_card": 253001,
|
||||
"cur_signature": "Firefly GO By Kain",
|
||||
@@ -124,5 +220,11 @@
|
||||
"skin_data": {
|
||||
"1001": 1100101,
|
||||
"1310": 1131001
|
||||
},
|
||||
"extra_setting": {
|
||||
"censorship": false,
|
||||
"cm": false,
|
||||
"first_person": false,
|
||||
"hide_ui": false
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,135 +1,212 @@
|
||||
{
|
||||
"CNBETAAndroid3.5.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11555075_e532a47d9e06_61b3c1ed162173",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd",
|
||||
"CNBETAAndroid3.6.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
|
||||
},
|
||||
"CNBETAAndroid3.6.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
|
||||
},
|
||||
"CNBETAAndroid3.6.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
|
||||
},
|
||||
"CNBETAAndroid3.6.54": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
|
||||
},
|
||||
"CNBETAAndroid3.7.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"CNBETAAndroid3.5.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11652344_6dae28086399_aaf63e0fedc33b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625",
|
||||
"CNBETAWin3.6.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
|
||||
},
|
||||
"CNBETAWin3.6.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
|
||||
},
|
||||
"CNBETAWin3.6.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
|
||||
},
|
||||
"CNBETAWin3.6.54": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
|
||||
},
|
||||
"CNBETAWin3.7.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"CNBETAAndroid3.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",
|
||||
"CNBETAiOS3.6.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
|
||||
},
|
||||
"CNBETAiOS3.6.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
|
||||
},
|
||||
"CNBETAiOS3.6.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
|
||||
},
|
||||
"CNBETAiOS3.6.54": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
|
||||
},
|
||||
"CNBETAiOS3.7.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"CNBETAWin3.5.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11497493_b4a5d8f717df_d632f2f00b0108",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11443120_75e75bb630b2_bb1653f50a24b3",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11503893_72129078bcdf_31a0117dd0c5aa",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11475376_d8a6597dc30c_b9f6afe07715f3",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_11454524_a18a9e47d5b8_3647b1d6ce2d9a"
|
||||
"OSBETAAndroid3.6.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
|
||||
},
|
||||
"CNBETAWin3.5.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11555075_e532a47d9e06_61b3c1ed162173",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd",
|
||||
"OSBETAAndroid3.6.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
|
||||
},
|
||||
"OSBETAAndroid3.6.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
|
||||
},
|
||||
"OSBETAAndroid3.6.54": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
|
||||
},
|
||||
"OSBETAAndroid3.7.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"CNBETAWin3.5.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11652344_6dae28086399_aaf63e0fedc33b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625",
|
||||
"OSBETAWin3.6.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
|
||||
},
|
||||
"OSBETAWin3.6.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
|
||||
},
|
||||
"OSBETAWin3.6.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
|
||||
},
|
||||
"OSBETAWin3.6.54": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
|
||||
},
|
||||
"OSBETAWin3.7.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"CNBETAWin3.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"
|
||||
"OSBETAiOS3.6.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12056690_16bfd67c199f_f3c0367d7b051e",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
|
||||
},
|
||||
"CNBETAiOS3.5.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11555075_e532a47d9e06_61b3c1ed162173",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
"OSBETAiOS3.6.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
|
||||
},
|
||||
"CNBETAiOS3.5.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11652344_6dae28086399_aaf63e0fedc33b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
"OSBETAiOS3.6.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12267173_87c48b19cccf_e57c755c3b27d6",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12291938_90c393f370b8_ecf686154f9ea4",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12295568_47061d21355e_62b79a4851861d",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12279762_593428c5dc22_788410d8dabf6a"
|
||||
},
|
||||
"CNBETAiOS3.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"
|
||||
"OSBETAiOS3.6.54": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12352492_feecc2905bb5_9818fd3412fb03",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12376047_ae7b1dea185c_bfd4bb5bbba6e2",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12354437_5c734713021d_d960d7478c00e1",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12379030_f3f1c49d9ea2_f084aab210cdfc"
|
||||
},
|
||||
"OSBETAAndroid3.5.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11555075_e532a47d9e06_61b3c1ed162173",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"OSBETAAndroid3.5.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11652344_6dae28086399_aaf63e0fedc33b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"OSBETAAndroid3.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"
|
||||
},
|
||||
"OSBETAWin3.5.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11555075_e532a47d9e06_61b3c1ed162173",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"OSBETAWin3.5.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11652344_6dae28086399_aaf63e0fedc33b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"OSBETAWin3.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"
|
||||
},
|
||||
"OSBETAiOS3.5.52": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11537608_83921e2bbfb5_f15a1cc2aaba76",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11531357_ac5c50fe7c5c_5b8f1dfdef8d06",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11555075_e532a47d9e06_61b3c1ed162173",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11531873_abaa8247cede_b13c1ccb975acd",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"OSBETAiOS3.5.53": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11619846_a5b546c20acf_c6ba7f65cf9eab",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11652344_6dae28086399_aaf63e0fedc33b",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11620131_ba9be3a133df_248c41962f7625",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
},
|
||||
"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",
|
||||
"OSBETAiOS3.7.51": {
|
||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"asset_bundle_url_b": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
|
||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
|
||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
|
||||
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
<resources>
|
||||
<string name="app_name">FireflyGo-3.5.5X</string>
|
||||
<string name="app_name">Firefly Go</string>
|
||||
</resources>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Theme.FireflyPsAndorid" parent="android:Theme.Material.Light.NoActionBar" />
|
||||
<style name="Theme.FireflyGoAndroid" parent="android:Theme.Material.Light.NoActionBar" />
|
||||
</resources>
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.example.fireflypsandorid
|
||||
package com.example.firefly_go_android
|
||||
|
||||
import org.junit.Test
|
||||
|
||||
@@ -14,12 +14,13 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
|
||||
# AndroidX package structure to make it clearer which packages are bundled with the
|
||||
# Android operating system, and which are packaged with your app's APK
|
||||
# https://developer.android.com/topic/libraries/support-library/androidx-rn
|
||||
org.gradle.parallel=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
# Kotlin code style for this project: "official" or "obsolete":
|
||||
kotlin.code.style=official
|
||||
# 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,
|
||||
# thereby reducing the size of the R class for that library
|
||||
android.nonTransitiveRClass=true
|
||||
org.gradle.configuration-cache=true
|
||||
#org.gradle.configuration-cache=false
|
||||
android.r8.optimizedResourceShrinking=true
|
||||
|
||||
@@ -1,29 +1,48 @@
|
||||
[versions]
|
||||
agp = "8.9.1"
|
||||
kotlin = "2.0.21"
|
||||
coreKtx = "1.10.1"
|
||||
activityComposeVersion = "1.11.0"
|
||||
agp = "8.13.0"
|
||||
androidxJunit = "1.3.0"
|
||||
animationCore = "1.9.3"
|
||||
autoupdater = "1.0.1"
|
||||
espressoCoreVersion = "3.7.0"
|
||||
foundation = "1.9.3"
|
||||
kotlin = "2.2.20"
|
||||
coreKtx = "1.17.0"
|
||||
junit = "4.13.2"
|
||||
junitVersion = "1.1.5"
|
||||
espressoCore = "3.5.1"
|
||||
lifecycleRuntimeKtx = "2.6.1"
|
||||
activityCompose = "1.8.0"
|
||||
composeBom = "2024.09.00"
|
||||
lifecycleRuntimeKtxVersion = "2.9.4"
|
||||
material = "1.9.3"
|
||||
material3WindowSizeClass = "1.4.0"
|
||||
materialIconsExtended = "1.7.8"
|
||||
slf4jAndroidVersion = "1.7.36"
|
||||
ui = "1.9.3"
|
||||
uiGraphics = "1.9.3"
|
||||
uiTestJunit4 = "1.9.3"
|
||||
uiTestManifest = "1.9.3"
|
||||
uiTooling = "1.9.3"
|
||||
uiToolingPreview = "1.9.3"
|
||||
|
||||
[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-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" }
|
||||
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
|
||||
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
|
||||
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
||||
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
|
||||
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
|
||||
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
|
||||
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
|
||||
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" }
|
||||
material3 = { module = "androidx.compose.material3:material3", version.ref = "material3WindowSizeClass" }
|
||||
slf4j-android = { module = "org.slf4j:slf4j-android", version.ref = "slf4jAndroidVersion" }
|
||||
ui = { module = "androidx.compose.ui:ui", version.ref = "ui" }
|
||||
ui-graphics = { module = "androidx.compose.ui:ui-graphics", version.ref = "uiGraphics" }
|
||||
ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "uiTestJunit4" }
|
||||
ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "uiTestManifest" }
|
||||
ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "uiTooling" }
|
||||
ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "uiToolingPreview" }
|
||||
|
||||
[plugins]
|
||||
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||
|
||||
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
||||
#Mon Apr 28 17:05:34 ICT 2025
|
||||
#Wed Oct 08 15:20:16 ICT 2025
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
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
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fbc29acc100bafe70ed46d921495ce98d93735d4c62d7af2fd78bc0f4d67651b
|
||||
size 86920442
|
||||
3
script/README_Note.md
Normal file
3
script/README_Note.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Changelog
|
||||
|
||||
## - UPDATE: 3.7.52
|
||||
BIN
script/release-uploader
Normal file
BIN
script/release-uploader
Normal file
Binary file not shown.
5
script/release.json
Normal file
5
script/release.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"tag": "3.7.2-01",
|
||||
"title": "PreBuild Version 3.7.52 - 01"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven {
|
||||
setUrl("https://jitpack.io")
|
||||
}
|
||||
google {
|
||||
content {
|
||||
includeGroupByRegex("com\\.android.*")
|
||||
@@ -9,18 +12,20 @@ pluginManagement {
|
||||
}
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
|
||||
}
|
||||
}
|
||||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||
repositories {
|
||||
maven {
|
||||
setUrl("https://jitpack.io")
|
||||
}
|
||||
google()
|
||||
mavenCentral()
|
||||
maven{
|
||||
url=uri("https://jitpack.io")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
rootProject.name = "FireflyPsAndorid"
|
||||
rootProject.name = "FireflyGoAndroid"
|
||||
include(":app")
|
||||
|
||||
Reference in New Issue
Block a user