JNI dossier dans Android Studio

Je suis en train de faire helloy-jni application dans Android Studio et j'ai exception

06-27 13:17:19.099  12714-12714/com.example.testjni2           E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.ExceptionInInitializerError
    at java.lang.Class.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1319)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
    at android.app.ActivityThread.access$700(ActivityThread.java:154)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5306)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load hello-jni from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.testjni2-1.apk,libraryPath=/data/app-lib/com.example.testjni2-1]: findLibrary returned null
    at java.lang.Runtime.loadLibrary(Runtime.java:365)
    at java.lang.System.loadLibrary(System.java:535)
    at com.example.testjni2.MainActivity.<clinit>(MainActivity.java:9)
    ... 15 more

Mon projet de structure ressemble à ceci

JNI dossier dans Android Studio

J'ai ajouté mon build.gradle ligne:

   compile files('libs/armeabi/libhello-jni.so')

Mais cela n'a pas aidé.
J'ai lu Gradle et Android plugin Gradle, mais je ne trouve pas d'informations sur le travail avec jni dossier

Je pense qu'il fichier de dépendances, mais il ne fonctionne pas

Mon bonjour-jni.c fichier includ

jstring  Java_com_example_testjni2_MainActivity_stringFromJNI (JNIEnv *env, jobject thiz){
    return (*env)->NewStringUTF(env, "Hello from JNI !");
  }

Mon MainActivity fichier include

public class MainActivity extends Activity {
    static {
        System.loadLibrary("hello-jni");
    }
    public native String  stringFromJNI();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String text = stringFromJNI();
        Log.i("MainActivity", text);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

Mon Android.mk fichier contient

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

Dites-moi, s'il vous plaît, où j'ai pu faire une erreur.

Android Studio 0.1.7
OS - Windows 7 x64

  • n'a été construite à l'aide de NDK outils
  • J'ai créé .donc, bibliothèque utilisée Terminal Cygwin et NDK commande /cygdrive/c/Utilisateurs/%NOM_UTILISATEUR%/android-ndk/android-ndk-r8e/ndk-build est-ce pas assez?
  • ses assez pour l'ajout de lib
  • Comment avez-vous le résoudre?
InformationsquelleAutor AndreyNik | 2013-06-27