我之前在这里问过基本上相同的问题(不同的 NDK),并认为我正确构建了 openssl,但是当我尝试将其链接到我的应用程序时,我发现我没有正确构建它。
如果我在这里桥接@AlexCohn 的答案,我会从脚本开始setenv_android.sh。
我修改脚本以设置THE_ARCH=arm64-v8a尝试针对 64 位 android 架构。
当我运行脚本时,它找不到一些东西:
ERROR: Failed to find Android cpp. Please edit this script.
ERROR: Failed to find Android gcc. Please edit this script.
ERROR: Failed to find Android g++. Please edit this script.
ERROR: AOSP_STL_INC is not valid. Please edit this script.
ERROR: AOSP_STL_LIB is not valid. Please edit this script.
ANDROID_NDK_ROOT: /Users/spartygw/android-ndk-r19/
AOSP_TOOLCHAIN_PATH: /Users/spartygw/android-ndk-r19//toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin
AOSP_ABI: arm64-v8a
AOSP_API: android-21
AOSP_SYSROOT: /Users/spartygw/android-ndk-r19//platforms/android-21/arch-arm64
AOSP_FLAGS: -funwind-tables -fexceptions -frtti
AOSP_STL_INC: …Run Code Online (Sandbox Code Playgroud)我想为 android 的 openssl 库创建包装模块,它将使用大多数主要功能来保证安全。
我知道有人说他们已经做到了并在 github 上发布了他们的工作,但出于安全原因我们无法使用它。
我将 openssl 库编译到 android 并添加到 CMakeList.txt,如下所述: https ://developer.android.com/studio/projects/configure-cmake#add-other-library
我所做的步骤: 1.我从这里下载: https: //www.openssl.org/source/ version 1.1.1c
2.编译成功:
export ANDROID_NDK_HOME=/home/user/Android/Sdk/ndk-bundle
PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
./Configure android-arm64
make
Run Code Online (Sandbox Code Playgroud)
4.这就是 CMakeList 的样子:
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_VERBOSE_MAKEFILE ON)
add_library(openssl-wrapper-lib
SHARED
openssl-c-wrapper.cpp)
#===v===v===v===v===v===v===openssl-include===v===v===v===v===v===v===
add_library(
crypto
SHARED
IMPORTED
)
set_target_properties(
crypto
PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_SOURCE_DIR}/openssl-1.1.1c/libcrypto.so
)
include_directories(openssl-1.1.1c/include)
#===^===^===^===^===^===^===openssl-include===^===^===^===^===^===^===
find_library(log-lib
log)
target_link_libraries( # Specifies the target library.
openssl-wrapper-lib
crypto
${log-lib})
Run Code Online (Sandbox Code Playgroud)
我构建时的错误是这样的:
Error while executing process /home/user/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /home/user/AndroidStudioProjects/EncryptionModule/app/.externalNativeBuild/cmake/debug/x86_64 --target openssl-wrapper-lib}
[1/1] Linking …Run Code Online (Sandbox Code Playgroud)