私はopencv android sdkを使用するプロジェクトを持っていますし、C++でいくつかの関数を実装することを決めるのはスピードアップのためです。Gradle実験用JNI OpenCvアーム64-v8aリンカエラー
私はgradle experimentalプラグイン0.4.0を使用していますが、arm64-v8aをビルドするとき、リンカーはjniLibsフォルダ内のライブラリを見つけることができないと教えてくれます..さまざまなバリエーションを試してみて、パスは正しいと思います
apply plugin: 'com.android.model.application' model{
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
/* sourceSets.main {
jniLibs.srcDir 'src/main/jniLibs' //set libs as .so's location instead of jni
jni.srcDirs = [] //disable automatic ndk-build call with auto-generated Android.mk file
}*/
defaultConfig.with {
applicationId = "com.sketchcamera.camera"
minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 23
versionCode = 105
versionName = "1.05"
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-android.txt'))
//proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//jniDebuggable = true
// signingConfig signingConfigs.release
}
debug {
//jniDebuggable = true
}
}
android.productFlavors {
create("AArch-64") {
ndk.with{
abiFilters.add("arm64-v8a")
File curDir = file('./')
curDir = file(curDir.absolutePath)
String libsDir = curDir.absolutePath + "/src/main/jniLibs/arm64-v8a/"
ldLibs.add(libsDir + "libopencv_core.a")
ldLibs.add(libsDir + "libopencv_highgui.a")
ldLibs.add(libsDir + "libopencv_imgproc.a")
ldLibs.add(libsDir + "libopencv_java3.so")
ldLibs.add(libsDir + "libopencv_ml.a")
}
}
create("arm") {
ndk.with{
abiFilters.add("armeabi")
File curDir = file('./')
curDir = file(curDir.absolutePath)
String libsDir = curDir.absolutePath + "/src/main/jniLibs/armeabi/"
ldLibs.add(libsDir + "libopencv_core.a")
ldLibs.add(libsDir + "libopencv_highgui.a")
ldLibs.add(libsDir + "libopencv_imgproc.a")
ldLibs.add(libsDir + "libopencv_java3.so")
ldLibs.add(libsDir + "libopencv_ml.a")
}
}
create("armv7") {
ndk.with {
abiFilters.add("armeabi-v7a")
File curDir = file('./')
curDir = file(curDir.absolutePath)
String libsDir = curDir.absolutePath + "/src/main/jniLibs/armeabi-v7a/"
ldLibs.add(libsDir + "libopencv_core.a")
ldLibs.add(libsDir + "libopencv_highgui.a")
ldLibs.add(libsDir + "libopencv_imgproc.a")
ldLibs.add(libsDir + "libopencv_java3.so")
ldLibs.add(libsDir + "libopencv_ml.a")
ldLibs.add(libsDir + "libopencv_ts.a")
}
}
}
android.ndk {
moduleName = "opencv_fast_processing"
cppFlags.add("-std=c++11")
cppFlags.add("-fexceptions")
cppFlags.add("-I${file("/home/onur/Masaüstü/Home/OpenCV-android-sdk/sdk/native/jni/include")}".toString())
ldLibs.addAll(["android", "EGL", "GLESv2", "dl", "log", "z"])
stl = "gnustl_shared"
}
// android.useLibrary = 'org.apache.http.legacy'
}私はARM7を使用するか、腕が、arm64-v8aのそれリンカーであればコンパイルした場合
すべては罰金です:これは私のapp.gradleある
(CDを使用することにより、端末上で確認)このエラーは
/home/onur/Android/android-ndk-r11c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9/../../../../aarch64-linux-android/bin/ld: cannot find -l/home/onur/AndroidStudioProjects/SketchCamera/app/src/main/jniLibs/arm64-v8a/libopencv_core.a
や他のファイルに同じエラー.. 私はberforeを言ったように、私はパスが正しいことを確信しているが、/家の前に-lが何であるかを知らない(あまり持っていません
私はこのJNIのことに慣れていて、おそらく何か愚かなことをしています。助けをありがとう
OpenCVのは、私はGradleのを私のためにndkBuildやCMakeの構成、Androidのメーカー2.2 – AndreyICE
arm64-v8aライブラリなしで来ます実験的0.9.0。受け入れられた回答としてマークする必要があります。 –