JNI开发(1)——概述、环境搭建、必要知识点

JNI开发(2)——开发实战


本篇是重头戏:JNI实战开发。假设你对于 JNI、NDK 还没概念的话 那么观看本篇 也是没有太大难度的 ,哈哈哈哈!

!。

一些关于Android中NDK开发的一些知识请看我们上一篇: JNI开发(1)——概述、环境搭建、必要知识点

划掉的部分是Eclipse须要 Android studio不须要的流程

配置

红色标注的4个文件是须要手动改动的文件:

  • gradle-wrapper.properties文件内容为例如以下
distributionUrl=https\://services.gradle.org/distributions/gradle-xx-xx.zip
  • 改动Project(非Module)下的Gradle文件,将gradle版本号改为实验版本号
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1'
}
}
allprojects {
repositories {
jcenter()
}
} task clean(type: Delete) {
delete rootProject.buildDir
}
  • 改动Module下的Gradle文件 ,细节方面请自行对比…
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.3" defaultConfig {
applicationId = "com.wenld.jni.jnidemo"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 23
}
/*
* native build settings
*/
ndk {
moduleName = "test" // 设置生成的文件名称
ldLibs.addAll(['log', 'android', 'EGL', 'GLESv1_CM'])
}
buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.pro'))
}
}
productFlavors {
create("arm") {
ndk.abiFilters.add("armeabi")
}
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
}
// create("arm8") {
// ndk.abiFilters.add("arm64-v8a")
// }
create("x86") {
ndk.abiFilters.add("x86")
}
// create("x86-64") {
// ndk.abiFilters.add("x86_64")
// }
// create("mips") {
// ndk.abiFilters.add("mips")
// }
// create("mips-64") {
// ndk.abiFilters.add("mips64")
// }
// To include all cpu architectures, leaves abiFilters empty
create("all")
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.2.1'
}
  • 根文件夹下gradle.properties文件 加入例如以下一行
android.useDeprecatedNdk=true
  • 生成jni文件夹

配置就差点儿相同OK了,接下来进入实战

实战

编写声明了 native 方法的 Java 类

声明这是一个native函数,由本地代码实现,使用native关键字;依照下图的操作就能够自己主动创建MyLibrary.c文件

/**
* Created by wenld- on 2016/4/15.
*/
public class MyNdk {
static {
System.loadLibrary("test");
}
public native String getString();
}

windows 使用 alt+ enter 键。会自己主动创建.c文件到jni文件夹

改动 test.c 文件 内c++代码

这边我输出字符串:"this wenld's jniDemo"

.so包

位置例如以下:

最后结果例如以下:


參考:

JNI开发(2)——开发实战的更多相关文章

  1. Android安卓书籍推荐《Android驱动开发与移植实战详解》下载

    百度云下载地址:点我 Android凭借其开源性.优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为市场占有率很高的智能手机操作系统. <Android驱动开发与 ...

  2. Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)

    Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件) 前文介绍了通过 Safari 的 Web检查器,可以看到控制台输出的信息.但有时这样调试代码不太方便,如果在 ...

  3. Cordova - 使用Cordova开发iOS应用实战2(生命周期、使用Safari调试)

    Cordova - 使用Cordova开发iOS应用实战2(生命周期.使用Safari调试) 前文我们创建了一个简单的Cordova项目,结构如下: 1,Cordova生命周期事件 (1)device ...

  4. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)

    Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的 ...

  5. ubuntu下整合eclipse和javah生成jni头文件开发android的native程序

    0:前言: 这两天一直在研究用android的jni调用第三方库,上网搜方法,但是都是泛泛而谈,没有demo,经过我几番折磨,写了n多的helloword工程,总是不成功,工程名字也就由helloow ...

  6. Ruby入门--Linux/Windows下的安装、代码开发及Rails实战

    Ruby入门--Linux/Windows下的安装.代码开发及Rails实战 http://www.linuxidc.com/Linux/2014-04/100242.htm Ubuntu 13.04 ...

  7. BDD敏捷开发入门与实战

    BDD敏捷开发入门与实战 1.BDD的来由 2003年,Dan North首先提出了BDD的概念,并在随后开发出了JBehave框架.在Dan North博客上介绍BDD的文章中,说到了BDD的想法是 ...

  8. Python爬虫开发与项目实战

    Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...

  9. Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

    Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)    转 https://blog.csdn.net/lhl1124281072/article/details/800 ...

  10. Web项目开发介绍及实战项目介绍

    引言 本系列课程我们将学些Golang语言中的Web开发框架Iris的相关知识和用法.通过本系列视频课程,大家能够从零到一经历一个完整项目的开发,并在课程中了解实战项目开发的流程和项目设涉及的各个模块 ...

随机推荐

  1. 链表的问题,ListNode问题

    算法面试,有关ListNode的问题 class ListNode{ ListNode *next; int val; ListNode(int x): val(x){}}; 在面试的时候,怎么快速想 ...

  2. 【转】log4js在PM2的cluster模式下大坑

    请直接查看原文:https://blog.yourtion.com/fix-log4js-with-pm2-not-work.html 之前一直使用 debug 还有 console.log 去打日志 ...

  3. Atcoder Regular Contest 092 A 的改编

    原题地址 题目大意 给定平面上的 $n$ 个点 $p_1, \dots, p_n$ .第 $i$ 点的坐标为 $(x_i, y_i)$ .$x_i$ 各不相同,$y_i$ 也各不相同.若两点 $p_i ...

  4. Gym 100971B 水&愚

    Description standard input/output Announcement   Statements A permutation of n numbers is a sequence ...

  5. php合并图片

    <?php class image{ /** * @param string $backgroundImage 背景图 * @param string $smallImage 小图 * @par ...

  6. linux之stat

    stat指令:文件/文件系统的详细信息显示: 使用格式:stat 文件名 stat命令主要用于显示文件或文件系统的详细信息,该命令的语法格式如下: -f 不显示文件本身的信息,显示文件所在文件系统的信 ...

  7. BZOJ 2146 Construct

    Construct [问题描述] 随着改革开放的深入推进…… 小T家要拆迁了…… 当对未来生活充满美好憧憬的小T看到拆迁协议书的时候,小T从一位大好的社会主义青年变成了绝望的钉子户. 由于小T的家位于 ...

  8. 从数据库的表导出到Excel表格中【让客户端下载的Excel】

    原文发布时间为:2008-10-11 -- 来源于本人的百度文章 [由搬家工具导入] 这个例子是从gridview中导出到Excel,可以举一反三,可以直接从数据库中取值放在DataSet中,然后再从 ...

  9. display的32种写法

    你知道『回』字有四种写法,但你知道display有32种写法吗?今天我们一一道来,让你一次性完全掌握display,从此再也不用对它发愁. 从大的分类来讲,display的32种写法可以分为6个大类, ...

  10. Turn on and off trigger events 生效控制

    平台 Qualcomm 解說 Qualcomm 平台的 Turn-on event 有 KYPD_PWR_N,CBL_PWR_N,.... 也有 PMIC reset and power-off ev ...