Там написано «Попытка загрузить lib», а затем приложение закрывается без какой-либо информации. - PullRequest
0 голосов
/ 06 апреля 2019

Я скачал программу для Android, которая использовала тензор потока для распознавания эмоций. Я закончил работу по настройке среды. И я обнаружил, что когда я использую распознавание приложения, журнал говорит, что "Trying to load lib /data/app-lib/com.example.alex.opencvdemo-1/libtensorflow_inference.so 0xa4f77c88", и тогда приложение будет закрыто. Я не знаю, как решить эту проблему

Вот мой код для loadLibrary

static {
        //load libtensorflow_inference.so
      //System.load("/app/com.example.alex.opencvdemo/libs/libtensorflow_interface.so");
        System.loadLibrary("tensorflow_inference");
        Log.e("tensorflow","libtensorflow_inference.so is successfully load");
    }

И вот мой build.gradle приложения:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.alex.opencvdemo"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
        multiDexEnabled true
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        debug {
            ndk { abiFilters "armeabi-v7a","x86"}
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets{
        main {
            jni.srcDirs = []
            //jni库的调用会到资源文件夹下libs里面找so文件
            jniLibs.srcDirs = ['libs']
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    implementation 'com.android.support:appcompat-v7:28.0.0-beta01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    compile project(':openCVLibrary342')
    implementation files('libs/libandroid_tensorflow_inference_java.jar')
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

1 Ответ

0 голосов
/ 08 апреля 2019

Возможные причины, как я столкнулся с этим ранее

  1. Лучше проверить, соответствует ли ваша нативная библиотека "Tensorflow_inference". Потому что в вашем build.gradle он показывает кое-что как родной_либ.
  2. убедитесь, что тензор flow_inference добавлен в Cmakelists.txt.

  3. если вы используете openCV, убедитесь, что вы нормально импортировали нативные библиотеки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...