add: added more Android build scripts

This commit is contained in:
QxQ 2020-08-30 20:54:29 +08:00
parent c12c1b5a19
commit 7cbe05a9d1
11 changed files with 96 additions and 113 deletions

1
.gitignore vendored
View File

@ -12,6 +12,7 @@ CMakeSettings.json
SourceTrail/
libs/gen/
libs/deps
libs/x64-windows/
libs/x86-windows/
libs/x86-android/

2
3rdparty/libuv vendored

@ -1 +1 @@
Subproject commit 1ab9ea3790378f9f25c4e78e9e2b511c75f9c9ed
Subproject commit e8b989ea1f7f9d4083511a2caec7791e9abd1871

View File

@ -37,36 +37,18 @@ endif()
set(QV2RAY_USE_QWIDGET ON CACHE BOOL "Use QWidget as Qv2ray GUI")
set(QV2RAY_USE_QML OFF CACHE BOOL "Use QML as Qv2ray GUI")
set(ANDROID_PACKAGE_SOURCE ${CMAKE_SOURCE_DIR}/assets/android)
set(QT_ANDROID_PACKAGE_SOURCE_DIR "\"android-package-source-directory\":\"${ANDROID_PACKAGE_SOURCE}\",")
if(ANDROID)
message("Configuring for Android, ABI: ${ANDROID_ABI}")
include(cmake/platforms/android.cmake)
endif()
find_package(Qt5 5.11 COMPONENTS Core Network REQUIRED)
set(QV2RAY_QT_LIBS Qt5::Core Qt5::Network)
if(QV2RAY_USE_QML)
message("QML Enabled.")
find_package(Qt5 5.11 COMPONENTS Qml Quick Widgets Svg QuickControls2 Gui REQUIRED)
list(APPEND QV2RAY_QT_LIBS Qt5::Quick Qt5::Qml Qt5::Widgets Qt5::Svg Qt5::QuickControls2 Qt5::Gui)
set(QV2RAY_HAS_GUI ON)
elseif(QV2RAY_USE_QWIDGET)
message("QWidgets Enabled.")
set(QV2RAY_QNODEEDITOR_PROVIDER "module" CACHE STRING "QNodeEditor Provider")
set(QV2RAY_HAS_BUILT_IN_THEMES ON CACHE BOOL "Build with built-in themes")
find_package(Qt5 5.11 COMPONENTS Widgets Svg Gui REQUIRED)
list(APPEND QV2RAY_QT_LIBS Qt5::Widgets Qt5::Svg Qt5::Gui)
set(QV2RAY_HAS_GUI ON)
else()
message("Experimental CLI Support enabled.")
endif()
find_package(Threads REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
cmake_policy(SET CMP0071 NEW)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.17.0")
@ -186,6 +168,29 @@ include(cmake/backend.cmake)
# ==================================================================================
# Qv2ray Baselib
# ==================================================================================
find_package(Qt5 5.11 COMPONENTS Core Network REQUIRED)
set(QV2RAY_QT_LIBS Qt5::Core Qt5::Network)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(QV2RAY_USE_QML)
message("QML Enabled.")
find_package(Qt5 5.11 COMPONENTS Qml Quick Widgets Svg QuickControls2 Gui REQUIRED)
list(APPEND QV2RAY_QT_LIBS Qt5::Quick Qt5::Qml Qt5::Widgets Qt5::Svg Qt5::QuickControls2 Qt5::Gui)
set(QV2RAY_HAS_GUI ON)
elseif(QV2RAY_USE_QWIDGET)
message("QWidgets Enabled.")
set(QV2RAY_QNODEEDITOR_PROVIDER "module" CACHE STRING "QNodeEditor Provider")
set(QV2RAY_HAS_BUILT_IN_THEMES ON CACHE BOOL "Build with built-in themes")
find_package(Qt5 5.11 COMPONENTS Widgets Svg Gui REQUIRED)
list(APPEND QV2RAY_QT_LIBS Qt5::Widgets Qt5::Svg Qt5::Gui)
set(QV2RAY_HAS_GUI ON)
else()
message("Experimental CLI Support enabled.")
endif()
set(QVPLUGIN_INTERFACE_INCLUDE_DIR "src/plugin-interface")
include(src/plugin-interface/QvPluginInterface.cmake)
@ -280,13 +285,6 @@ set(QV2RAY_FULL_SOURCES
if(ANDROID)
add_library(qv2ray SHARED ${QV2RAY_FULL_SOURCES})
target_link_libraries(qv2ray -llog -landroid)
include(cmake/android/AddQtAndroidApk.cmake)
list(APPEND ANDROID_EXTRA_LIBS "${CMAKE_SOURCE_DIR}/libs/x86-android/debug/lib/libprotobufd.so")
list(APPEND ANDROID_EXTRA_LIBS "${CMAKE_SOURCE_DIR}/libs/x86-android/debug/lib/libre2.so")
add_qt_android_apk(Qv2rayAPK ${PROJECT_NAME}
PACKAGE_SOURCES ${CMAKE_SOURCE_DIR}/assets/android
DEPENDS ${ANDROID_EXTRA_LIBS}
)
else()
include(cmake/backward-cpp.cmake)
add_definitions(-DQV2RAY_HAS_BACKWARD)
@ -422,7 +420,6 @@ if(QV2RAY_AUTO_DEPLOY AND APPLE)
endif()
if(ANDROID)
set(ANDROID_)
if(QV2RAY_AUTO_DEPLOY AND ANDROID)
message("Qv2ray Android auto deploy todo.")
endif()

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<manifest android:versionName="@APK_PACKAGE_VERSION@" package="@APK_PACKAGE_NAME@" android:installLocation="auto" xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="@APK_PACKAGE_VERSIONCODE@">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
<application android:label="@APK_PACKAGE_VERSION@" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:icon="@drawable/icon">
<application android:label="@APK_DISPLAY_NAME@" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:icon="@drawable/icon">
<activity android:label="@APK_DISPLAY_NAME@" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:screenOrientation="unspecified" android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation">
<intent-filter>
@ -60,7 +60,7 @@
* minimal - useful for Quick Controls 2 apps, it is much faster than "full"
* none - useful for apps that don't use any of the above Qt modules
-->
<meta-data android:name="android.app.extract_android_style" android:value="default"/>
<meta-data android:name="android.app.extract_android_style" android:value="minimal"/>
<!-- extract android style -->
</activity>

@ -1 +0,0 @@
Subproject commit 5a62962dbe35e955374688461784ddb7f757a377

View File

@ -1,8 +1,7 @@
if(ANDROID)
set(CURL_LIBRARIES -lcurl)
set(CURL_LIBRARIES -lcurl -lssl -lcrypto -lz)
endif()
if(WIN32)
if(WIN32 OR ANDROID)
find_package(CURL CONFIG REQUIRED)
else()
find_package(CURL REQUIRED)

View File

@ -1,23 +1,33 @@
include(${ANDROID_SDK}/android_openssl/CMakeLists.txt)
set(QV2RAY_USE_QML ON)
set(ANDROID_LIB_ARCH ${ANDROID_ABI})
if(${ANDROID_ABI} STREQUAL "x86_64")
if(NOT ANDROID_SDK)
set(ANDROID_SDK $ENV{ANDROID_SDK_ROOT})
endif()
include(${ANDROID_SDK}/android_openssl/CMakeLists.txt)
set(ANDROID_LIB_ARCH ${CMAKE_ANDROID_ARCH})
if(${ANDROID_LIB_ARCH} STREQUAL "x86_64")
set(ANDROID_LIB_ARCH "x64")
endif()
message("Android SDK: ${ANDROID_SDK}, ${CMAKE_ANDROID_ARCH}")
list(APPEND CMAKE_PROGRAM_PATH
${CMAKE_SOURCE_DIR}/libs/tools/grpc
${CMAKE_SOURCE_DIR}/libs/tools/protobuf
${CMAKE_SOURCE_DIR}/libs/tools/openssl
)
set(QV2RAY_ANDROID_ROOT ${CMAKE_SOURCE_DIR}/libs/${ANDROID_LIB_ARCH}-android)
if(CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]$" OR NOT DEFINED CMAKE_BUILD_TYPE) #Debug build: Put Debug paths before Release paths.
# list(APPEND CMAKE_PREFIX_PATH
# ${QV2RAY_ANDROID_ROOT}/debug
# ${QV2RAY_ANDROID_ROOT}
# )
message("ASS: ${QV2RAY_ANDROID_ROOT}")
if(CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]$" OR NOT DEFINED CMAKE_BUILD_TYPE) #Debug build: Put Debug paths before Release paths.
set(QV2RAY_ANDROID_DEBUG_LIB ON)
list(APPEND CMAKE_PREFIX_PATH
${QV2RAY_ANDROID_ROOT}/debug
${QV2RAY_ANDROID_ROOT}
)
link_directories(
${QV2RAY_ANDROID_ROOT}/debug/lib
${QV2RAY_ANDROID_ROOT}/lib
@ -27,11 +37,11 @@ if(CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]$" OR NOT DEFINED CMAKE_BUILD_
${QV2RAY_ANDROID_ROOT}
)
else() #Release build: Put Release paths before Debug paths. Debug Paths are required so that CMake generates correct info in autogenerated target files.
# list(APPEND CMAKE_PREFIX_PATH
# ${QV2RAY_ANDROID_ROOT}
# ${QV2RAY_ANDROID_ROOT}/debug
# )
set(QV2RAY_ANDROID_DEBUG_LIB OFF)
list(APPEND CMAKE_PREFIX_PATH
${QV2RAY_ANDROID_ROOT}
${QV2RAY_ANDROID_ROOT}/debug
)
link_directories(
${QV2RAY_ANDROID_ROOT}/lib
${QV2RAY_ANDROID_ROOT}/debug/lib

24
libs/setup-android-libs.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/fish
mkdir -p deps; cd ./deps
mkdir -p downloaded; cd ./downloaded;
set KEYWORD android
for data in (curl -s https://api.github.com/repos/Qv2ray/Qv2ray-deps/releases/latest | jq ".assets[] | {browser_download_url, name}" -c | grep $KEYWORD)
set NAME (echo $data | jq ".name" -r)
echo "Downloading: $NAME"
curl -sL (echo $data | jq ".browser_download_url" -r) -o $NAME;
end
cd ..
for f in (ls)
7z x -y ./$f
end
mkdir final
for p in arm arm64 x64 x86
cp -rv ./$KEYWORD-$p/installed/* ./final
end
rm -rvf ./final/vcpkg
cd ..
cp -rvf ./deps/final/* ./

17
libs/setup-android-tools.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/fish
mkdir -p deps; cd ./deps
mkdir -p downloaded; cd ./downloaded;
set KEYWORD tools
for data in (curl -s https://api.github.com/repos/Qv2ray/Qv2ray-deps/releases/latest | jq ".assets[] | {browser_download_url, name}" -c | grep $KEYWORD)
set NAME (echo $data | jq ".name" -r)
echo "Downloading: $NAME"
curl -sL (echo $data | jq ".browser_download_url" -r) -o $NAME;
end
cd ..
for f in (ls ./downloaded | grep $KEYWORD)
7z x -y ./downloaded/$f
end
cp -rvf ./tools ../

View File

@ -1,32 +0,0 @@
Qv2ray Dependencies Directory for Windows x64
THIS IS A PLACEHOLDER WHICH ALLOWS GIT TO INCLUDE THIS DIRECTORY
If you want to build Qv2ray on Windows, please download the gRPC and
protobuf headers and libraries according to your CPU architecture:
- Go to https://github.com/Qv2ray/Qv2ray-deps/releases
- Download "Qv2ray-deps-x64-windows.7z"
Then extract the 7z zipball here.
Make sure these file exists:
- Qv2raySourceRoot/libs/x64-windows/tools/grpc/grpc_cpp_plugin.exe
- Qv2raySourceRoot/libs/x64-windows/tools/protobuf/protoc.exe
# ======================================================================
64 位 Windows 的 Qv2ray 依赖文件夹
这个文件的存在使得 git 可以添加此文件夹
如果你想在 Windows 下编译 Qv2ray 请遵循这些步骤下载 gRPC 和 protobuf 头文件
和库文件:
- 访问 https://github.com/Qv2ray/Qv2ray-deps/releases
- 下载 "Qv2ray-deps-x64-windows.7z"
然后将这个 7z 压缩包解压到这里
请确保这些文件存在:
- Qv2ray源码根目录/libs/x64-windows/tools/grpc/grpc_cpp_plugin.exe
- Qv2ray源码根目录/libs/x64-windows/tools/protobuf/protoc.exe

View File

@ -1,32 +0,0 @@
Qv2ray Dependencies Directory for Windows x86
THIS IS A PLACEHOLDER WHICH ALLOWS GIT TO INCLUDE THIS DIRECTORY
If you want to build Qv2ray on Windows, please download the gRPC and
protobuf headers and libraries according to your CPU architecture:
- Go to https://github.com/Qv2ray/Qv2ray-deps/releases
- Download "Qv2ray-deps-x86-windows.7z"
Then extract the 7z zipball here.
Make sure these file exists:
- Qv2raySourceRoot/libs/x86-windows/tools/grpc/grpc_cpp_plugin.exe
- Qv2raySourceRoot/libs/x86-windows/tools/protobuf/protoc.exe
# ======================================================================
32 位 Windows 的 Qv2ray 依赖文件夹
这个文件的存在使得 git 可以添加此文件夹
如果你想在 Windows 下编译 Qv2ray 请遵循这些步骤下载 gRPC 和 protobuf 头文件
和库文件:
- 访问 https://github.com/Qv2ray/Qv2ray-deps/releases
- 下载 "Qv2ray-deps-x86-windows.7z"
然后将这个 7z 压缩包解压到这里
请确保这些文件存在:
- Qv2ray源码根目录/libs/x86-windows/tools/grpc/grpc_cpp_plugin.exe
- Qv2ray源码根目录/libs/x86-windows/tools/protobuf/protoc.exe