我需要从源代码构建 TensorFlowLite Swift Framework/cocoapod,然后在其中一个 Swift 项目中使用它而不是原始框架。
下载了代码并在少数情况下按照说明进行操作,但没有成功:
1( https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/swift
a( 蟒蛇 configure.py
b(CocoaPods 开发人员不适用,因为它不会从本地 TensofFlow 文件夹中获取源代码(或者我弄错了?
c(巴泽尔开发商我愿意:bazel build tensorflow/lite/experimental/swift:TensorFlowLite
bazel test tensorflow/lite/experimental/swift:Tests --swiftcopt=-enable-testing
并最终
generate_xcodeproj.sh --genconfig tensorflow/lite/experimental/swift/TensorFlowLite.tulsiproj:TensorFlowLite --outputfolder ~/path/to/generated/TensorFlowLite.xcodeproj
结果,我得到了一个带有libtensorflow-lite-experimental-swift-TensorFlowLite.a和几个idx文件的项目。它编译并且我看到了 .a 文件(但由于各种原因,应用程序和测试都没有编译(,我不太明白如何将该 .a lib 与 Swift 文件一起使用,因为没有模块/标头等文件。
在所有这些练习之后,TensorFlow的根目录和experimental/Swift
文件夹中都有TensorFlowLiteSwift.podspec
。它仍然取决于TensorFlowLiteC
,如果我通过路径参数在另一个项目中引用这个podspec,我可以做import TensorFlowLiteC
但不能做import TensorFlowLiteSwift
/import TensorFlowLite
,我相信TensorFlowLiteC仍然取自互联网,而不是本地。
2( 自定义框架路径从这里: https://firebase.google.com/docs/ml-kit/ios/use-custom-tflite
以下是几个问题:
a( 如果我尝试只使用内部添加了 tensorflow_lite.framework 的项目,那么我无法在 Swift 文件中引用TensorFlowLite
/TensorFlowLiteC
等。 b( 如果我尝试遵循创建本地 pod 并引用 pod 项目的路线,那么pod install
不起作用,因为未设置强制参数(使用提供的示例(。
我希望得到一个从本地TensorFlowFiles构建的Xcode项目或工作区,我可以从其他项目中引用,如"import TensorFlowLiteSwift"或"import TensorFlowLite">
问题是我甚至不明白实现它的正确途径是什么。
谢谢。
好吧,我想出了答案:
-
从根 tensorflow 文件夹构建 TensorFlowLiteC 框架:
bazel build --config=ios_fat -c opt //tensorflow/lite/experimental/ios:TensorFlowLiteC_framework
- 结果可以在这里找到:
bazel-bin/tensorflow/lite/experimental/ios/TensorFlowLiteC_framework.zip
- 解压缩文件并将内容添加到新的 XCode 项目中(在我的例子中是 Swift Single Window App(。如果您通过拖放执行此操作,则XCode将自动更改框架,库和嵌入式内容部分,还将修改框架路径
- 将此设置"生成设置\链接\其他链接器标志"更改为
-lc++
-
做。你可以做
import TensorFlowLiteC
- ,然后使用
swift
文件夹中的源文件。