From 21409439f7496a1cad63c807c3648c96b0963db8 Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 01:11:05 -0800 Subject: [PATCH 1/9] Update build.gradle.kts design: 'annotationProcessor' dependencies won't be recognized as kapt annotation processors. Changed the configuration name to 'kapt' for these artifacts: 'com.github.bumptech.glide:compiler:4.15.1'. --- Android-kotlin-Code/design/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Android-kotlin-Code/design/build.gradle.kts b/Android-kotlin-Code/design/build.gradle.kts index e1eff00..fc4d87a 100644 --- a/Android-kotlin-Code/design/build.gradle.kts +++ b/Android-kotlin-Code/design/build.gradle.kts @@ -32,6 +32,6 @@ dependencies { implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("com.github.bumptech.glide:glide:4.16.0") - annotationProcessor("com.github.bumptech.glide:compiler:4.15.1") + kapt("com.github.bumptech.glide:compiler:4.15.1") } From 6e43e19b1b54164d7d8720045df038e71336310a Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 01:16:52 -0800 Subject: [PATCH 2/9] Update settings.gradle.kts Duplicate entry for alias 'androidx.appcompat': dependency {group='androidx.appcompat', name='appcompat', version='1.6.1'} is replaced with dependency {group='androidx.appcompat', name='appcompat-resources', version='1.6.1'} Then commented this line. --- Android-kotlin-Code/settings.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Android-kotlin-Code/settings.gradle.kts b/Android-kotlin-Code/settings.gradle.kts index dadaee1..99cb953 100644 --- a/Android-kotlin-Code/settings.gradle.kts +++ b/Android-kotlin-Code/settings.gradle.kts @@ -51,7 +51,7 @@ dependencyResolutionManagement { library("androidx-activity", "androidx.activity:activity:$activity") library("androidx-fragment", "androidx.fragment:fragment:$fragment") library("androidx-appcompat", "androidx.appcompat:appcompat:$appcompat") - library("androidx-appcompat", "androidx.appcompat:appcompat-resources:$appcompatres") + // library("androidx-appcompat", "androidx.appcompat:appcompat-resources:$appcompatres") library("androidx-coordinator", "androidx.coordinatorlayout:coordinatorlayout:$coordinator") library("androidx-recyclerview", "androidx.recyclerview:recyclerview:$recyclerview") library("androidx-viewpager", "androidx.viewpager2:viewpager2:$viewpager") @@ -64,4 +64,4 @@ dependencyResolutionManagement { library("rikkax-multiprocess", "dev.rikka.rikkax.preference:multiprocess:$multiprocess") } } -} \ No newline at end of file +} From e40e4aff3092970cf4436f8cc9c6371b3427b636 Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 02:29:40 -0800 Subject: [PATCH 3/9] Update CMakeLists.txt Solve the problem that the build is interrupted when the local development directory is not a git repository, and other reasons cause the environment exception and cannot obtain git related information. --- .../core/src/main/cpp/CMakeLists.txt | 66 +++++++++++-------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt index ff188eb..cbf86e4 100644 --- a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt +++ b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt @@ -1,48 +1,58 @@ cmake_minimum_required(VERSION 3.0) # 获取git hash - message(STATUS "CMAKE_CURRENT_SOURCE_DIR= ${CMAKE_CURRENT_SOURCE_DIR}") execute_process( COMMAND git submodule foreach git log -1 --format=%H WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE COMMIT_HASH ) -string(REPLACE "\n" ";" COMMIT_HASH "${COMMIT_HASH}") -list(GET COMMIT_HASH 1 COMMIT_HASH) -string (REGEX REPLACE "[\n\t\r]" "" COMMIT_HASH ${COMMIT_HASH}) -string(SUBSTRING ${COMMIT_HASH} 0 7 COMMIT_HASH) -message(STATUS "git hash= ${COMMIT_HASH}") -# 获取分支名称 -execute_process( - COMMAND git submodule foreach git branch -r --contains ${COMMIT_HASH} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE CURRENT_BRANCH -) -string(REPLACE "\n" ";" CURRENT_BRANCH "${CURRENT_BRANCH}") -list(GET CURRENT_BRANCH 1 CURRENT_BRANCH) -string (REGEX REPLACE "origin/" "" CURRENT_BRANCH ${CURRENT_BRANCH} "") -string (REGEX REPLACE "[\n\t\r]" "" CURRENT_BRANCH ${CURRENT_BRANCH} "") -#string(SUBSTRING ${CURRENT_BRANCH} 0 8 CURRENT_BRANCH) -message(STATUS "git current branch = ${CURRENT_BRANCH}") +# 判断是否获取到了git hash值(规避如因项目目录非git repository等原因产生的获取异常而中断build) +string(LENGTH ${COMMIT_HASH} OUTPUT_VARIABLE COMMIT_HASH_LENGTH) +string(COMPARE LESS ${COMMIT_HASH_LENGTH} "40" OUTPUT_VARIABLE GIT_HASH_COMPARISON_RESULT) +if(NOT ${GIT_HASH_COMPARISON_RESULT}) + string(REPLACE "\n" ";" COMMIT_HASH "${COMMIT_HASH}") + list(GET COMMIT_HASH 1 COMMIT_HASH) + string (REGEX REPLACE "[\n\t\r]" "" COMMIT_HASH ${COMMIT_HASH}) + #string(SUBSTRING ${COMMIT_HASH} 0 7 COMMIT_HASH) + message(STATUS "git hash= ${COMMIT_HASH}") -# 获取生成时间 -string(TIMESTAMP COMPILE_TIME "%y%m%d") -string (REGEX REPLACE "[\n\t\r]" "" COMPILE_TIME ${COMPILE_TIME}) -string(REGEX REPLACE "\"" "" COMPILE_TIME ${COMPILE_TIME}) + # 获取git分支名称 + execute_process( + COMMAND git submodule foreach git branch -r --contains ${COMMIT_HASH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE CURRENT_BRANCH + ) -# 生成版本信息 -set(GIT_VERSION "${CURRENT_BRANCH}_${COMMIT_HASH}_${COMPILE_TIME}") -message(STATUS "version info = ${GIT_VERSION}") + string(REPLACE "\n" ";" CURRENT_BRANCH "${CURRENT_BRANCH}") + list(GET CURRENT_BRANCH 1 CURRENT_BRANCH) + string (REGEX REPLACE "origin/" "" CURRENT_BRANCH ${CURRENT_BRANCH} "") + string (REGEX REPLACE "[\n\t\r]" "" CURRENT_BRANCH ${CURRENT_BRANCH} "") + string(SUBSTRING ${CURRENT_BRANCH} 0 8 CURRENT_BRANCH) + message(STATUS "git current branch = ${CURRENT_BRANCH}") -# 去除空格 -string(REGEX REPLACE "[ ]+" "" GIT_VERSION "${GIT_VERSION}") + # 获取生成时间 + string(TIMESTAMP COMPILE_TIME "%y%m%d") + string (REGEX REPLACE "[\n\t\r]" "" COMPILE_TIME ${COMPILE_TIME}) + string(REGEX REPLACE "\"" "" COMPILE_TIME ${COMPILE_TIME}) + + # 生成版本信息 + set(GIT_VERSION "${CURRENT_BRANCH}_${COMMIT_HASH}_${COMPILE_TIME}") + message(STATUS "version info = ${GIT_VERSION}") + + # 去除空格 + string(REGEX REPLACE "[ ]+" "" GIT_VERSION "${GIT_VERSION}") +else() + message(AUTHOR_WARNING "Unable to get git hash, but build will continue.") + +endif() # 保存变量到文件 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h @ONLY) -project(clash-bridge C) +#设置项目名称与语言类别(必) +project(MY_UUVPN C) set(CMAKE_POSITION_INDEPENDENT_CODE on) From 210b049e8637e597cd304b9bfc16c82e0242645b Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 02:59:53 -0800 Subject: [PATCH 4/9] Update settings.gradle.kts Correct mistake: Commented line 53 not line 54. --- Android-kotlin-Code/settings.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Android-kotlin-Code/settings.gradle.kts b/Android-kotlin-Code/settings.gradle.kts index 99cb953..7c8d96c 100644 --- a/Android-kotlin-Code/settings.gradle.kts +++ b/Android-kotlin-Code/settings.gradle.kts @@ -50,8 +50,8 @@ dependencyResolutionManagement { library("androidx-core", "androidx.core:core-ktx:$coreKtx") library("androidx-activity", "androidx.activity:activity:$activity") library("androidx-fragment", "androidx.fragment:fragment:$fragment") - library("androidx-appcompat", "androidx.appcompat:appcompat:$appcompat") - // library("androidx-appcompat", "androidx.appcompat:appcompat-resources:$appcompatres") + // library("androidx-appcompat", "androidx.appcompat:appcompat:$appcompat") + library("androidx-appcompat", "androidx.appcompat:appcompat-resources:$appcompatres") library("androidx-coordinator", "androidx.coordinatorlayout:coordinatorlayout:$coordinator") library("androidx-recyclerview", "androidx.recyclerview:recyclerview:$recyclerview") library("androidx-viewpager", "androidx.viewpager2:viewpager2:$viewpager") From 49d24529eef9531dbd26ae120ec3e15ae0904803 Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 03:13:43 -0800 Subject: [PATCH 5/9] Update settings.gradle.kts --- Android-kotlin-Code/settings.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Android-kotlin-Code/settings.gradle.kts b/Android-kotlin-Code/settings.gradle.kts index 7c8d96c..9af2f25 100644 --- a/Android-kotlin-Code/settings.gradle.kts +++ b/Android-kotlin-Code/settings.gradle.kts @@ -50,8 +50,8 @@ dependencyResolutionManagement { library("androidx-core", "androidx.core:core-ktx:$coreKtx") library("androidx-activity", "androidx.activity:activity:$activity") library("androidx-fragment", "androidx.fragment:fragment:$fragment") - // library("androidx-appcompat", "androidx.appcompat:appcompat:$appcompat") - library("androidx-appcompat", "androidx.appcompat:appcompat-resources:$appcompatres") + library("androidx-appcompat", "androidx.appcompat:appcompat:$appcompat") + library("androidx-appcompat-resources", "androidx.appcompat:appcompat-resources:$appcompatres") library("androidx-coordinator", "androidx.coordinatorlayout:coordinatorlayout:$coordinator") library("androidx-recyclerview", "androidx.recyclerview:recyclerview:$recyclerview") library("androidx-viewpager", "androidx.viewpager2:viewpager2:$viewpager") From 039239c2c298d79c241ab44bf15c479ae950faa7 Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 03:47:34 -0800 Subject: [PATCH 6/9] Update CMakeLists.txt --- Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt index cbf86e4..4f50c2c 100644 --- a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt +++ b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt @@ -52,7 +52,7 @@ endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h @ONLY) #设置项目名称与语言类别(必) -project(MY_UUVPN C) +project(clash-bridge C) set(CMAKE_POSITION_INDEPENDENT_CODE on) From 1f1c1e84e684552fd999ad16ce251f8dfa9e9d9c Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 09:23:59 -0800 Subject: [PATCH 7/9] Update local.properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 升级cmake 3.18至3.31.6解决cmake complier identification bypass警告. --- Android-kotlin-Code/local.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Android-kotlin-Code/local.properties b/Android-kotlin-Code/local.properties index 07494f3..20a2110 100644 --- a/Android-kotlin-Code/local.properties +++ b/Android-kotlin-Code/local.properties @@ -6,3 +6,6 @@ # header note. #Wed Dec 11 11:56:02 CST 2024 sdk.dir=/Volumes/TOSHIBA/androidstudio/sdk + +# 设置cmake(使用android studio SDK manager安装)路径至版本 +cmake.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\cmake\\3.31.6 From 4cba8c30679b7c6d41d21d88d3f3211a459a8c95 Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Sat, 8 Mar 2025 09:25:48 -0800 Subject: [PATCH 8/9] Update build.gradle.kts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设置cmake版本 version = "3.31.6" 修复cmake complier identification bypass 警告. --- Android-kotlin-Code/core/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Android-kotlin-Code/core/build.gradle.kts b/Android-kotlin-Code/core/build.gradle.kts index 465edb5..bf6626f 100644 --- a/Android-kotlin-Code/core/build.gradle.kts +++ b/Android-kotlin-Code/core/build.gradle.kts @@ -45,6 +45,8 @@ android { externalNativeBuild { cmake { + // 设置cmake版本 + version = "3.31.6" path = file("src/main/cpp/CMakeLists.txt") } } @@ -62,4 +64,4 @@ afterEvaluate { tasks.withType(GolangBuildTask::class.java).forEach { it.inputs.dir(golangSource) } -} \ No newline at end of file +} From 94d5935962e720155c963693985e3fdbd0cbcc41 Mon Sep 17 00:00:00 2001 From: Stevenchou1898 Date: Mon, 10 Mar 2025 16:50:04 +0930 Subject: [PATCH 9/9] Update README.md --- README.md | 190 ------------------------------------------------------ 1 file changed, 190 deletions(-) diff --git a/README.md b/README.md index 1ade0a1..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,190 +0,0 @@ -## UUVPN - Redesigned for Performance, Stability, and [V2Board](https://github.com/cedar2025/Xboard) Compatibility - -The original UUVPN was built using Flutter, which led to increasing challenges in maintaining the codebase due to performance issues, subpar UI quality, and a lack of stability. To address these concerns, UUVPN has been completely redeveloped for native performance on iOS/macOS and Android, utilizing the powerful SINGBOX and CLASH cores. - - -![](screenshots/android/combined_image11-19_12-04-1.jpeg) - - -### The new version features: - -- A sleek, more responsive user interface -- Enhanced app stability -- Significant performance optimizations -- Additionally, UUVPN now supports server backend protocols with full compatibility for V2Board, providing a more seamless and flexible user experience for VPN management. - -### Key Features: -- Native Performance: Utilizing SINGBOX for iOS/macOS and CLASH for Android, UUVPN is optimized for stability and speed. -- V2Board Compatibility: Fully supports V2Board protocols, offering smooth integration for backend management. -- Refined UI: A completely redesigned interface with a modern look and feel, providing a user-friendly experience. - - -### Download iOS and android -- [iOS TestFlight (Beta)](https://t.me/dcgzeus) -- [Android Apk](https://github.com/nicolastinkl/UUVPN/releases) - -## iOS Screenshots and Demo Video: - -### SKIN 1: - - - - - - - - -
- - - -### SKIN 2: - - - - - - - - - - - -
- -### LOGIC VIEWS: - - - - - - - - - - - - - - - - - - - - -
- - - -## Vidos: - - - - - - - -
- - -## [iOS Youtu视频预览地址](https://www.youtube.com/shorts/tnr38-IM-Xo) - - -# Android App Project - - -## [Android Youtu视频预览地址](https://youtube.com/shorts/zI1hrpFJbtg?feature=share) - - -![](screenshots/combined_image12-31_10-39.jpeg) -## Prerequisites - -Before you begin, ensure you have met the following requirements: - -- **Operating System**: Any system that supports Android development (Windows, macOS, Linux). -- **Java Development Kit (JDK)**: JDK 11 or higher. -- **Android Studio**: The official IDE for Android development, version 4.1 or higher. -- **Android SDK**: The latest version of the Android SDK tools. -- **Go**: go version go1.23.2 darwin/amd64 - -# Legacy Version (Original Flutter-based UUVPN) -The following section contains information about the original Flutter-based UUVPN for historical reference. If you need the source code, you can check out the **flutter** branch - -
Click to view the legacy version details -# Old Description: - -![](screenshots/Snipaste_2023-06-25_11-38-47.png) - -# UUVPN -基于Flutter开发的VPN客户端(ios/android),自主设计,精美UI,优化VPN速度,完全开源。 - -A VPN application for [V2Board](https://github.com/v2board/v2board) - -Support iOS and Android now. - - - -**IF THIS PROJECT HELPS YOU, PLEASE GIVE ME A LITTLE STAR⭐️.** - -## Screenshots -![](screenshots/page_7.png) - -## App Store -![](screenshots/Snipaste_2023-06-10_14-21-20.png) - - -## Environment - -- Flutter Flutter 3.10.1 • channel stable • https://github.com/flutter/flutter.git - Framework • revision d3d8effc68 (6 weeks ago) • 2023-05-16 17:59:05 -0700 - Engine • revision b4fb11214d - Tools • Dart 3.0.1 • DevTools 2.23.1 - - Download this version url: https://drive.google.com/file/d/1ksM4_PK9Ibk7ycyrfF7XffM_99_4JYV3/view?usp=sharing - - leaf sdk downlaod url: https://github.com/eycorsican/leaf/releases/tag/v0.10.7 - -- macOS 13.3.1 + -- Xcode 14 + -- iOS 15.0 + - -## Installation - -```shell -flutter pub get -``` - -## Develop -```shell -flutter run -``` - -## Build -build android apk -```shell -flutter build apk -``` - -build ios -```shell -flutter build ios -``` - ----------------------- - -# How to use it? -![](screenshots/ios.png) -![](screenshots/Snipaste_2024-07-24_14-25-11.png) -![](screenshots/Snipaste_2024-07-24_14-58-41.png) - -- 1: Change Domain File Path : ~UUVPN/flutter/lib/constant/app_urls.dart - ``` - static const String baseUrl = "https://xxxx.com"; - ``` - -- 2: Xcode Settings: -![](screenshots/Snipaste_2023-12-05_09-48-45.png) -![](screenshots/Snipaste_2023-12-05_09-49-14.png) -![](screenshots/Snipaste_2023-12-05_09-49-23.png) - -- 3: running screenshot: -![](screenshots/Snipaste_2023-12-05_15-43-54.png)