在iOS Cordova插件中为第三方Lib定义库搜索路径

时间:2017-06-12 18:46:13

标签: ios xcode cordova xcode8 cordova-plugins

我正在构建一个Cordova插件,以便与我无法修改的第三方库进行交互。该库包含两个单独的.a文件:一个将为iOS模拟器构建并为设备构建的文件。对目标使用错误的将导致构建失败。

我已将两个库添加到插件中的单独文件夹中(因为它们的名称相同)。将插件添加到项目后,Cordova会为每个库添加单独的库搜索路径。不幸的是,这意味着首先列出的路径是项目构建时包含的路径。这意味着我必须告诉我的插件用户“进入设置,在标签Y上找到X字段,切换这两个项目的顺序。”

Xcode能够在路径中使用变量替换,但我找不到任何有关如何使用包含替换的路径覆盖Cordova生成的搜索路径的信息。

以下是我的插件的plugin.xml文件中包含库的代码:

<platform name="ios">
    ...
    <header-file src="src/ios/lib/FooLibrary.h" />
    <source-file src="src/ios/lib/libFooLibrary.a" framework="true" target-dir="iphoneos" />
    <source-file src="src/ios/lib/simulator/libFooLibrary.a" framework="true" target-dir="iphonesimulator" />
</platform>

这将在包含项目中生成以下库搜索路径:

"$(SRCROOT)/PluginDemoApp/Plugins/cordova-plugin-foolib/iphoneos"
"$(SRCROOT)/PluginDemoApp/Plugins/cordova-plugin-foolib/iphonesimulator"

而不是那两条路径,我需要它只生成这条路径:

"$(SRCROOT)/PluginDemoApp/Plugins/cordova-plugin-foolib/${PLATFORM_NAME}"

我已经在Xcode中手动将此路径添加到包含项目,并验证用PLATFORM_NAME替换将导致Xcode使用适当的库来定位任何平台。我只是无法弄清楚如何配置我的插件,以便当插件添加到项目时Cordova将使用此路径。

0 个答案:

没有答案