android开发源码分析--多个activity调用多个jni库的方法

 android开发源码分析--多个activity调用多个jni库的方法 

有时候,我们在开发android项目时会遇到需要调用多个native c/jni库文件,以下是本人曾经实现过的方法,如果有知道其他方法,还望不吝指教。

例如,在 android 工程里有两个 activity ,分别是 activity1 activity2 ,(可以进入工程目录 bin/classes 路径下查看有哪些),在这两个 activity 里都有调用 jni ,步骤如下:

1、  activity1activity2里分别声明native c

例如:activity1.java

private native String StringFromActivity1Jni();   

    static

    {

        System.loadLibrary("activity1");

}

Activity2.java

private native String StringFromActivity2Jni();

        

    static

    {

        System.loadLibrary("activity2");

}

2、  生成 .h文件

用命令:javah -classpath bin/classes/ -jni com.myprj.uitest.activity1javah -classpath bin/classes/ -jnicom.myprj.uitest.activity2 生成activity1activity2里的头文件

需要特别注意的是红色部分,一定要存在。可以进入工程目录bin/classes路径下查看。如果不能在jni下生成,那就mv吧。

3、  编写Android.mk文件:

LOCAL_PATH := $(call my-dir)     //只能有一个这个路径

include $(CLEAR_VARS)

LOCAL_MODULE    := activity1

LOCAL_C_INCLUDES += $(LOCAL_PATH) \

                      $(LOCAL_PATH)/android

LOCAL_SRC_FILES := activity1.c

LOCAL_LDLIBS    := -L$(LOCAL_PATH) -lm -lz -llog

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE    := activity2

LOCAL_C_INCLUDES += $(LOCAL_PATH) \

                      $(LOCAL_PATH)/android

LOCAL_SRC_FILES := activity2.c

LOCAL_LDLIBS    := -L$(LOCAL_PATH) -lm -lz -llog

include $(BUILD_SHARED_LIBRARY)

需要注意的是:include $(BUILD_SHARED_LIBRARY)是生成动态库,也可以生成静态库include $(PREBUILT_STATIC_LIBRARY)

4、 编译:
ndk-build


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值