你好,jni样本不';在Android Studio 2.0预览版中无法工作

你好,jni样本不';在Android Studio 2.0预览版中无法工作,android,android-studio,android-ndk,java-native-interface,Android,Android Studio,Android Ndk,Java Native Interface,我正在努力实现 加入我的项目。我有Gradle2.8和'com.android.tools.build:Gradle实验:0.4.0'和使用android Studio 2.0预览3b 这是我的build.gradle: apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2"

我正在努力实现 加入我的项目。我有
Gradle
2.8和
'com.android.tools.build:Gradle实验:0.4.0'
和使用
android Studio 2.0预览3b

这是我的
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'
}
我已经在
JNI
文件夹
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

在代码的某些部分,我导入了以下内容:

static {
    System.loadLibrary("hello-jni");
}
public static native int testMethod();
通过自动完成创建hello jni.c:

#include "hello-jni.h"

JNIEXPORT jintJNICALL
Java_lala_lala_HomeScreen_testMethod(JNIEnv
*env,
jclass type
)
{
// TODO
}
头文件
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
但它不起作用。它是全红色的:


问题是什么?如何解决此问题?

要使示例正常工作,您可以尝试以下步骤:

  • jni
    方法
    Java\u filsoft\u photo\u HomeScreen\u testMethod(…)
    的签名与您的包名
    lala.lala
    不匹配。对于要调用的方法,请使其签名与包名一致
  • 尝试按如下方式编辑
    hello jni.c

    #include <jni.h>
    #include "hello-jni.h"
    
    jint Java_lala_lala_HomeScreen_testMethod( JNIEnv* env, jclass type )
    {
    }
    
    #包括
    #包括“hello jni.h”
    jint Java_lala_lala_主屏幕_测试方法(JNIEnv*env,jclass类型)
    {
    }
    
  • 关于红色荧光灯,截至Android Studio 2.0预览3b,
    NDK
    功能尚未得到官方支持,据我猜测,这就是它的原因。禁用Android NDK支持插件(如果已安装)

    设置
    插件
    >取消选中
    Android NDK支持
    >重新启动
    Android Studio


  • 这在Android studio中是个问题,但仅在Windows上:
    您可以降级到Android studio 1.5.1、gradle 2.8、。

    我尝试了Android Studio 2.0 beta 6,带有wrapper和0.6.0-beta 6,但仍然不起作用。

    哦,这不是问题,我把占位符放在一个地方,忘了放在另一个地方。。它是一致的,我对
    #include
    有问题,它找不到这个库ndk.dir=C\\\\Users\\Filip\\AppData\\Local\\Android\\sdk\\ndk bundle是的,我想是的,我没有更改这个文件中的任何内容。