继上一篇学习了如何使用NDK编译FFMPEG后,接下来就是要学习如何在Android Studio中使用了。

经过参考和一系列的摸索,记录下具体步骤。

创建C++ Support的Android Studio工程

  1. 创建C++ Support的Android Studio工程,记得勾选,其他默认下一步就好

  2. 默认创建的项目会自动创建一个native-lib.cpp的文件,这个文件后面会编译成对应的so文件。在MainActivity中,系统默认添加了如下native代码:

    1
    public native String ();
  3. 打开native-lib.cpp文件,可以看到里面含有一个native方法。方法的命名格式Java_包名_类名_方法名中间的点分号改为下划线。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <string>
    extern "C"
    JNIEXPORT jstring
    JNICALL
    Java_com_example_simonzheng_ndktest_MainActivity_stringFromJNI(
    JNIEnv *env,
    jobject ) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
    }
  4. 编译运行默认的项目程序,这里假如之前没有按照NDK环境的话,Gradle会报错。只需要按照上一篇的步骤在sdk中下载好NDK所需的依赖环境即可。运行成功后可以在模拟器中看到默认的App,显示”Hello from C++”。

书写自己的c++文件并调用

  1. 回到Android项目,在MainActivity中添加自己的native方法。最后在activity_main.xml文件中添加一个TextView,在MainActivity中设置这个TextView的显示文本

    大专栏  Android Studio NDK编程初探t java">
    1
    public native String myTest2();
    1
    2
    TextView tv1 = findViewById(R.id.myTest_test);
    tv1.setText(myTest());
  2. Android Studio会自动提示

    可以选择直接在默认的native-lib.cpp文件中创建,或者自己创建新的cpp文件。这里选择了自己创建新文件。

  3. 创建一个叫mytest-lib.cpp的文件,并实现方法,这里注意方法的命名规则:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <string>
    extern "C"
    JNIEXPORT jstring JNICALL
    Java_com_example_simonzheng_ndktest_MainActivity_myTest2(JNIEnv *env, jobject instance) {
    // TODO
    std::string myTest = "Hello My Test Library!";
    return env->NewStringUTF(myTest.c_str());
    }
  4. 然后编译项目会发现,对应的会生成mytest-lib.cpp.o文件

  5. 别忘记回到MainActivity中加载这个库

    1
    2
    3
    static {
    System.loadLibrary("mytest-lib");
    }
  6. 编译运行项目,可以在模拟器中看到对应的效果

Android Studio NDK编程初探的更多相关文章

  1. Android Studio Ndk 编程

    如今开发Android程序基本都已经从Eclipse转到了Android Studio了, 近期项目需求, 须要用到ndk编程, 于是就折腾了一下. 开发环境 Android Studio 1.5.1 ...

  2. Android Studio NDK编程-环境搭建及Hello!

    一,下载 安装android-ndk开发包 NDK各个版本链接二,新建项目NDKDemo,选择空Activity就可以:(注:Android studio 2.2,可通过SDK Tools 添加LLD ...

  3. Android Studio NDK编程-环境搭建及Hello!

    一,下载 安装android-ndk开发包 NDK各个版本链接二,新建项目NDKDemo,选择空Activity就可以:(注:Android studio 2.2,可通过SDK Tools 添加LLD ...

  4. Android Studio NDK环境配置

    本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...

  5. 【Android】Android Studio NDK 开发

    Android Studio NDK 开发 记录在Android Studio中NDK简单开发的步骤 用到的Android Studio版本为3.5. 配置NDK 下载NDK 一般在SDK下已经有自带 ...

  6. Android Studio NDK初探

    Android Studio中实现NDK开发较之前Eclipse+Cygwin,方便了很多. 本文以最简单的从C程序中获取字符串,并显示到MainActivity的TextView上为例进行NDK开发 ...

  7. android studio ndk配置和ndk开发

    配置开发环境: 1:下载ndk,导入android studio中. 2:在项目中引入NDK   3:在计算机path变量中导入NDK路径,在编译.h文件的时候会用到. 一:建立java的native ...

  8. android studio ndk使用openMP

    好久没碰ndk了,之前都是在eclipse下写makefile配置c++程序的,现在发现主流都是用android studio,eclipse俨然已经被遗弃了,正好最近项目需要用openMP做算法加速 ...

  9. Android Studio NDK 学习之接受Java传入的字符串

    本博客是基于Android Studio 1.3 preview版本,且默认你已经安装了Android SDK, Android NDK. 用Android Studio新建一个工程叫Prompt,其 ...

随机推荐

  1. python-day4爬虫基础之正则表达式

    正则表达式:(字符串匹配) 使用单个字符串来描述匹配一系列符合某个句法规则的字符串 是对字符串操作的一种逻辑公式 应用场景:处理文本和数据 正则表达式过程:依次拿出表达式和文本中的字符比较,如果每一个 ...

  2. bzoj3218 a+b Problem(最小割+主席树优化建边)

    由于6.22博主要学测,大半时间学文化课,近期刷题量&写题解的数量会急剧下降. 这题出得挺经典的,首先一眼最小割,考虑朴素的做法:与S联通表示白色,与T联通表示黑色,S向i连流量为w[i]的边 ...

  3. 2019收藏盘点(编程语言/AI/面试/实用工具)

    2020.1.5更新 我看过的后面会加上评价 编程学习 java开源项目汇总: https://github.com/Snailclimb/awesome-java 大数据学习入门: https:// ...

  4. no.2淘宝架构背后——零售业务中台架构设计探讨及实践读后感

    2017年8月12日,袋鼠云首席架构师正风在“网易博学实践日:大数据与人工智能技术大会”进行<淘宝架构演进背后——零售业务中台架构设计探讨及实践>演讲分享.传统零售行业如何选择应对新经济模 ...

  5. python学习Day08--文件操作

    [主要内容] 文件操作: 1. r 2. w 3. a 4. r+ 读写模式. 需要移动光标进行反复读写 5. w+ 6. a+ 7. b bytes 读写操作的是字节. 用在非文本上 8. seek ...

  6. 图之强连通--Tarjan算法

    强连通分量 简介 在阅读下列内容之前,请务必了解图论基础部分. 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通. 强连通分量(Strongly Connected Components ...

  7. Django静态文件配置-request方法-ORM简介-字段的增删改查

    app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...

  8. NOIP2002 过河卒(DFS,DP)

    https://www.luogu.org/problem/P1002 题目描述 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如 ...

  9. 吴裕雄--天生自然C语言开发:位域

    struct { unsigned int widthValidated; unsigned int heightValidated; } status; struct { unsigned ; un ...

  10. TPO4-1 Deer Populations of the Puget Sound

    The causes of this population rebound are consequences of other human actions. First, the major pred ...