在 Android 上运行 Objective-C 静态库

Posted

技术标签:

【中文标题】在 Android 上运行 Objective-C 静态库【英文标题】:run objective-c static library on Android 【发布时间】:2013-11-27 08:57:05 【问题描述】:

如何为 android 应用程序运行带有 ios 依赖项的 Objective-c 静态库“.a”? 细节: 我们有带有objective-c 框架的iOS 项目(在java 上定制并且没有类似物)。它应该在安卓上运行。 Android NDK 无法与 iOS 依赖项一起运行 - 这是一个主要问题

【问题讨论】:

是什么让您认为这完全有可能?您应该编写了一个可供 iOS 和 Android 使用的 C/C++ 框架。 我有这个框架的 .h 和 .cpp 文件。我们应该依赖这个库。或者我们可以创建静态“.a”库来使用它们。问题:如何? Apportable 已关闭。请参考这个帖子解决问题:***.com/questions/14477768/… 【参考方案1】:

您不能直接将目标 c 库添加到 android 项目,但您可以尝试使用此工具:http://www.apportable.com,它可以让您在 android 上运行目标 c 代码。

【讨论】:

转换成apk文件的工具。 是的,这是将客观 c 代码用于 android 的唯一方法。如上所述,您不能将objective-c 库直接链接到android 项目。关于该选项,它是一个选项,因为您想要的选项不存在(并且它在技术上不存在,因为 android 不“理解”objective-c 代码。如果您愿意,您可以为您的库迁移到 C/C++。跨度> 是的,我有这个框架的 .h 和 .cpp 文件。但是他们依赖于 iOS 库——这是一个主要问题。也许excist一些带有ios库的工具 如前所述,您不能。你必须只使用在 android 上运行的 c/c++ 头文件来编写整个库。 Apportable 已经倒闭了。【参考方案2】:

您将无法获取为 iOS 构建的静态库并直接在 Android 上使用它。

但是,如果您的库包含主要使用 Foundation 或 CoreFoundation 框架的 Objective C 代码,您可以使用 GNUstep Android toolchain 为 Android 编译库。

请注意,如果您的库使用其他 iOS 特定框架(如 UIKit),这将不起作用。

【讨论】:

以上是关于在 Android 上运行 Objective-C 静态库的主要内容,如果未能解决你的问题,请参考以下文章

com.android.camera.action.CROP 在objective-c 中?

使用支持 Objective-C 的 gcc 错误编译 Android NDK

Objective-C Mapview在IPA上崩溃(appstore版本)Xcode 9运行良好[重复]

使用 JUniversal 翻译 Android 项目

QT运行objective-c代码

在 Objective-C 中的 iOS 6 上强制横向方向