Dream 7 ماه پیش
کامیت
8add03b27f
1فایلهای تغییر یافته به همراه116 افزوده شده و 0 حذف شده
  1. 116 0
      CMakeLists.txt

+ 116 - 0
CMakeLists.txt

@@ -0,0 +1,116 @@
+cmake_minimum_required(VERSION 3.28.1)
+
+# Android 设置
+set(CMAKE_SYSTEM_NAME Android)
+set(CMAKE_SYSTEM_VERSION 33)
+set(ANDROID_PLATFORM 33)
+set(ANDROID_ABI arm64-v8a)
+set(ANDROID_NDK "E:/working_directory/Environment/android-ndk-r29-beta2")
+set(CMAKE_TOOLCHAIN_FILE "${ANDROID_NDK}/build/cmake/android.toolchain.cmake")
+
+set(PYTHON_LIB_DIR "third_party/android-libs/lib")
+set(PYTHON_INCLUDE_DIR "third_party/android-libs/include/python3.11")
+if(CMAKE_BUILD_TYPE MATCHES Debug)
+    add_definitions(-DDEBUG_LOG)
+endif()
+
+find_library(PYTHON_LIBRARY NAMES python3.11 PATHS ${PYTHON_LIB_DIR})
+
+project(Android_verify LANGUAGES C CXX ASM)
+
+include(GNUInstallDirs)
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -ffunction-sections -fdata-sections")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -ffunction-sections -fdata-sections -std=c++20")
+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -g0")
+
+set(CMAKE_CXX_SCAN_FOR_MODULES ON)
+
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/build/${ANDROID_ABI})
+
+include_directories(
+        include/
+        third_party/glm/
+        third_party/dobby/
+        ${ANDROID_NDK}/sources/android/native_app_glue
+        ${PYTHON_INCLUDE_DIR}
+        include/AppManager
+        lib/curl/include
+        lib/openssl/include
+)
+
+add_subdirectory(third_party/glm)
+
+add_library(dobby STATIC IMPORTED)
+set_target_properties(dobby PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/third_party/dobby/libdobby.a)
+
+add_library(zlib STATIC IMPORTED)
+set_target_properties(zlib PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/zlib/lib/libz.a)
+
+add_library(ssl STATIC IMPORTED)
+set_target_properties(ssl PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/openssl/lib/libssl.a)
+
+add_library(crypto STATIC IMPORTED)
+set_target_properties(crypto PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/openssl/lib/libcrypto.a)
+
+add_library(curl STATIC IMPORTED)
+set_target_properties(curl PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/curl/lib/libcurl.a)
+
+set(asm_syscall
+        src/asm/syscall.s
+)
+
+set(AppManager
+        src/AppManager/Api.cpp
+        src/AppManager/Encryption.cpp
+        src/AppManager/Network.cpp
+        src/AppManager/Utils.cpp
+)
+
+add_library(Android_verify SHARED
+        ${asm_syscall}
+        ${AppManager}
+        src/native-lib.cpp
+        src/decrypt.cpp
+)
+
+target_link_libraries(Android_verify
+        PRIVATE
+        dobby
+        glm
+        ${PYTHON_LIBRARY}
+        m
+        dl
+        android
+        EGL
+        GLESv2
+        GLESv3
+        log
+        ssl
+        crypto
+        zlib
+        curl
+)
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -ffunction-sections -fdata-sections -std=c++20 -fno-rtti -fno-exceptions")
+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -g0")
+
+file(WRITE ${CMAKE_BINARY_DIR}/export.lds
+        "{\n  global:\n    initLib;\n raw_syscall;\n  local:\n    *;\n};\n")
+
+target_link_options(Android_verify PRIVATE -Wl,-Map=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Android_verify.map -Wl,--version-script=${CMAKE_BINARY_DIR}/export.lds)
+
+add_custom_command(TARGET Android_verify POST_BUILD
+        COMMAND ${ANDROID_NDK}/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-nm -g --defined-only $<TARGET_FILE:Android_verify> > ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/symbols.txt
+        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/symbols.txt ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/symbols_backup.txt
+        COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/symbols.txt
+        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Android_verify.map ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Angel_backup.map
+        COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Android_verify.map
+        COMMENT "Exporting and securing symbols"
+)
+
+add_custom_command(TARGET Android_verify POST_BUILD
+        COMMAND ${ANDROID_NDK}/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip --strip-unneeded $<TARGET_FILE:Android_verify>
+        COMMENT "Stripping unneeded symbols from Android_verify"
+)