Android Studio NDK开发篇一

安装ndk:

下载ndk:

在你装好了Android studio 的sdk环境的前提下进行ndk开发。

打开android studio,Tools->Android->SDKManager->Android SDK->SDK Tools.勾上LLDB,NDK。


已经勾上的其他选项不用管,让他处于勾中状态。下载就行了,默认是下载到sdk下有一个文件叫ndk-bundle,大概两个多G。

我的路径:   D:\software_install_path\android_studio\sdk\ndk-bundle

配置环境变量:

加一个系统变量:name:NDK_ROOT    value:D:\software_install_path\android_studio\sdk\ndk-bundle(ndk-bundle的路径,看你自己下载在哪里)

在系统变量path的末尾加上;%NDK_ROOT%


这样就配置好了

ndk开发:

native方法:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv=(TextView) findViewById(R.id.tv_helloworld);
        tv.setText(getStrFromJNI());

    }
    public native String getStrFromJNI();

.h文件:

先cd进入工程包前面的路径。

再javah -jni 类的全路径名。

没报错的话就是成功了,这是发现android studio有一个.h文件生成

.c文件:

android studio切换到Project,再app下新建一个jni的文件夹,在里面建一个demo.c文件。

文件里面的内容是:

#include <jni.h>
jstring Java_com_example_liurenyou_ndk_MainActivity_getStrFromJNI(JNIEnv *env,jobject thiz) {
return (*env)->NewStringUTF(env, "hello world from jni");
}

可以发现方法名字和.h文件名字一样,而且还有规律。Java_类的全路径名的变体再加上native名字。熟悉了就可以不用生成.h文件了

mk文件:

在jni下面建一个Android.mk文件 里面的内容是

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)

用来编译so文件。

so文件:

cmd进入app的路径,然后ndk-build,就会发现多了libs和obj两个文件夹,obj没有用,可以删了


两个配置:

项目的根目录下有一个local.properties文件


在app下的build.gradle的android节点下面加上

sourceSets{
        main{
            jniLibs.srcDirs=['libs']
        }
    }

so文件使用:

在MainActivity类里面加上

 static {
        System.loadLibrary("demo");
    }
这个库demo(完整的名字是libdemo.so)会在第一次使用MainActivity这个类的时候加载。(static代码块声明的代码会先于onCreate方法执行)

第一个helloworld from jni:






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值