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 作为项目的一部分。步骤是:
- 添加 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
将MyFramework.framework复制到native/ios/podspecs
构建提示:
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"
开始
我需要使用代号为 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 作为项目的一部分。步骤是:
- 添加 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
将MyFramework.framework复制到native/ios/podspecs
构建提示:
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"
开始