项目目录结构

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)add_library(hello-jni SHAREDhello-jni.c)# Include libraries needed for hello-jni lib
target_link_libraries(hello-jniandroidlog)

编译一个shared library,hello-jin.so.

target_link_libraries中链接需要库

hello-jni.c

#include <string.h>
#include <jni.h>/* This is a trivial JNI example where we use a native method* to return a new VM String. See the corresponding Java source* file located at:**   hello-jni/app/src/main/java/com/example/hellojni/HelloJni.java*/
JNIEXPORT jstring JNICALL
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,jobject thiz )
{
#if defined(__arm__)#if defined(__ARM_ARCH_7A__)#if defined(__ARM_NEON__)#if defined(__ARM_PCS_VFP)#define ABI "armeabi-v7a/NEON (hard-float)"#else#define ABI "armeabi-v7a/NEON"#endif#else#if defined(__ARM_PCS_VFP)#define ABI "armeabi-v7a (hard-float)"#else#define ABI "armeabi-v7a"#endif#endif#else#define ABI "armeabi"#endif
#elif defined(__i386__)
#define ABI "x86"
#elif defined(__x86_64__)
#define ABI "x86_64"
#elif defined(__mips64)  /* mips64el-* toolchain defines __mips__ too */
#define ABI "mips64"
#elif defined(__mips__)
#define ABI "mips"
#elif defined(__aarch64__)
#define ABI "arm64-v8a"
#else
#define ABI "unknown"
#endifreturn (*env)->NewStringUTF(env, "Hello from JNI !  Compiled with ABI " ABI ".");//把C的字符串,转换为Java的字符串
}

hello-jni.java

  TextView tv = (TextView)findViewById(R.id.hello_textview);tv.setText( stringFromJNI() );
}
/* A native method that is implemented by the* 'hello-jni' native library, which is packaged* with this application.*/
public native String  stringFromJNI();/* This is another native method declaration that is *not** implemented by 'hello-jni'. This is simply to show that* you can declare as many native methods in your Java code* as you want, their implementation is searched in the* currently loaded native libraries only the first time* you call them.** Trying to call this function will result in a* java.lang.UnsatisfiedLinkError exception !*/
public native String  unimplementedStringFromJNI();/* this is used to load the 'hello-jni' library on application* startup. The library has already been unpacked into* /data/data/com.example.hellojni/lib/libhello-jni.so at* installation time by the package manager.*/
static {System.loadLibrary("hello-jni");
}

1)定义native的方法

2)loadLibray

Android NDK-helloJNI相关推荐

  1. windows系统上安装与使用Android NDK

    转自http://www.cnblogs.com/luxiaofeng54/archive/2011/02/12/1952391.html 很早就听说了android的NDK应用,只是一直没有时间去研 ...

  2. Android NDK开发篇(一):新版NDK环境搭建(免Cygwin,超级快)

    以前做Android的项目要用到NDK就必须要 下载NDK,下载安装Cygwin(模拟Linux环境用的),下载CDT(Eclipse C/C++开发插件),还要配置编译器,环境变量... 麻烦到不想 ...

  3. android ndk r8d,(Android) NDK

    從 Android NDK | Android Developers 下载 Android NDK (我在 Ubuntu 所以下载 android-ndk-r5c-linux-x86.tar.bz2) ...

  4. linux android ndk r9b JNI 开发过程(COCOS2D-X配置)

    我是小白 折腾了两天了. 终于成功第一次运行- 网上一堆教程乱死了然后其实现在android官方已经认定NDK为必要开发环境所以现在的配置其实很简单 另外Cocos2d-x的编译真是奇怪死了对一个只把 ...

  5. android ndk 界面开发教程,Android NDK开发之入门教程

    JNI(Java Native Interface, Java本地化方法)使得Java能与其它语言(如C.C++)的动态库进行交互. 在Android 项目中,经常看到地图,统计,推送之类的第三方平台 ...

  6. Android NDK开发method GetStringUTFChars’could not be resolved

    Android NDK开发method GetStringUTFChars'could not be resolved 图1 最近用到android的ndk,但在eclipse中提示method Ge ...

  7. Android NDK 编译选项设置[zhuan]

    http://crash.163.com/#news/!newsId=24 在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指导编译器如 ...

  8. 今天终于将第一个 Android NDK 程序编译、运行成功

    今天终于将第一个 NDK 程序编译.运行成功. 起先看资料和书籍时,都要求安装 CygWin.我也安装了,并将 Sample: hello-jni 编译成功.编译的 LOG 如下:  LeoZheng ...

  9. Android NDK编译中在libs\armeabi中加入第三方so库文件的方法

    Android NDK编译中在libs\armeabi中加入第三方so库文件的方法 假设要加入库文件的名字为libffmpeg.so文件 1.要在project\jni目录下新建一目录prebuilt ...

  10. android NDK 知识汇总

    原汇总: [eoeAndroid社区索引]android开发环境NDK教程问题汇总帖 http://www.eoeandroid.com/thread-165553-1-1.html 环境: Wind ...

最新文章

  1. Python 到底该怎么学才好?你关心的答案来了
  2. CCNA200-120章节关系
  3. 5G手机太贵?三星欲推Galaxy R系列新机 或成售价最低的5G机型
  4. 面试准备每日五题:C++(四)——typedefdefine、指针常量、队列栈、地址赋值、C和C++结构体
  5. django(一)——在PyCharm下搭建开发环境
  6. 一文剖析电影“流浪地球”推广营销方式
  7. java多线程5大框架_实现 Java 多线程并发控制框架
  8. R语言——双因素方差分析
  9. UWB定位系统油库人员定位解决方案
  10. Python 之心有猛虎,细嗅蔷薇
  11. 缺陷检测End-to-end training of a two-stage neural networkfor defect detection(端到端的两步神经网络的缺陷检测)
  12. 股票涨跌的心理学原理: 前景理论
  13. C++: 猴子选大王
  14. vue 下载文件流和捕获后端返回的状态码和错误信息的方法
  15. Python实现淘宝爬取——奶粉销售信息爬取及其数据可视化
  16. 网站建设(4)——服务器的选择和购买
  17. 一、手把手教你 Vue2+Ts
  18. 条码扫描仪超商零售PDA手持打印机
  19. 天翼云盘php插件,天翼云盘直接下载
  20. 【RDMA】infiniband网卡安装|InfiniBand 连接和状态诊断工具|测试RDMA网卡是否正常工作...

热门文章

  1. [当人工智能遇上安全] 1.人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术
  2. [LeetCode] Remove Duplicates from Sorted List - 链表问题
  3. 【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解
  4. hive -e ,hive -f 用法
  5. 1134:合法C标识符查
  6. 2018年第九届省赛C/C++A组第2题——星期一
  7. 笔记本控制机器人方法
  8. 【ARM】Tiny4412裸板编程之静态库(libc.a)
  9. 【嵌入式】C语言高级编程-变参函数(08)
  10. 图片和input不对齐_pdf到png再到mp4短视频:不需要工具,2个指令1键搞定