相关疑难解决方法(0)

如何使用 NDK 19 在 OSX Darwin 上交叉编译适用于 64 位 Android 的 OpenSSL

我之前在这里问过基本上相同的问题(不同的 NDK),并认为我正确构建了 openssl,但是当我尝试将其链接到我的应用程序时,我发现我没有正确构建它。

  1. 如果我在这里桥接@AlexCohn 的答案,我会从脚本开始setenv_android.sh

  2. 我修改脚本以设置THE_ARCH=arm64-v8a尝试针对 64 位 android 架构。

  3. 当我运行脚本时,它找不到一些东西:

    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 android-ndk

6
推荐指数
1
解决办法
5381
查看次数

在本机 Android 项目中包含 openssl 库

我想为 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)
  1. 我将整个文件夹放在这里:
    Project/app/src/main/cpp/openssl-1.1.1c

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)

openssl android-ndk

3
推荐指数
1
解决办法
3187
查看次数

标签 统计

android-ndk ×2

openssl ×2

android ×1