Android Studio 使用NDK

引用块内容

下载配置android ndk

地址

解压到SDK

我是从android studio设置里面直接下载的
这里写图片描述

如果是单独下载解压,NDK的位置应该也要配置:
这里写图片描述

如果你不配置也可以单独某个项目中local.properties中配置:

ndk.dir=D:\\Android_Doc\\Sdk\\ndk-bundle

这里写图片描述

将ndk的根目录配置到系统PATH环境变量

新建一个NDKTest项目

项目右键-新建目录-jni

jni目录中新建三个文件,分别是ndktest.c、Android.mk、Appllication.mk,内容分别如下:

#include<jni.h>
#include<string.h>

jstring Java_example_guanhang_ndktest_MainActivity_helloworld(JNIEnv* env, jobject obj){
    return (*env)->NewStringUTF(env,"Hello world");
}
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := ndktest
LOCAL_SRC_FILES := ndktest.c

include $(BUILD_SHARED_LIBRARY)
APP_ABI := all

右键项目-进入项目路径

这里写图片描述

shift + 右键项目文件夹,然后选择在此处打开命令窗口

输入(环境变量要配置好):

ndk-build

这里写图片描述

右键app-src-main目录 新建jniLibs文件夹,然后把新出现的libs下面的所有文件拷到这里面去(包含了所有平台的so文件)

这里写图片描述
这里写图片描述

layout中加一个textview:

<TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

修改MainActivity中的代码:

public class MainActivity extends AppCompatActivity {


    public native String helloworld();

    static {
        System.loadLibrary("ndktest");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ((TextView) findViewById(R.id.tv)).setText(helloworld());
    }
}

运行:

这里写图片描述

问题:

如果在main里面创建jni目录(这里是另一个项目),编译产生libs(也就是不用拷贝过去),然后运行会出现错误:

Error:Execution failed for task ':app:compileDebugNdk'.
Error: NDK integration is deprecated in the current plugin.  Consider trying the new experimental plugin.  For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental.  Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.

解决方法:

android.useDeprecatedNdk=true

加上去后我的程序出现了Couldn’t load hello: findLibrary returned null的错误,我不确定是不是这些步骤的原因。有知道问题的可以说一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值