如何在android使用已经有的静态库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在android使用已经有的静态库相关的知识,希望对你有一定的参考价值。

关于编译静态库:
android.mk和xxx.cpp放在新文件夹里:
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \xxx.cpp
LOCAL_MODULE:= libx
include $(BUILD_STATIC_LIBRARY)
生成静态库libx.a文件

关于链接静态库:
有两种方法:
1、把libx.a文件放在android.mk同一目录下,添加:
LOCAL_PREBUILT_LIBS += libx.a
2、同上,添加:
include $(CLEAR_VARS)LOCAL_MODULE := libxLOCAL_SRC_FILES := libx.ainclude $(PREBUILT_STATIC_LIBRARY)LOCAL_STATIC_LIBRARIES += libx
貌似第二种是NDK里比较常见,第一种在其他的android.mk里比较常见。
参考技术A 引用配置就行

如何在 android 应用程序中使用现有的 Sip Stack 库?

【中文标题】如何在 android 应用程序中使用现有的 Sip Stack 库?【英文标题】:how to use existing Sip Stack libraries in android application? 【发布时间】:2012-03-21 11:18:29 【问题描述】:

我正在开发一个 SIP 应用程序来简单地拨打和接听电话。为此,我必须添加现有的 SIP 堆栈库以支持 SIP 呼叫。许多 sip 堆栈库在开源中可用,例如 mjsip、doubango 等,但我的问题是如何在我们的应用程序中实现这些库?

我想开发可以在 Android 2.3.3 及更高版本中支持的应用程序。

Android 2.3.3 支持 SIP,但我面临的问题是我的应用程序只能在 wi-fi 网络上运行。在 3G、GPRS 和 EDGE 网络中它不起作用。这就是我想使用外部 sipstack 库的原因。有什么好的例子或教程吗?

【问题讨论】:

【参考方案1】:

您可以查看已经这样做的开源项目:

CSipSample

SipDroid

【讨论】:

谢谢,但我已经看过 SipDroid 项目,但我无法理解 Sip 库的实现。我的意思是我应该导入 SIP 库(MjSip 或 Dobango)的包,然后使用它的方法吗?还是有其他的实现方式? 你不明白的地方能再具体点吗?是JNI吗?资源在项目中的组织方式? JNI 是 Java 代码和本机代码(C、C++)之间的层。它依赖于本地关键字和静态方法。在您的应用程序中,您将仅使用 Java 方法和类。您需要将 C/C++ 源代码编译为动态库,即 .so 文件。这就是您在 AipDroid 和 CSipSimple 中看到 C 源代码和 makefile 的原因。

以上是关于如何在android使用已经有的静态库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 应用程序中使用现有的 Sip Stack 库?

NDK下如何使用第三方静态库?

Android NDK编译如何强制使用libc++.a的静态链接库

如何在Xcode中使用静态库

如何在android studio中用JNI调用静态库

如何将现有的 Android Studio 项目连接到现有的 Github 存储库