zoukankan      html  css  js  c++  java
  • 用NDK生成so给第三方用

     参考了https://blog.csdn.net/zi413293813/article/details/50074239 然后自己重新整理补充

    我用的ndk-r10d

    ndk下载地址http://developer.android.com/sdk/ndk/index.html

    eclipse 开发环境

    1、用eclipse创建一个android项目

    2、选中项目右键->Properties->Builders->New->选中Program 点击OK->各种配置文字太难描述直接上图

    配置了ndk-build 的路径还有刚刚创建的那个android项目

    打勾

    Specify Resources 浏览找到刚刚创建的android项目就可以了,项目配置就这些

    在src目录先创建一个class文件,内容如下

    public class JniClient {
        static public native String AddStr(String strA, String strB);
        static public native int AddInt(int a, int b);
    }
    

    找到JniClient.java(刚刚创建的那个类)所在位置,右键打开cmd或者powershell 执行命令javac JniClient.java

    在项进入到src磁盘目录右键打开cmd或者powershell 执行命令 javah com.example.mtest.JniClient (这个需要根据自己项目实际路径而定)

    这样就生成了com_example_mtest_JniClient.h 头文件内容就不展示了,最前面连接地址里面有

    然后手动创建一个com_example_mtest_JniClient.c 最前面连接地址里面有 ,编辑器有问题贴不出来

    把这个头文件和源文件剪切到 jni 目录(项目根目录下 没有就自己创建)

    在jni目录里面添加一个Android.m

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE :=_SRC_FILES := com_example_mtest_JniClient.c
    include $(BUILD_SHARED_LIBRARY)

    以及Application.mk

    #使用STL库
    APP_STL := gnustl_static
    #兼容老的语法,使一些错误降为警告
    APP_CPPFLAGS += -fpermissive
    #选择平台,如果都需要生成用空格隔开
    APP_ABI := armeabi armeabi-v7a 

    刷新项目就会在lib目录生成对应的 so 文件

    下面写一下如何使用刚刚生成的so库

    重新新建一个android 项目 我这里用的是cocos2d-x的一个游戏项目 

    把生成的so放到新的android项目的jni目录下

    在这个新项目Android.mk里面添加如下内容

     include $(CLEAR_VARS)
    LOCAL_MODULE := libTestNdk
    LOCAL_SRC_FILES := TestNdk/$(TARGET_ARCH_ABI)/libTestNdk.so
    include $(PREBUILT_SHARED_LIBRARY)

    LOCAL_STATIC_LIBRARIES += libTestNdk

    还不能直接使用,回到第一个创建的android项目 把JniClient.java这个文件打成一个jar包

    我是在src目录下powershell里面执行jar -cvf mtest.jar comexamplemtestJniClient.class

    生成mtest.jar包 ,不过bin目录里面好像有自动生成

    把这个jar包放入第二个项目lib里面,在appactivity里面添加如下代码

    然后在onCreate()方法里面调用

    在手机上运行项目可以看到如下输出

    .748: I/System.out(5703): ...abelmou...HelloWorld from JNI !

    说明调用成功,写得有点乱方便自己回顾

  • 相关阅读:
    CodeForces 288A Polo the Penguin and Strings (水题)
    CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
    CodeForces 289A Polo the Penguin and Segments (水题)
    CodeForces 540C Ice Cave (BFS)
    网站后台模板
    雅图CAD
    mbps
    WCF学习-协议绑定
    数据库建表经验总结
    资源位置
  • 原文地址:https://www.cnblogs.com/abelmou/p/8992176.html
Copyright © 2011-2022 走看看