文档章节

[Android] 环境配置之Android Studio开发NDK

Qiujuer
 Qiujuer
发布于 2014/12/21 20:16
字数 997
阅读 1173
收藏 58

========================================================
作者:qiujuer
博客:my.oschina.net/u/1377710
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://my.oschina.net/u/1377710/blog/359000
========================================================

NDK 开发哪家强?XX XX 找 Blue Fly.

说到 NDK 开发,其实是为了有些时候为了项目需求需要调用底层的一些 C/C++ 的一些东西;另外就是为了效率更加高些。

但是很多时候能不用就不用;这个是啥原因?个人感觉有些时候是觉得麻烦,首先要配置 NDK 还要 下载 Cygwin ,配置 Cygwin ,然后需要编译生成,哎太麻烦了。如果你说使用 Eclipse,的确这样在编译上是能简单很多,但是前期也是需要配置一大堆;哎,配置错了还伤不起。

现在谷歌主力推动 Android Studio 这个是个不错的工具,至少现在来看在 Eclipse 上能做到的 这边都有,这边有的Eclipse上不一定有。

下面来说说 在 Android Studio 中怎么进行 NDK 的开发。

准备工作

Android Studio 环境搭建

在我的上一篇文章 [Android] 环境配置之正式版Android Studio 1.0 中有介绍了。

NDK 环境搭建

都是可执行文件,下载后点击即可解压到当前文件夹;当然你可以使用命令行来进行跨文件夹解压的。

建立一个项目 NDKDemo:

建立对应的类,在 MathKit 中我们实现计算 INT 值的平方数。

public class MathKit {
    public static native int square(int num);

    static {
        System.loadLibrary("JniDemo");
    }
}
StringKit 这个就是充数用的:
public class StringKit {
    public static native void setNull(String str);
    static {
        System.loadLibrary("JniDemo");
    }
}

准备 .h 文件

进入Java目录;CMD 进入该目录进行 javah 操作:

这个想必大家并不陌生吧,该文件就是 java 类对应的 头文件,当然如果你比较厉害的话可以不用这样生成,自己敲代码完成也行;反正我是不行。

如下,建立文件夹:

拷贝之前的文件进去:

分别实现:

net_qiujuer_ndkdemo_jni_MathKit.cpp

#include <net_qiujuer_ndkdemo_jni_MathKit.h>

JNIEXPORT jint JNICALL Java_net_qiujuer_ndkdemo_jni_MathKit_square
  (JNIEnv *env, jclass cls, jint num)
  {
        return num*num;
  }
net_qiujuer_ndkdemo_jni_StringKit.cpp
#include <net_qiujuer_ndkdemo_jni_StringKit.h>

JNIEXPORT void JNICALL Java_net_qiujuer_ndkdemo_jni_StringKit_setNull
  (JNIEnv *env, jclass obj, jstring str)
  {

  }

设置项目

设置根目录中的:local.properties

该设置不是必须,如果你设置了环境变量则可不用设置;如果没有但是又没有设置将会出现:


设置 APP 项目 build.gradle

该设置是为了设置生成的Jni名称为:JniDemo

主文件调用:

现在点击运行:

可以看见是非常简单的;这个调用可以说是我操作过最简单的了;甚至于生成 .H 文件都可以编辑 .sh 文件来进行批处理(这个后面有时间再说).


更多

在平时的那些操作中我们不可避免的要建立:

Android.mk

LOCAL_PATH		:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := genius
LOCAL_SRC_FILES := net_qiujuer_imageblurring_jni_ImageBlur.cpp
LOCAL_LDLIBS    := -lm -llog -ljnigraphics

include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI		:= all
APP_PLATFORM:= android-19
APP_OPTIM	:= release
而这里这两个文件都没有建立,那么是怎么决定的呢?

我们可以在 ndk 的 modelName 上按住 Ctrl 进行点击将会出现这个界面:



这些就是全部能够设置的参数。分别对应:

ndk{
            moduleName "JniDemo" // 设置生成的文件名
            cFlags "-DANDROID_NDK -D_RELEASE" //这个对应的是生成模式
            ldLibs "m", "log", "jnigraphics" //这个对应 LOCAL_LDLIBS 但是需要去掉前面的 “l”
            abiFilters "all" //这个是对应的 APP_ABI
            stl "stlport_shared" //这个对应的是 APP_STL 
        }

