2016-02-15 3 views
0

Я пытаюсь включить c file, ImageProc в свой java-файл, чтобы использовать его функции.Android System.loadLibrary crashing

Я получил код из MjpegInputStream file (где все должно работать, но, конечно, его никогда не так просто)

Вот код, который выходит из строя (как-то подвох не ловить его)

static { 
    try { 
     System.loadLibrary("ImageProc"); 
    } 
    catch (Exception e){ 
     e.getMessage(); 
    } 
} 

makefile является:

include $(CLEAR_VARS) 
LOCAL_MODULE := ImageProc 
LOCAL_SRC_FILES := ImageProc.c 
LOCAL_LDLIBS := -llog -ljnigraphics 
LOCAL_SHARED_LIBRARIES := prebuilt-libjpeg 
LOCAL_C_INCLUDES  := external/include jni/external/include 

Так моему пониманию, я просто должен быть в состоянии использовать ImageProc.

Я знаю, что он прошел и скомпилировал c file, потому что сначала он не мог найти ссылки на файл h (исправлено сейчас).

Еще одна вещь, о которой я не уверен, это то, что я вызываю функцию pixeltobmp, которая в файле c определяется как Java_com_camera_simplemjpeg_MjpegInputStream_pixeltobmp, которая поражает меня как нечетную. Я попытался изменить имя метода, чтобы включить пакет, который я использую, а не тот, с которого я его скопировал, но это ничего не исправить.

Любая помощь приветствуется.

Дополнительная информация: Я использую Gradle сборки 2,10

ответ

0

В build.gradle

apply plugin: 'com.android.application' 
    android { 
     compileSdkVersion 23 
     buildToolsVersion "23.0.2" 

     defaultConfig { 
      ... 
     } 
     buildTypes { 
      ... 
     } 
     ndk { 
      moduleName "ImageProc" 
      // stl "stlport_static" 
      // ldLibs "log" 
     } 
    } 

} 
+0

Это не работает с построением градиента, который я использую, 2.10. Я пробовал работать с другими, и это не исправить. –

1
1. Compile your library 
2. Check if you have the .so compiled library(this is important!) 
3. In your gradle file add this: 

     android { 
     compileSdkVersion 23 
      buildToolsVersion "22.0.1" 

      defaultConfig { 
       minSdkVersion 18 
        targetSdkVersion 23 
        versionCode 1 
        versionName "1.0" 
       } 

       sourceSets.main { 
        jni.srcDirs = [] 
        File configFile = file('pathToYourLibsFolder') 
        jniLibs.srcDir configFile.absolutePath 
       } 

Затем он должен работать.