zoukankan      html  css  js  c++  java
  • android studio的jni和so

    1. android studio自己添加代码生成so

    代码地址:https://github.com/maogefff/Android-Test-Sample/tree/master/MyJni

    参考资料:https://www.2cto.com/kf/201607/526887.html

         http://blog.csdn.net/yanbober/article/details/45310589   (jni用法实例)

    注意两点:(不然都生成不了so文件)

    1. 名字之间不要有空格

    2. 生成的so名字不要跟JAVA类重名

    步骤1:修改ndk的路径(其实也可以不修改,使用默认下好的就行)

    ndk.dir=E:\AndroidStudio\android-ndk-r14b

    步骤2:

    android.useDeprecatedNdk=true

     步骤3:

    ndk{
                moduleName "myjniso"         //生成的so名字
    //            abiFilters = ['armeabi']
                abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。
            }

    步骤4:添加一个JAVA类,然后make project;这个时候在中间文件MyJniappuildintermediatesclassesdebug就会产生相应的类

    步骤5:进入中间文件,使用javah,就会在当前文件夹下产生.h文件

    F:	estMyJniappuildintermediatesclassesdebug>cd F:	estMyJniappuildintermediatesclassesdebug

    javah com.example.myjni.JniTest

    注意:在这一步不一定能成功,我之前这样操作没问题,但是在重装系统以后就不行了,不同版本的JDK的javah有一定的差别:(2017.12.13)

    JDK1.8的使用为:

    C:UsersaplexDesktop1Android-Test-SampleMyJniappuildintermediatesclassesdebug>javah -classpath . com.example.myjni.JniTest

    步骤6: 在源码src下新建立一个jni文件夹,将.h头文件拷贝进去,然后写一个.c文件,去实现.h里面的函数

     

    #include "com_example_myjni_JniTest.h"
    
    JNIEXPORT jstring JNICALL Java_com_example_myjni_JniTest_HelloJni
    (JNIEnv * env, jobject obj){
      return (*env)->NewStringUTF(env,"HelloJni");
    }

    步骤7: 编译后生产so文件了

    2. 直接使用已经编写好的so文件

    接着上面的步骤

    步骤1: 删除app下的build目录,然后重启android studio

    步骤2:如果是使用别人的so,则自己写一个java类一定要和so文件名对应的上

    步骤3:建立jniLibs文件夹,将之前build目录下的so拷贝进来

    步骤4:删除gradle下面的ndk生成so或者换一个名字

  • 相关阅读:
    英语apyrite红碧玺apyrite单词
    英语SouthRedAgate南红玛瑙
    英语kutnahorite金田黄kutnahorite单词
    英语chalchite蓝绿松石chalchite单词
    单词demantoite翠榴石demantoite英语
    英语fieldyellowstone田黄石fieldyellowstone单词
    Http通讯Util
    redis分布式锁工具类
    永不重复的id生成器
    二维码生成工具类
  • 原文地址:https://www.cnblogs.com/maogefff/p/8021795.html
Copyright © 2011-2022 走看看