基于mac,使用android studio进行ndk开发(1)

1.首先进入preferences,确认android ndk是否已经安装,没有的勾选,apply即可安装。

2.新建一个测试项目,然后在App 的build gradle中的default config中添加 ndk{moduleName "test"}。如下

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "cn.eqiyue.ndk2"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        ndk{
            moduleName "test"
        }
    }
}

3.在gradle.properties中增加 

android.useDeprecatedNdk=ture

4.然后gradle重新编译。

5.增加一个ndk的工具类,申明一个native方法。

/**
 * Created by kemp on 5/3/16.
 */
public class NDKUtils {
    public static native boolean doSomeThing();
}

 

6.此时声明的方法,显示为红色,用代码提示功能生成c文件(alt+回车),此时在main下,此时可以看到生成了jni文件夹,并且生成了ndkutils.c方法声明好了,但是没有实现,

7.然后make一下,让我们申明的工具类生成class文件,在build/intermediate/classes/debug/...目录下即可看到相应的class。

8.点击一下android studio下面的terminal,切换目录,cd app/src/main 切换到main目录下,然后编译class文件,javah -d jni -classpath ../../build/intermediates/classes/debug/ cn.eqiyue.ndk2.NDKUtils  目录对应自己的,然后可以看到在jni文件夹下生成了头文件。

9.将头文件include进来

#include <jni.h>
#include "cn_eqiyue_ndk2_NDKUtils.h"

JNIEXPORT jboolean JNICALL
Java_cn_eqiyue_ndk2_NDKUtils_doSomeThing(JNIEnv *env, jclass type) {

    // TODO
    return 1;
}

10.然后在activity中使用。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        System.loadLibrary("test");
        TextView tv = new TextView(this);
        tv.setText(NDKUtils.doSomeThing()+"");
        setContentView(tv);
    }
}
11.可以看到打印为ture。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值