我有以下情况, 我正在移植一个使用OpenSSL进行AES加密的应用程序,我已经编译了一切,但链接程序失败。这种情况如下: 1.我写了一个JNI包装,简单地做:使用Android的NDK问题的openSSL
private native String cipherString(String plainData, int datasize, String password, int passSize);
private native String decipherString(String cipheredData, int datasize, String password, int passSize);
下一个我有一个C++文件,我称之为有适当的JNI sintax它转换的jstring为char *和所有其他必要转换,并调用另一个实际导入openssl头文件(存在并考虑)的cpp文件,并调用openssl方法进行加密和解密。
所以当我调用ndk-build时,它会构建所有的拇指,因此编译器会正确编译它们。 接下来我需要端口OpenSSL,以便Android和我用这个OpenSSL for Android 它的工作原理是用一个简单的NDK构建一个字符(在项目的根着,当然),并建立libssl.so和libcrypto.so
所以我需要连接这两个..我发现连接构建脚本是一个挑战,所以一个ndk-build编译和链接所有东西(如果有人有时间,我会感激一个简单的示例项目)
所以我复制了jni/includes/prebuilt中编译的libssl和libcrypto .so文件,并且希望将它们包含在链接器的项目中,以便能够最终创建我将在最后使用的lib。
我有以下Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include $(LOCAL_PATH)/includes/build/common.mk
include $(LOCAL_PATH)/includes/build/common_includes.mk
APP_STL := gnustl_static
LOCAL_MODULE := packer
LOCAL_SRC_FILES := modules/cipher/wrapper.cpp \
... #rest of the cpp code
LOCAL_C_INCLUDES += $(LOCAL_PATH)/includes/openssl
LOCAL_SHARED_LIBRARIES := $(LOCAL_PATH)/includes/precompiled/libssl.so \
$(LOCAL_PATH)/includes/precompiled/libcrypto.so
LOCAL_SHARED_MODULES := sslx cryptox
include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sslx
LOCAL_SRC_FILES := $(LOCAL_PATH)/includes/precompiled/libssh.so
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cryptox
LOCAL_SRC_FILES := $(LOCAL_PATH)/includes/precompiled/libssh.so
include $(PREBUILT_SHARED_LIBRARY)
,并呼吁NDK建造时,我得到一个dissapointing
sslx: LOCAL_SRC_FILES points to a missing file. Check that /home/user/Development/Tools/sdk/android/ndk/build/core//home/user/Development/Tools/sdk/android/ndk/build/core/includes/precompiled/libssh.so exists or that its path is correct. Aborting . Stop.
,你已经可以猜到的路径是完全错误的,什么混淆我是$ {LOCAL_PATH}返回第一批包含的正确路径和.so文件的完全错误的路径... 任何帮助将非常感激!
如果解决了,您可以将您的解决方案标记为答案...一切顺利 – 2012-04-24 10:02:37
将修复应用于__gsml后,我收到错误:Android NDK:您的APP_BUILD_SCRIPT指向未知文件:/Android.mk d :/Development/android/android-ndk-r8c/build/core/add-application.mk:165:*** Android NDK:正在中止......。停止。 在哪个平台上运行这个?视窗?是否有可能将libcrypto.so libssl.so上传到某处? – tmanthey 2013-01-18 12:16:16
你能向我们展示如何在Android.mk文件中链接所有这些吗? – 2014-07-10 10:50:01