iOS 动态库.framework in Codename One 原生界面

iOS Dynamic library .framework in Codename One native interface

我需要使用代号为 iOS .framework 的动态库,但我没有找到合适的说明。

在开发人员指南(部分:https://www.codenameone.com/manual/advanced-topics.html#_bundling_native_ios_sdk)中有以下提示,但似乎没有用:

Find the "binary" file within the framework, and copy it into your native/ios directory - but rename it libXXX.a (where XXX is the name of the binary).

Copy all .h files from the framework into your native/ios directory.

Update all #import statements in the headers from #import format to simply #import "FileName.h"

*.framework 不包含静态库而是包含动态库时(如 How to create static library from an existing framework in iOS? 的答案中所建议),这不起作用。

在 iOS8 之前,所有 .framework 文件仅包含静态库,但从 iOS8 开始,Apple 允许开发人员创建动态框架(如 [=16= 中所报告) ]).

恐怕我们从未使用过 iOS 动态库框架,因为 cocoapods 变得普遍并且接管了使用框架的需求消失了。框架是有问题的,因为它们不能与 PC 开发人员共享,因为它们内部有符号链接等。因此将它们作为构建过程的一部分发送是有问题的。

大多数需要创造性解决方案的案例都创建了自定义广告连播。

更新答案:

从下一次更新(下周五)开始,您将能够通过简单地压缩框架并将其添加到项目的 native/ios 目录来包含 iOS 框架。例如。 native/ios/MyFramework.framework.

您仍然可以选择创建自定义 podspec 作为项目的一部分。步骤是:

  1. 添加 native/ios/podspecs/MyFramework.podspec 内容:
Pod::Spec.new do |s|
  s.name                    = "MyFramework"
  s.version                 = "1.0.0"
  s.summary                 = "MyFramework framework"
  s.description             = "This spec specifies a vendored framework."
  s.platform                = :ios
  s.homepage                = "https://www.codenameone.com"
  s.source                  = {:path => "."}
  s.author                  = "Codename One"
  s.vendored_frameworks     = "MyFramework.framework"
end
  1. 将MyFramework.framework复制到native/ios/podspecs

  2. 构建提示:

ios.pods=MyFramework

此解决方法并不完美,因为该项目可能无法移植到 Windows(但它应该适用于 Linux 和 Mac)。新方法(压缩框架并添加到 native/ios)是 100% 可移植的。

原答案:

对于框架,您可以将它们放在自定义的 podspec 中。这是一个示例 Codename One 项目,它定义了一个自定义的 podspec。 https://github.com/shannah/TestCustomPodspec

注意,您需要做的就是在您的项目中创建一个 native/ios/podspecs 目录,然后您可以将您的自定义 podspec 放在那里。您可以使用 ios.pods 构建提示引用您的 podspec。

有关在 Podspec 中打包 .framework 的信息,this article 看起来非常有用,从 "Consume Framework Using Local CocoaPods"

开始