Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用实验性gradle插件(NDK)在android studio中添加openssl库?_Android_C_Android Studio_Android Ndk_Gradle Experimental - Fatal编程技术网

如何使用实验性gradle插件(NDK)在android studio中添加openssl库?

如何使用实验性gradle插件(NDK)在android studio中添加openssl库?,android,c,android-studio,android-ndk,gradle-experimental,Android,C,Android Studio,Android Ndk,Gradle Experimental,我正在尝试使用实验性gradle插件将openSSL库添加到我在android studio 2.0 preview 7中的项目中 dependencies { classpath 'com.android.tools.build:gradle-experimental:0.4.0' } 我所做的是下载了openSSL库,并将其放入jni文件夹中。我还有另一个使用这个库的.c文件。我已经包含了我需要的文件,代码中没有错误。我的.c文件名是hello jni.c,我在build.grad

我正在尝试使用
实验性gradle插件将openSSL库添加到我在
android studio 2.0 preview 7
中的项目中

dependencies {
    classpath 'com.android.tools.build:gradle-experimental:0.4.0'
}
我所做的是下载了
openSSL库
,并将其放入
jni
文件夹中。我还有另一个使用这个库的.c文件。我已经包含了我需要的文件,代码中没有错误。我的
.c
文件名是
hello jni.c
,我在
build.gradle(module:app)
中声明了它,如下所示:

android.ndk {
    moduleName = "hello-jni"
}
static {
    System.loadLibrary("hello-jni");
}
Error:(51) undefined reference to `RSA_generate_key'
Error:error: ld returned 1 exit status
Error:Execution failed for task ':app:linkArm64-v8aDebugHello-    jniSharedLibrary'.
> A build operation failed.
  Linker failed while linking libhello-jni.so.
我还将我的库加载到main活动中,如下所示:

android.ndk {
    moduleName = "hello-jni"
}
static {
    System.loadLibrary("hello-jni");
}
Error:(51) undefined reference to `RSA_generate_key'
Error:error: ld returned 1 exit status
Error:Execution failed for task ':app:linkArm64-v8aDebugHello-    jniSharedLibrary'.
> A build operation failed.
  Linker failed while linking libhello-jni.so.
但当我尝试构建项目时,会出现如下错误:

android.ndk {
    moduleName = "hello-jni"
}
static {
    System.loadLibrary("hello-jni");
}
Error:(51) undefined reference to `RSA_generate_key'
Error:error: ld returned 1 exit status
Error:Execution failed for task ':app:linkArm64-v8aDebugHello-    jniSharedLibrary'.
> A build operation failed.
  Linker failed while linking libhello-jni.so.
My hello jni.c源代码:

#include <jni.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include "boringssl/crypto/openssl/base.h"
#include "boringssl/crypto/openssl/rsa.h"
#include "boringssl/crypto/openssl/pem.h"

#define KEY_LENGTH  2048
#define PUB_EXP     3
#define PRINT_KEYS
#define WRITE_TO_FILE 0

size_t pri_len;            // Length of private key
size_t pub_len;            // Length of public key
char   *pri_key;           // Private key
char   *pub_key;           // Public key
char   msg[KEY_LENGTH/8];  // Message to encrypt
char   *encrypt = NULL;    // Encrypted message
char   *decrypt = NULL;    // Decrypted message
char   *err;               // Buffer for any error messages

JNIEXPORT jstring JNICALL
Java_com_example_ndktest_SignUpActivity_testString(JNIEnv *env, jobject activity) {

// In this line, the error happens!(in build time)
RSA *keypair = RSA_generate_key(KEY_LENGTH, PUB_EXP, NULL, NULL);

//continue to work with key pair ...

return "some jstring";
}
#包括
#包括
#包括
#包括
#包括“boringssl/crypto/openssl/base.h”
#包括“boringssl/crypto/openssl/rsa.h”
#包括“boringssl/crypto/openssl/pem.h”
#定义键长度2048
#定义PUB_EXP 3
#定义打印密钥
#定义将\u写入\u文件0
大小优先;//私钥长度
大小不一公钥长度
char*pri_key;//私钥
char*pub_key;//公钥
char msg[键长度/8];//要加密的消息
char*encrypt=NULL;//加密信息
char*decrypt=NULL;//解密消息
字符*err;//任何错误消息的缓冲区
JNIEXPORT jstring JNICALL
Java_com_示例_ndktest_注册活动_测试字符串(JNIEnv*env,jobject活动){
//在这一行中,会发生错误!(在构建时)
RSA*keypair=RSA\u generate\u key(key\u LENGTH,PUB\u EXP,NULL,NULL);
//继续使用密钥对。。。
返回“somejstring”;
}

您需要将openssl库指定为依赖项。有一个片段显示了如何添加预构建库

您是否下载了所有OpenSSL库(包括.c文件)?或者只有标题(.h)和静态或动态库(.a、.so)?您成功了吗?