我正在android中制作一个jni函数来使用BoringSSL生成文件checkSum。
所以我将boringssl构建到共享库中,以便在Android Studio中使用Prebuilt Library。
我将 *.so 文件复制到我的项目 src/main/jniLibs/lib 和 BoringSSL 包含文件夹到 src/main/jni
我引用了这个项目并应用于我的项目。
https://github.com/googlesamples/android-ndk/tree/master/hello-libs
我的build.gradle文件是这样的。我正在使用 gradle-experimental:0.7.0( 和 Window10, Android Studio 2.1.2 )
apply plugin: 'com.android.model.application'
model {
repositories {
libs(PrebuiltLibraries) {
boringssl {
headers.srcDir "src/main/jni/include/openssl"
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("src/main/jniLibs/lib/libcrypto.so")
sharedLibraryFile = file("src/main/jniLibs/lib/libssl.so")
}
}
}
}
android {
compileSdkVersion = 24
buildToolsVersion = '24.0.1'
defaultConfig {
applicationId = 'yein.a'
minSdkVersion.apiLevel = 19
targetSdkVersion.apiLevel = 24
versionCode = 1
versionName = '1.0'
}
ndk {
moduleName = 'hello-libs'
ldLibs.addAll(['android', 'log'])
}
sources {
main {
jni {
dependencies {
library 'boringssl' linkage 'shared'
}
}
jniLibs{
source{
srcDir "src/main/jniLibs/lib"
}
}
}
}
productFlavors{
create("arm"){
ndk.abiFilters.add("armeabi-v7a")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file('proguard-android.txt'))
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.1.1'
}
这是我的项目结构。
我想我正确地应用了示例项目,因为它没有发生 gradle sync 错误。
当我使用 MD5 函数时,Android Studio 自动完成函数名称是这样的。
我在 google、github 中搜索了很多项目,当然还有 stackoverflow 以前的答案,但我仍然没有解决我的问题。
我尝试更改 gradle 版本,但其他 gradle 版本在自动生成的 jni 函数中发生错误,除了 gradle-experimental:0.7.0。
谁能指出我正确的方向甚至解决方案?
感谢您阅读我的问题。