Android NDK开发<一>:第一个demo

一、NDK下载

ndk的下载就不说了~网上资源比较多

二、环境配置(Android Studio)

下载完成后就是简单的项目环境配置

  1. 添加NDK路径
    这里写图片描述

  2. 在工程的local.properties文件中添加NDK路径(上面下载好的那个NDK),类似其中的SDK路径一样
    这里写图片描述

  3. 在app目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:
    这里写图片描述

三、代码编写

1.新建测试类JniTest.

这里写图片描述

2.然后build project得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录: .\app\build\intermediates\classes\debug。找到对应包名下的文件

这里写图片描述

3.然后接下来的步骤就是根据生成的class文件,利用javah 生成对应的 .h头文件。

  1. 点开AS的Terminal标签,默认进入到该项目的app文件夹下。
  2. 输入命令(cd app\build\intermediates\classes\debug)跳转到class中间文件生成路径
  3. 然后执行javah命令生成h文件:javah -jni com.*.ffmpegtest.JniUtil.JniTest(对应包名路径) 。
    这里写图片描述

  4. 执行完之后你可以在文件夹.\app\build\intermediates\classes\debug下看见生成的 .h头文件为:
    这里写图片描述

4. 在工程的main目录下新建一个名字为jni的目录,然后将上一步生成的 .h文件剪切过来。 在jni目录下新建一个c文件,随意取名,我的叫JniTest.c 。然后编辑代码如下:

这里写图片描述

5.接下来就可以在MainActivity中调用我们的native方法了,代码如下:

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary ("JniTest" ); // 我们的.so库为libJniTest.so,这里省略前面的lib
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super .onCreate(savedInstanceState);
        setContentView(R.layout. activity_main);
        TextView textView = (TextView) findViewById(R.id. text);
        textView.setText( new JniTest().getText());
    }
}

6.以上所有步骤的完成后即可直接运行。

(注:以上步骤完成后但仍可能出现NDK的bug而导致编译失败,在jni的目录下再添加一个空的.c文件即可解决)

7.结果:

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值