gpt4 book ai didi

android - Hello-jni 示例在 Android Studio 2.0 预览版中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:26 26 4
gpt4 key购买 nike

我正在尝试实现 hello-jni sample进入我的项目。我有 Gradle 2.8 和 'com.android.tools.build:gradle-experimental:0.4.0' 并使用 Android Studio 2.0 Preview 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:

enter image description here

在我的代码的某些部分中,我导入了这个:

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

但它不起作用。它是全红色的:

enter image description here

有什么问题?如何解决?

最佳答案

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

  1. jni 方法 Java_filsoft_photo_HomeScreen_testMethod(...) 的签名与您的包名称 lala.lala 不匹配。对于要调用的方法,使其签名与包名一致。
  2. 尝试如下编辑 hello-jni.c:

    #include <jni.h>
    #include "hello-jni.h"

    jint Java_lala_lala_HomeScreen_testMethod( JNIEnv* env, jclass type )
    {
    }
  3. 关于红色突出显示,自 Android Studio 2.0 Preview 3b 起,NDK 功能尚未得到官方支持,据我推测,这是它的原因。禁用 Android NDK 支持 插件(如果已安装)

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

关于android - Hello-jni 示例在 Android Studio 2.0 预览版中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com