2015-12-15 17 views
5

Sto cercando di implementare hello-jni sample nel mio progetto. Ho Gradle 2.8 e 'com.android.tools.build:gradle-experimental:0.4.0' e usando Android Studio 2.0 Preview 3b.Esempio Hello-jni non funziona in Android Studio 2.0 Anteprima

Questo è il mio build.gradle:

apply plugin: 'com.android.model.application' 
model { 
    android { 
     compileSdkVersion = 23 
     buildToolsVersion = "23.0.2" 
     defaultConfig.with { 
      applicationId = "lala.lala" 
      minSdkVersion.apiLevel = 16 
      targetSdkVersion.apiLevel = 23 
      versionCode = 1 
      versionName = "1.0" 
     } 
    } 
    /* 
    * native build settings 
    */ 
    android.ndk { 
     moduleName = "hello-jni" 


     // cppFlags.add("-fno-rtti") 
    // cppFlags.add("-fno-exceptions") 
    // ldLibs.addAll(["android", "log"]) 
     // stl  = "system" 

    } 

    android.productFlavors { 
     // for detailed abiFilter descriptions, refer to "Supported ABIs" @ 
     // https://developer.android.com/ndk/guides/abis.html#sa 
     create("arm") { 
      ndk.abiFilters.add("armeabi") 
     } 
     create("arm7") { 
      ndk.abiFilters.add("armeabi-v7a") 
     } 
     create("arm8") { 
      ndk.abiFilters.add("arm64-v8a") 
     } 
     create("x86") { 
      ndk.abiFilters.add("x86") 
     } 
     create("x86-64") { 
      ndk.abiFilters.add("x86_64") 
     } 
     create("mips") { 
      ndk.abiFilters.add("mips") 
     } 
     create("mips-64") { 
      ndk.abiFilters.add("mips64") 
     } 
     // To include all cpu architectures, leaves abiFilters empty 
     create("all") 
    } 
    android.buildTypes { 
     release { 
      minifyEnabled = false 
      //proguardFiles.add(file('proguard-rules.txt')) 
     } 
    } 

} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
    compile 'com.android.support:cardview-v7:23.1.1' 
    compile 'com.android.support:recyclerview-v7:23.1.1' 
    compile 'com.google.android.gms:play-services-ads:8.3.0' 
    compile 'com.google.android.gms:play-services-analytics:8.3.0' 
    compile 'com.google.android.gms:play-services-appindexing:8.3.0' 
} 

ho creato in JNI cartella hello-jni.h:

enter image description here

In qualche parte del mio codice a importare questo:

static { 
    System.loadLibrary("hello-jni"); 
} 
public static native int testMethod(); 

E da auto com pletamento creato hello-jni.c:

#include "hello-jni.h" 

JNIEXPORT jintJNICALL 
Java_lala_lala_HomeScreen_testMethod(JNIEnv 
*env, 
jclass type 
) 
{ 
// TODO 
} 

file di intestazione hello-jni.h:

// 
// Created by Filip on 15.12.2015.. 
// 

#ifndef PHOTO_HELLO_JNI_H 
#define PHOTO_HELLO_JNI_H 

#endif //PHOTO_HELLO_JNI_H 

Ma non funziona. E 'piena rosso:

enter image description here

Qual è problema? Come risolverlo?

risposta

0

E 'problema in studio Android, ma solo su Windows: Issue 195483
è possibile tornare a Android 1.5.1 Studio , gradle 2.8, experimental wrapper 0.4.0.
Ho provato Android Studio 2.0 beta 6, con wrapper 0.6.0-beta5 e 0.6.0-beta6, ma ancora non funziona.

1

per far funzionare il campione che si può provare le seguenti operazioni:

  1. La firma del metodo jniJava_filsoft_photo_HomeScreen_testMethod(...) non corrisponde al nome del pacchetto che è lala.lala. Per il metodo da chiamare, rendere la sua firma coerente con il nome del pacchetto.
  2. editing Prova hello-jni.c come segue:

    #include <jni.h> 
    #include "hello-jni.h" 
    
    jint Java_lala_lala_HomeScreen_testMethod(JNIEnv* env, jclass type) 
    { 
    } 
    
  3. Per quanto riguarda i highlightings rosse, come di Android Studio 2.0 Preview 3b la funzione NDK non è ancora ufficialmente supportato e, alla mia ipotesi migliore, questa è la ragione per questo. Disabilitare Android NDK support plug (se installato)

    Settings>Plugins> deselezionare Android NDK support> riavviare Android Studio

+0

Oh che non è un problema, io sono messo segnaposto su un luogo e dimenticate di mettere su un altro .. E 'coerente, Ho problemi con '#include ' –

+0

non riesce a trovare questa libreria –

+0

ndk.dir = C \: \\ Users \\ Filip \\ AppData \\ Local \\ Android \\ sdk \\ ndk-bundle Sì –

Problemi correlati