android开发源代码分析--多个activity调用多个jni库的方法
android开发源代码分析--多个activity调用多个jni库的方法
有时候,我们在开发android项目时会遇到须要调用多个native c/jni库文件,下面是本人以前实现过的方法,假设有知道其它方法,还望不吝不吝赐教。
比如,在androidproject里有两个activity,各自是activity1和activity2。(能够进入project文件夹bin/classes路径下查看有哪些)。在这两个activity里都有调用jni,过程例如以下:
1、 在activity1和activity2里分别声明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.activity1和javah
-classpath bin/classes/ -jnicom.myprj.uitest.activity2 生成activity1和activity2里的头文件
须要特别注意的是红色部分。一定要存在。能够进入project文件夹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
android开发源代码分析--多个activity调用多个jni库的方法的更多相关文章
- Android深入源代码分析理解Aidl总体调用流程(雷惊风)
2017年開始上班的第一天.老不想工作了,假期感觉还没開始就已经结束了,唉,时间就是这样,新的一年開始了,尽管非常不想干正事,没办法,必须干起来.由于后边的路还非常长,距离六十岁还非常远. 刚上班也没 ...
- Android HandlerThread 源代码分析
HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后.线程就会被自己主动销毁了.假设此时我又有一 个耗时任务须要运行,我们不得不又 ...
- Android 消息处理源代码分析(1)
Android 消息处理源代码分析(1) 在Android中,通常被使用的消息队列的代码在文件夹\sources\android-22\android\os下,涉及到下面几个类文件 Handler.j ...
- Android HttpURLConnection源代码分析
Android HttpURLConnection源代码分析 之前写过HttpURLConnection与HttpClient的差别及选择.后来又分析了Volley的源代码. 近期又遇到了问题,想在V ...
- Android KLog源代码分析
Android KLog源代码分析 Android KLog源代码分析 代码结构 详细分析 BaseLog FileLog JsonLog XmlLog 核心文件KLogjava分析 遇到的问题 一直 ...
- Android 消息处理源代码分析(2)
Android 消息处理源代码分析(1)点击打开链接 继续接着分析剩下的类文件 Looper.java public final class Looper { final MessageQueue m ...
- Appium Android Bootstrap源代码分析之启动执行
通过前面的两篇文章<Appium Android Bootstrap源代码分析之控件AndroidElement>和<Appium Android Bootstrap源代码分析之命令 ...
- Android开发艺术探索笔记之Activity
内容来源:Android开发艺术探索第一章:Activity的生命周期与启动模式 不能在onPause中做重量级的操作,因为必须执行完成以后新Activity才能Resume.onPause和onSt ...
- Android AsyncTask 源代码分析
AsyncTask源代码分析 public abstract class AsyncTask<Params, Progress, Result> { //日志TAG private sta ...
随机推荐
- iOS开发-模拟器的小常识
/* 补充: 让模拟器锁屏: command + l */ 让模拟器变大变小 打开Xcode模拟器,选择Window->Scale->
- poi 抽取execl表面数据源代码工具
开发中 ,导入导出execl避免不了数据类型格式的校验,在使用poi要使用抽取表面数据,poi暂时不支持单元格抽取,查询poi源码抽取工具类如下,如使用jxl就不必使用,jxl取出的单元格数据已是抽取 ...
- Jar/War/Ear等包的作用与区别详解
以客户角度来看,jar文件就是一种封装格式,用户不需要知道jar包中有多少个.class格式的文件及每个文件中的功能与作用,也可以得到相应的访问的结果.java中除了jar格式还有war和ear等包文 ...
- RabbitMQ(二):mandatory标志的作用
本文转自:http://m.blog.csdn.net/article/details?id=54311277 在生产者通过channel的basicPublish方法发布消息时,通常有几个参数需要设 ...
- 未找到与约束ContractName,无法打开项目的解决方案
如果VS2013,在打开解决方案时,报如下错误: “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAt ...
- plot sin 04 坐标轴居中
plot sin 04 坐标轴居中 code #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import matpl ...
- [sz,rz]使用sz/rz在两台Linux设备之间传输数据
转自:https://superuser.com/questions/604055/using-rz-and-sz-under-linux-shell zsend #!/bin/sh DEV=/dev ...
- strerror() 和perror()函数
在linux编程中,strerror()是个好东东,因为一个孤零零的errno看不出个所以然,然而strerror()返回的错误描述已经给我们解决问题提供了80%的成功率.但从安全性的角度来讲,str ...
- java——关于异常处理机制的简单原理和应用2(转)
Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: public class Ex ...
- hadoop上线和下线节点
在运行中的ambari hadoop集中中动态添加或删除节点 1. 下线节点1) namenode节点上dfs.exclude文件,看配置文件怎么配置的,里每行添加一个服务器名,如我要下线server ...