我正在构建一个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将使用此路径。