Android——NDK开发(一)

3 篇文章 0 订阅

理论知识:

NDK的作用 C语言通用 方便后期维护减少开发量
NDK的优点:1.运行效率高2.利于充分发挥软硬件优势3.利于代码复用4.降低版本控制成本5.降低开发成本
NDK的缺点:1.开发难度相对高2.调试难度相对高3.增加开发团队规模
NDK编译流程图

这里写图片描述

实际操作

NDK安装与配置:
1-安装android studio
可到android中文官网下载
2-插件里选择下载Android NDK包
这里写图片描述
这里写图片描述

3-创建一个新的android工程,并新建一个类
这里写图片描述
在Activity里永远访问不到android.support.v7.app.AppCompatActivity
找不到android.support.v7.app.AppCompatActivity的类文件
不知道为什么,知道的同学麻烦在评论里提示一下

4-声明native函数,并build生成classes声明native函数

public native String getStringFromNative()

声明hello本地库

static{
System.loadLibrary("hello");
}
/**
 * Created by HYAD-PC01 on 2017/1/8.
 */
public class TestJni {
    static{
        System.loadLibrary("hello");
    }
    public static native String getString();

    public native String getString();

    public native int add(int a,int b);
}

build
这步很重要哦,有时候找不到类就是因为没有编译,具体有没有编译可以去classes文件下查看一下
这里写图片描述
查看生成classes文件
项目->app->build->intermediates->classes->包名->我们的.class文件
这里写图片描述
5-使用javah生成头文件,并创建jni文件夹
cmd:
进入app——path/app/src/main/;
javah -d jni -classpath android_sdk_path/android.jar class_name

注:android_sdk_path:本机sdk目录
android.jar :当前项目jar版本
这里写图片描述
jni文件下
这里写图片描述
如果这里错误请跟步骤严肃再来一遍并注意以下问题:
1.Terminal
这里写图片描述
一开始我是在android studio自带的Terminal里写的命令,然而并没有什么软用,死活不对于是改成cmd。如果你有解决办法,请联系我,如果没有呢就一起用cmd吧
2.报找不到android.support.v7.app.AppCompatActivity
说法一:是因为编译的classpath 未加入v4和v7库
请参考
http://www.itnose.net/detail/6291798.html
说法二:Activity生成jni就是矫情,改用新建class就什么毛病都没了(亲测推荐)
3.命令标准写法
这里写图片描述

6-创建C/C++程序并include头文件
在jni文件下新建C/C++文件
这里写图片描述

7-设置NDK路径:包括(local.properties)及Gradle文件(build.gradle)
local.properties里加一行(盘符双斜杠,不然编译不过)

这里写图片描述
build.gradle

这里写图片描述
注:moduleName必须与这里设置的一样

这里写图片描述
abiFilters 设置了在那些平台上可以应用
8-编译NDK程序(build),并生成*.so(android_ndk_path:\项目\app\build\intermediates\ndk\debug\lib\armeabi)
编译
这里写图片描述
这里写图片描述
genymotion的cpu是x86的
参考
http://www.07net01.com/2016/04/1445592.html
http://www.cnblogs.com/jymblog/p/5526865.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值