diff --git a/Android-kotlin-Code/E FATAL EXCEPTION- main (.textClipping b/Android-kotlin-Code/E FATAL EXCEPTION- main (.textClipping new file mode 100644 index 0000000..d05a11e Binary files /dev/null and b/Android-kotlin-Code/E FATAL EXCEPTION- main (.textClipping differ diff --git a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-arm64-v8a-release.apk b/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-arm64-v8a-release.apk deleted file mode 100644 index d6e184d..0000000 Binary files a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-arm64-v8a-release.apk and /dev/null differ diff --git a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-armeabi-v7a-release.apk b/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-armeabi-v7a-release.apk deleted file mode 100644 index 6e0e06e..0000000 Binary files a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-armeabi-v7a-release.apk and /dev/null differ diff --git a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-universal-release.apk b/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-universal-release.apk deleted file mode 100644 index 92c03ae..0000000 Binary files a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-universal-release.apk and /dev/null differ diff --git a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-x86-release.apk b/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-x86-release.apk deleted file mode 100644 index 8442a45..0000000 Binary files a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-x86-release.apk and /dev/null differ diff --git a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-x86_64-release.apk b/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-x86_64-release.apk deleted file mode 100644 index 8442a45..0000000 Binary files a/Android-kotlin-Code/app/meta/release/UUVPN-3.0.2-meta-x86_64-release.apk and /dev/null differ diff --git a/Android-kotlin-Code/app/meta/release/output-metadata.json b/Android-kotlin-Code/app/meta/release/output-metadata.json deleted file mode 100644 index 55dcef5..0000000 --- a/Android-kotlin-Code/app/meta/release/output-metadata.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "version": 3, - "artifactType": { - "type": "APK", - "kind": "Directory" - }, - "applicationId": "com.litevpn.fast", - "variantName": "metaRelease", - "elements": [ - { - "type": "UNIVERSAL", - "filters": [], - "attributes": [], - "versionCode": 321001, - "versionName": "3.0.2", - "outputFile": "UUVPN-3.0.2-meta-universal-release.apk" - }, - { - "type": "ONE_OF_MANY", - "filters": [ - { - "filterType": "ABI", - "value": "x86_64" - } - ], - "attributes": [], - "versionCode": 321001, - "versionName": "3.0.2", - "outputFile": "UUVPN-3.0.2-meta-x86_64-release.apk" - }, - { - "type": "ONE_OF_MANY", - "filters": [ - { - "filterType": "ABI", - "value": "x86" - } - ], - "attributes": [], - "versionCode": 321001, - "versionName": "3.0.2", - "outputFile": "UUVPN-3.0.2-meta-x86-release.apk" - }, - { - "type": "ONE_OF_MANY", - "filters": [ - { - "filterType": "ABI", - "value": "armeabi-v7a" - } - ], - "attributes": [], - "versionCode": 321001, - "versionName": "3.0.2", - "outputFile": "UUVPN-3.0.2-meta-armeabi-v7a-release.apk" - }, - { - "type": "ONE_OF_MANY", - "filters": [ - { - "filterType": "ABI", - "value": "arm64-v8a" - } - ], - "attributes": [], - "versionCode": 321001, - "versionName": "3.0.2", - "outputFile": "UUVPN-3.0.2-meta-arm64-v8a-release.apk" - } - ], - "elementType": "File" -} \ No newline at end of file diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LoginActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LoginActivity.kt index 25f9889..4eec1c1 100644 --- a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LoginActivity.kt +++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LoginActivity.kt @@ -53,6 +53,7 @@ class LoginActivity : AppCompatActivity() { private var isPasswordVisible = false + private var configRetryCount = 0 override fun onCreate(savedInstanceState: Bundle?) { @@ -129,7 +130,9 @@ class LoginActivity : AppCompatActivity() { private fun getconfig(){ - LoadingDialog.show(this, "正在初始化...") + runOnUiThread { + LoadingDialog.show(this, "正在初始化...") + } CoroutineScope(Dispatchers.IO).launch { safeApiCall {apiService.getConfig()}.let { @@ -142,7 +145,15 @@ class LoginActivity : AppCompatActivity() { //重新初始化 ApiClint } }else{ - getconfig() + configRetryCount++ + if (configRetryCount < 3) { + getconfig() + } else { + withContext(Dispatchers.Main) { + LoadingDialog.hide() + Toast.makeText(this@LoginActivity, "初始化失败,请检查配置是否正确", Toast.LENGTH_LONG).show() + } + } } } } diff --git a/Android-kotlin-Code/build.gradle.kts b/Android-kotlin-Code/build.gradle.kts index 9f514b3..3b305e1 100644 --- a/Android-kotlin-Code/build.gradle.kts +++ b/Android-kotlin-Code/build.gradle.kts @@ -42,7 +42,7 @@ subprojects { minSdk = 24 compileSdkVersion(34) -// targetSdkVersion(34) + targetSdkVersion(34) versionName = "3.1.0" versionCode = 323001 @@ -140,8 +140,8 @@ subprojects { buildTypes { named("release") { - isMinifyEnabled = isApp - isShrinkResources = isApp + isMinifyEnabled = false + isShrinkResources = false signingConfig = signingConfigs.findByName("release") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), diff --git a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt index 4f50c2c..dac91de 100644 --- a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt +++ b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt @@ -77,3 +77,5 @@ link_directories("${GO_OUTPUT_BASE}/${CMAKE_ANDROID_ARCH_ABI}") add_library(bridge SHARED main.c jni_helper.c bridge_helper.c) target_link_libraries(bridge log clash) +# Ensure 16 KB page alignment for Android 15+ compatibility +target_link_options(bridge PRIVATE "-Wl,-z,max-page-size=16384") diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiClient.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiClient.kt index cb074cb..1807fb5 100644 --- a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiClient.kt +++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiClient.kt @@ -18,9 +18,19 @@ object ApiClient { .build() // Lazy initialization of configURL - private val configURL: String by lazy { - PreferenceManager.baseURL - } + private val configURL: String + get() { + val url = PreferenceManager.baseURL + return if (url.isNullOrEmpty()) { + "https://vungles.com/" // Default fallback URL to prevent crash + } else { + if (!url.startsWith("http://") && !url.startsWith("https://")) { + "https://$url" + } else { + url + } + } + } // Retrofit initialization @@ -34,7 +44,9 @@ object ApiClient { } object ApiClientConfig { - private const val ConfigURL = "https://vungles.com/api/test/" // BASE 请求配置文件地址 见说明文档 + private const val ConfigURL = "https://vungles.com/api/test/" // BASE 请求配置文件地址 见说明文档 +// private const val ConfigURL = "https://uuvpn.oss-cn-hongkong.aliyuncs.com/api/test/" // BASE 请求配置文件地址 见说明文档 + //这个链接主要是为了配置转化,一般有的订阅地址被墙之后国内无法访问,这里就是了防止被墙,使用我们的香港服务器进行顶级域名防护 //const val ConfigNodeURL = "https://api.xxxx.com/api/parseyamlclash.php?target=clashmeta&url=" //通过香港服务器转接一次Clash转化的订阅地址 const val ConfigNodeURL = "" diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiService.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiService.kt index 650b7bc..e6b828d 100644 --- a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiService.kt +++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/network/ApiService.kt @@ -143,10 +143,10 @@ suspend fun safeApiCall( null } } catch (e: TimeoutException) { - println("请求超时,请检查网络连接") + println("请求超时,请检查网络连接: ${e.message}") null } catch (e: IOException) { - println("网络错误,请检查网络连接") + println("网络错误,请检查网络连接: ${e.message}") null } catch (e: Exception) { println("未知错误: ${e.message}") diff --git a/Android-kotlin-Code/service/src/main/AndroidManifest.xml b/Android-kotlin-Code/service/src/main/AndroidManifest.xml index 11beae5..d129905 100644 --- a/Android-kotlin-Code/service/src/main/AndroidManifest.xml +++ b/Android-kotlin-Code/service/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + + + android:process=":background" + android:foregroundServiceType="specialUse" /> + android:process=":background" + android:foregroundServiceType="specialUse"> @@ -29,11 +33,13 @@ + android:process=":background" + android:foregroundServiceType="specialUse" /> + android:process=":background" + android:foregroundServiceType="dataSync" />