转载请标明出处:
http://blog.csdn.net/michael1112/article/details/55271823

江东橘子的博客

前言

使用Android studio 进行NDK-JNI开发,在界面上显示Hello NDK-JNI

步骤:

1. 创建工程

2. 配置NDK 路径

local.properties 文件中加入 ndk路径

ndk.dir=C\:\\Users\\happen\\AppData\\Local\\Android\\sdk\\ndk-bundle

(NDK所在文件路径)

3. 在gradle.properties 文件里面添加 android.useDeprecatedNdk=true

4. 修改build.gradle配置

工程中共有两个build.gradle配置文件,我们要修改的是在\app\build.gradle这个文件。

defaultConfig里面写入

[java] view plain copy print?
  1. ndk{
  2. moduleName "hellojni"   //生成的so名字
  3. abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。
  4. }

5. 在Java代码中写入代码:包括 本地方法和加载so类库(so类库名字)

6. 打开 View-->Tool Windows-->Terminal (或者点击左下角Terminal)

7. 在打开的Terminal中输入命令 或者cmd 后在终端中输入

进入项目名-->app-->src-->main目录下创建文件夹

命令--->cd app/src/main 回车

命令--->mkdir jni 回车

进入项目名-->app-->src-->main-->java目录下输入

命令--->cd java 回车

命令--->javah -jni 包名.类名      ( .h生成头文件)

8. 在jni文件夹下创建.c文件

9. 在刚创建的c文件中写入代码

10. 编译运行查看结果:

注:生成的so类库位置如下:
布局代码:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jdjz.myapplication.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

MainActivity.java

GitHub: https://github.com/whtchl/TempNDKJNI.git

Android NDK JNI 简单例子2相关推荐

  1. Android NDK JNI 简单例子1 : Android NDK配置和下载

    转载请标明出处: http://blog.csdn.net/michael1112/article/details/55004944 江东橘子的博客 下载和配置NDK: --请使用AS2.2 或更高版 ...

  2. Android NDK JNI 的简单使用

    为什么80%的码农都做不了架构师?>>>    1.why: 为啥学 NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西:另外就是为了效率更加高些: Android n ...

  3. 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)

    在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...

  4. Android NDK jni开发,适当的给Android 代码加密

    为什么使用ndk开发了,就是 稍微将代码隐藏一下..Android 虽然打包能混淆,但是有些东西是不能混淆的,如下图,压缩密码把直勾勾的下载代码中.下面手把手稍微优化下. 將操作密码的部分我们通过 j ...

  5. Android NDK JNI C++ 13 pthread多线程

    这一篇将初步介绍NDK开发中多线程方面相关操作,具体步骤如下: 多线程采用 POSIX 的pthread方式实现. <1> : 新建一个Android工程 androidpthreadjn ...

  6. android ndk jni so,Android Studio Ndk So 文件

    一 下载NKD,并解压 官网:https://developer.android.com/index.html 二 新建项目 1 新建Android Studio项目 2 项目配置NDK路径 imag ...

  7. Android NDK JNI WARNING: illegal start byte 0x

    今天攻克了JNI WARNING: illegal start byte 0x81这个问题. 问题出现的现象是通过jni调用加密方法,调用之后返回密文内容,结果就出现这个问题. 在国外查找一段时间之后 ...

  8. Android NDK JNI开发3

    换个浏览器来发,IE10不能够上传图片,兼容问题. 还是和上一篇一样的步骤,不过这次函数带了参数: <1> : eclipse新建一个hellojnidemo3工程,然后将cgywin切换 ...

  9. android NDK 编译hellojni 例子文件

    运行android-cmd.bat,使用cd命令切换到samples/hello-jni目录下, 运行android update project -p . -s,会生成build.xml文件,用于a ...

最新文章

  1. mysql 添加rownum_Mysql 增加rownum
  2. telnet检查接收邮件命令
  3. 用Play 1.x 实现简单云计算多租户设计(Use Play 1.x To Achieve Multi-Tenancy Design)
  4. Qt webkitwidgets模块和webenginewidgets模块
  5. DotNetMagic 5.4.0破解
  6. 在计算机领域客观事物的属性表示为数据,数据与信息试题解析
  7. html5 支持表格吗,html5 – 在HTML 5中使用表格很好吗?
  8. MyBatis 实现多表查询、resultMap 标签、MyBatis 注解、mybatis运行原理
  9. 从零开始学Pytorch(零)之安装Pytorch
  10. c语言kmeans算法具体步骤,k-均值聚类算法c语言版
  11. 用php做动态时钟,vue实现动态时钟以及日期
  12. 大数据监测及预警系统平台怎么选择的方法参考
  13. ckplayer html播放本地,vue中使用ckplayer播放器
  14. 视界云联合创始人姜飞 荣获品途2017年NBI商业影响力新锐人物奖
  15. 山东省第八届 ACM 省赛 Parity check (规律、水)
  16. 【笔记】磁盘管理(2):磁盘分区、增加swap
  17. 打开oracle数据库oe,database - Oracle数据库11g:OE.ORDERS表不存在 - SO中文参考 - www.soinside.com...
  18. Python 网易邮箱简单发送邮件
  19. 钉钉,腾讯会议中使用虚拟人物形象上网课
  20. 为什么Netty使用NIO而不是AIO

热门文章

  1. oracle数据库备份方法主要有哪几种,Oracle数据库备份方法有哪三种?
  2. mysql 查看主从_什么参数可以查看mysql主从复制是否正常
  3. 新手搭ssm要多久_如何快速学习ssm 框架?
  4. python 自定义模块_Python 自定义模块路径
  5. C++知识点11——this指针,const成员函数,访问权限控制
  6. PE Header中的FIleHeader(文件头)
  7. Hibernate执行原生SQL
  8. Bootstrap系列 -- 6. 列表
  9. Python 简介day01
  10. Python你必须知道的十个库