Android Studio 下配置JNI的使用 ---CMakeList【开篇一】

一、环境配置

1,安装NDK

按照如下两种方式进入NDK管理界面:



NDK管理界面如图:


当NDK没有安装时,按照提示next安装即可。上图是安装成功后显示的效果。


2,配置NDK环境

将NDK安装目录配置到环境变量中。



配置环境完成,通过以下命令,获取以下情形,说明配置环境成功。



二、项目新建

1,创建项目


选中  includeC++ support。


2,查看生成源码


其中,native-lib.cpp是安卓代码和C代码的中间件。也可以理解为Android调用C/C++代码的接口。

3,build 下Make Project,生成并运行项目。


生成可使用的so库,并运行项目,看到效果。


三、内容扩充

1,使用地方扩充

public class MainActivity extends AppCompatActivity {

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Example of a call to a native method
        TextView tv = (TextView) findViewById(R.id.sample_text);
        tv.setText(stringFromJNI() + "  分割符   " + mathAddUseC(2, 5));
    }

    /**
     * A native method that is implemented by the 'native-lib' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();

    public native int mathAddUseC(int a, int b);
}
添加新的接口方法。

2,“接口”更新

也就是Android 和C/C++代码的中间件[native-lib.cpp]更新,添加下列方法:

extern "C"
JNIEXPORT jint JNICALL
Java_com_future_ndkdemo_MainActivity_mathAddUseC(
        JNIEnv *env,
        jobject , jint a,jint b) {
    MathUtil mathUtil;
    jint  result = mathUtil.add(a, b);
    return result;
}
3,填充C类



其中,native-lib.cpp添加方法为中间件【接口】,用于传递Android给C的数据,获取C代码运行的结果。

而C类的扩展则实现了C代码的完善与扩展,便于做更多复杂的事情。从而独立了C代码和Android代码。


四、细节注意

1,配置出来的项目可能出错,类似:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 11 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1] C:\Users\Administrator\.android\build-cache\a4e0c0cdf9f76dcb6d3fc78fbc7d7020a41a7d71\output\AndroidManifest.xml
	Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage
需要配置合适的Compact支持包版本。


2,出现包名报错

需要配置合适的targetSdkVersion,compileSdkVersion,buildToolsVersion版本号。


3,JNI项目的细节调整



修改SO库生成路径,修改SO库生成的名称。



对的,这个小项目的运行效果就是这样子的啦!



传送门



我们所有的努力都是为了生活更幸福,让一切更美好。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

壹叁零壹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值