Add Pod dependency to a cordova plugin
我目前正在构建一个Ionic 3项目,我需要开发一个自定义的Cordova插件,该插件需要一个适用于iOS平台的Pod(https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library)。
我添加了
行
1 | <framework src="iOSDFULibrary" type="podspec" spec="4.1.0"/> |
到plugin.xml文件中,
的子元素
1 | <platform name="ios"> |
它似乎并没有安装Pod依赖性。然后创建podfile,将所需的pod添加到podfile
1 2 3 4 | target 'MyApp' do use_frameworks! pod 'iOSDFULibrary' end |
并最终运行pod安装。我修复了Xcode的一些依赖项问题(对于嵌入式库和运行路径,使用$(继承))
然后我运行
1 | ionic cordova build ios |
从根目录directoy出现以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ProcessProductPackaging"" /Users/XXX/Library/Developer/Xcode/DerivedData/MyApp-cnmgcjqxsbizwzgzyunkhpaidafn/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Zip.build/Zip.framework.xcent cd /Users/XXX/Documents/dev/app/test/ble/ble/last/platforms/ios/Pods export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/XXX/Documents/dev/app/test/ble/ble/last/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/Cellar/android-sdk/24.1.2/tools:/usr/local/Cellar/android-sdk/24.1.2/platform-toolsa‰?" builtin-productPackagingUtility -entitlements -format xml -o /Users/XXX/Library/Developer/Xcode/DerivedData/MyApp-cnmgcjqxsbizwzgzyunkhpaidafn/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Zip.build/Zip.framework.xcent warning: Falling back to contents of entitlements file"Entitlements-Debug.plist" because it was modified during the build process. Modifying the entitlements file during the build is unsupported.error: The file a€?Entitlements-Debug.plista€? couldna€?t be opened because there is no such file. === BUILD TARGET CordovaLib OF PROJECT CordovaLib WITH CONFIGURATION Debug === Check dependencies Write auxiliary files /bin/mkdir -p /Users/XXX/Documents/dev/app/test/ble/ble/last/platforms/ios/build/sharedpch/CordovaLib_Prefix-asuvblhsjpogpaeowyccynwoocft write-file /Users/XXX/Documents/dev/app/test/ble/ble/last/platforms/ios/build/sharedpch/CordovaLib_Prefix-asuvblhsjpogpaeowyccynwoocft/CordovaLib_Prefix.pch.pch.hash-criteria write-file /Users/XXX/Library/Developer/Xcode/DerivedData/MyApp-cnmgcjqxsbizwzgzyunkhpaidafn/Build/Intermediates.noindex/CordovaLib.build/all-product-headers.yaml ** BUILD FAILED ** The following build commands failed: ProcessProductPackaging"" /Users/XXX/Library/Developer/Xcode/DerivedData/MyApp-cnmgcjqxsbizwzgzyunkhpaidafn/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Zip.build/Zip.framework.xcent (1 failure) Error: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/XXX/Documents/dev/app/test/ble/ble/last/platforms/ios/cordova/build-debug.xcconfig,-workspace,MyApp.xcworkspace,-scheme,MyApp,-configuration,Debug,-sdk,iphonesimulator,-destination,platform=iOS Simulator,name=iPhone SE,build,CONFIGURATION_BUILD_DIR=/Users/XXX/Documents/dev/app/test/ble/ble/last/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Users/XXX/Documents/dev/app/test/ble/ble/last/platforms/ios/build/sharedpch |
第一个问题:如何将用swift编写的Cocoapod绑定到用swift编写的自定义插件?
第二个问题:ProcessProductPackaging是什么意思?
Documentations
https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html
如何将Cocoapod依赖项与Cordova插件捆绑在一起?
https://github.com/blakgeek/cordova-plugin-cocoapods-support
感谢任何建议
查看此文档
科尔多瓦规格
与type =" podspec"配对,这是您要安装的CocoaPod的规范字符串(仅静态库)。 CocoaPod支持仅在cordova-ios 4.3.0和cordova-cli 6.4.0中存在。对于您的插件,请确保添加适当的标签和package.json依赖项,以确保向后兼容。
将此添加到您的plugin.xml
1 2 3 4 5 | <engines> <engine name="cordova" version=">=7.0.0" /> <engine name="cordova-android" version=">=6.3.0" /> <engine name="cordova-ios" version=">=4.4.0" /> </engines> |
和您的package.json文件
1 2 3 4 5 6 7 8 9 | "engines": { "cordovaDependencies": { "1.0.0": { "cordova-ios":">=4.4.0", "cordova-android":">6.3.0", "cordova":">=7.0.0" } } }, |
1.0.0应该是您的cordova插件版本。
最后也是最重要的一点,请确保全局更新为node和cordova的最新版本。
还将您的IOS项目更新为最低支持版本。