• [Android] 环境优化配置Android Studio发展NDK


    ========================================================
    作者:qiujuer
    博客:blog.csdn.net/qiujuer
    站点:www.qiujuer.net
    开源库:Genius-Android
    转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42040963
    ========================================================

    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

    主文件调用:


    如今点击执行:


    能够看见是很easy的。这个调用能够说是我操作过最简单的了;甚至于生成 .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
    博客:blog.csdn.net/qiujuer
    站点:www.qiujuer.net
    开源库:Genius-Android
    转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42040963
    ========================================================

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    day54——Python 处理图片
    day53——Python 处理 Excel 数据
    day52——Python 处理附件
    day51——爬虫(一)
    大数据治理体系简谈
    redis环境的安装
    微服务体系操作日志如何记录?
    mysql数据库设计规范
    win系统下git代码批量克隆,批量更新
    java实现二维码登录功能
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4638023.html
Copyright © 2020-2023  润新知