好了,就这些祝大家成功。项目打包上传。

本次项目点击这里下载。

========================================================
作者:qiujuer
博客:my.oschina.net/u/1377710
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://my.oschina.net/u/1377710/blog/359000
========================================================

© 著作权归作者所有

共有 人打赏支持
Qiujuer

Qiujuer

粉丝 138
博文 26
码字总数 60206
作品 2
深圳
程序员
私信 提问
加载中

评论(8)

Qiujuer
Qiujuer

引用来自“suyoung21”的评论

为什么我的只会生成.h的文件,.cpp文件怎么生成
自动生成是 只生成.H文件的,如果需要.CPP文件需要自己根据生成的.H文件写。希望能帮助到你。
s
suyoung21
为什么我的只会生成.h的文件,.cpp文件怎么生成
Jay__qiu
Jay__qiu
正在转studio30
Maxium_R
Maxium_R
涨姿势了
Qiujuer
Qiujuer

引用来自“hanxi”的评论

windows需要配置cygwin吗?
这个是不需要的;只需要一个最新的 NDK 就OK;当然 是使用 Android Studio 的情况下。
hanxi
hanxi
windows需要配置cygwin吗?
丹鹰
丹鹰
ggg
tnjin
tnjin
赞一个,正在转向studio
在android studio中集成javah, ndk-build进行JNI开发

最近在搞一个android上控制LED灯闪烁的功能,用到了串口编程,搜索了一下,发现Google发布了一个demo,android-serialport-api。有现成的代码和APK,要想自己改JNI也比较简单,就一个C文件。...

LeoLiang
08/04
0
0
最新靠谱可用的 Mac 环境下 FFmpeg 环境搭建

大家好,我是光源。 最近在尝试搭建 FFmpeg 开发环境时遇到一个蛋疼的事,Google 了 N 篇文章竟然没有一篇是可以跑起来的! 少部分教程是给出了自我矛盾的配置(是的,按照贴出来的代码和配置...

光源_Android
05/13
0
0
Cocos2d-x 3.4在AndroidStudio上编译配置

1.准备好以下文件   1) AndroidStudio: https://dl.google.com/dl/android/studio/install/1.1.0/android-studio-bundle-135.1740770-windows.exe   2) NDK:https://dl.google.com/and......

simpower
2015/07/31
0
0
React Native Android 源码分析之前期准备

前言 React Native 是目前最流行的跨平台框架,并且是 Facebook 团队开源的项目。架构及实现技术上都有很高的研究价值,本系列就来分析一下 React Native 的一些核心代码。 此系列文章针对的...

骑摩托马斯
07/09
0
0
Android应用开发相关下载资源

官方终于发布了Android Studio正式版,Android Studio将会成为推荐使用的主要Android开发工具. (1)Android SDK (Android SDK主安装包,包含SDK Manager、AVD Manager、工具包tools,释放后的...

吴斌大大
2015/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Gradle 提速:每天为你省下一杯喝咖啡的时间

摘要: ### 前言 作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。比如: ![](https://user-gold-cdn.xitu.io/2018/11/6/166e7021c0...

阿里云官方博客
13分钟前
0
0
在 PHPStorm 中如何对远程服务使用 xdebug 进行断点调试

1. 安装 xdebug 1.1. 下载、安装 ➜ ~ wget https://xdebug.org/files/xdebug-2.4.1.tgz➜ ~ tar zxf xdebug-2.4.1.tgz➜ ~ cd xdebug-2.4.1➜ ~ phpize➜ ~ ./configure --with-ph......

whoru
15分钟前
1
0
看完这篇文章还不懂Python装饰器?

1、必备 2.需求来了 初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作、redis调用、监控API等功能。业务部门使用基础功能时,只需调用基础平台提供的功...

糖宝lsh
21分钟前
3
0
Bytom合约预编译

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在开发合约的过程中你们有没有遇到一些问题呢?比如编译合约的过程中不能...

比原链Bytom
22分钟前
2
0
supervisor安装配置

supervisor安装配置 安装 wget -c https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gztar -zxvf su......

jackmanwu
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部