I am trying to build my MFP cordova Ionic based hybrid application created using CLI. It works perfect for android but it fails when I try to build it for iOS. There are multiple errors which I am facing
xcodebuild[14887:399060] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/VVDocumenter-Xcode.xcplugin' not present in DVTPlugInCompatibilityUUIDs
I tried resolving this issue by adding required missing key-val in plist file
When I try to run it from Xcode I am getting error - Some keys are missing in worklight.plist
After adding missing keys now I am getting
2016-05-04 17:50:28.507 StoreApp[14787:396490] [FATAL] [WL_INIT] -[WLImpl initWL] in WLImpl.m:180 :: Init failure: Can't read checksum.js, The operation couldn’t be completed. (Cocoa error 258.), (null). Reinstall the application and try again.
Even I have tried running simple MFP cordova project,but build fails for this
Even I have tried running simple MFP cordova project,but build fails for this
I cannot reproduce this...
idanadar#mbp-idan:~/Desktop$ mfp cordova create
? Enter name of app: myapp
? Enter the package ID: com.ibm.myapp
? Enter the app version: 1.0.0
? Select platforms to be supported by your app: ios
? The following plugins will be automatically added to your app:
cordova-plugin-mfp
org.apache.cordova.device
org.apache.cordova.dialogs
org.apache.cordova.geolocation
org.apache.cordova.globalization
org.apache.cordova.inappbrowser
org.apache.cordova.network-information
Please press enter to continue...
? Select additional plugins you would like to add:
? Enter a path to an app template to be added: cordova-hello-world-mfp
Embedded Cordova Command: cordova create "myapp" "com.ibm.myapp" "myapp" --copy-from="/Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/cordovacmd/cordova/templates/cordova-hello-world-mfp"
Adding ios project...
Adding "cordova-plugin-mfp"
Installing "cordova-plugin-mfp" for ios
Installing "org.apache.cordova.device" for ios
Installing "org.apache.cordova.dialogs" for ios
Installing "org.apache.cordova.geolocation" for ios
Installing "org.apache.cordova.globalization" for ios
Installing "org.apache.cordova.inappbrowser" for ios
Installing "org.apache.cordova.network-information" for ios
Plugin install completed
If you made changes to your main.m file, please manually merge main.m.bak with MFP's main.m
Plugin "cordova-plugin-mfp" added successfully.
Preparing for push...
MFP App settings not found, configuring..
Embedded Cordova Command: cordova prepare ios
/Users/idanadar/Desktop/myapp/mobilefirst/com_ibm_myapp-iphone-1.0.0.wlapp has been built.
Push Completed Successfully.
MFP Cordova project created successfully.
idanadar#mbp-idan:~/Desktop$ cd myapp/
idanadar#mbp-idan:~/Desktop/myapp$ mfp cordova run --platform ios
The iOS Simulator then started and the application was displayed.
As for creating an Ionic-based app using MFP Cordova, I suggest that you will follow this: https://www.raymondcamden.com/2015/03/23/working-with-ibm-mobilefirst-and-the-ionic-framework/
Related
I am developing an Ionic App, and I am having some issues with the IOS App and Firebase/FCM Plugins.
The Android App is working perfectly with the below plugins installed:
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install #ionic-native/fcm
As for the IOS App I tried several Plugins and none is working:
Option 1:
ionic cordova plugin add cordova-plugin-fcm
npm install #ionic-native/fcm
The app is building successfully, but it is failing when launched on an iPhone. When debugging, I am getting this error Message:
Terminating app due to uncaught exception 'com.firebase.core', reason: 'Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.'
Option 2:
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install #ionic-native/fcm
When building with this plugin, I am getting the below error in xCode:
** ARCHIVE FAILED **
The following build commands failed:
CompileC /Users/walid/Library/Developer/Xcode/DerivedData/Nutripro-aabwvacmftjwnefthwnyidfyxswx/Build/Intermediates.noindex/ArchiveIntermediates/Nutripro/IntermediateBuildFilesPath/Nutripro.build/Release-iphoneos/Nutripro.build/Objects-normal/arm64/FCMPlugin.o /Users/walid/Documents/www/nutripro/platforms/ios/Nutripro/Plugins/cordova-plugin-fcm-with-dependecy-updated/FCMPlugin.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
xcodebuild: Command failed with exit code 65
[ERROR] An error occurred while running subprocess cordova.
I searched alot to find a solution for this error, and I can't find any.
Option 3:
ionic cordova plugin add cordova-plugin-firebase
npm install #ionic-native/firebase
I can build an App successfully using this plugin, and I can run it on my iPhone and a Token is generated and I can receive Push Notifications Normally.
But the problem here is happening when Uploading the App to the App Store
Archiving on xCode is Successful
When Distributing/Uploading the App, I am getting the below Error:
ERROR ITMS-90771: "Missing Info.plist value. The Info.plist key 'BGTaskSchedulerPermittedIdentifiers' must contain a list of identifiers used to submit and handle tasks when 'UIBackgroundModes' has a value of 'processing'. For more information, refer to the Information Property List Key Reference at https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html."
I searched the Internet and found this article stating that I must add the below to my info.plist file
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>com.nutripro.mobile</string>
</array>
After adding it and Resubmitting my Application, I am getting an email back from Apple
Dear Developer,
We identified one or more issues with a recent delivery for your app, "NutriPro" 1.1.11 (1.1.11). Please correct the following issues, then upload again.
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
Best regards,
The App Store Team
If I remove the plugin, the App is being uploaded and approved.
The weird thing is that the documentation on #ionic-native/firebase says that they got rid of the UIWebView and are using WKWebView
N.B: After Each Option, I am uninstalling the installed Package and Node Module, and I am deleting the platforms folder.
Do you guys have any idea how I can fix this issue? I've been trying to figure out a solution for almost 1 week and I can't find any!
After a lot of research and unsuccessful attempts, I found a solution.
For Android, I am using fcm-with-dependecy-updated
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install #ionic-native/fcm
For IOS, I am using firebase-messaging
ionic cordova plugin add cordova-plugin-firebase-messaging
npm install #ionic-native/firebase-messaging
I found a solution.
rm -rf platforms/android
cordova plugin remove cordova-plugin-firebase
Install this plugin firebase-lib
For cordova-cli >= 9.x.x && (cordava-ios >= 5.0.1 || cordava-android >= 8.x.x). Use the latest major releases just by running:
cordova plugin add cordova-plugin-firebase-lib
For cordova-cli <= 8.1.1 && (cordava-ios <= 4.5.5 || cordova-android >= 8.x.x) Use the v4.x release by running:
cordova plugin add cordova-plugin-firebase-lib#4.1.0 --save
For cordova-cli <= 7.1.0 && (cordava-ios <= 4.5.5 || cordova-android <= 7.1.4). Run the following in your terminal:
cordova plugin add cordova-plugin-firebase-lib#3.3.0 --save
Androidx
cordova plugin add cordova-plugin-androidx
cordova plugin add cordova-plugin-androidx-adapter
For cocoaPods
If you are building your app using Xcode, please open platform/ios/my-cordova-project.xcworkspace instead of platform/ios/my-cordova-project.xcodeproj so that the Xcode can load both Cordova app & the Pods.
Your repo needs to be up to date. To keep it up to date, run pod repo update anywhere in your terminal.
I'm trying to build Ionic based framework (Cordova plugin included) for iOS using Azure DevOps - Hosted macOS agent. I have included xcode in the Demands section.
Added Cordova build task and set the platform value to 'ios'
But getting 'Current working directory is not a Cordova-based project' error. Am I missing anything?
2018-11-07T19:49:07.6357620Z Module cache at /Users/vsts/.taco_home/node_modules
2018-11-07T19:49:08.4403560Z cordova already installed.
2018-11-07T19:49:08.4959970Z Adding support plugin.
2018-11-07T19:49:09.2854590Z { CordovaError: Current working directory is not a Cordova-based project.
2018-11-07T19:49:09.2855410Z at Object.cdProjectRoot (/Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/cordova-lib/src/cordova/util.js:170:15)
2018-11-07T19:49:09.2856100Z at /Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/cordova-lib/src/cordova/plugin/index.js:36:40
2018-11-07T19:49:09.2856540Z at _fulfilled (/Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/q/q.js:854:54)
2018-11-07T19:49:09.2856690Z at self.promiseDispatch.done (/Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/q/q.js:883:30)
2018-11-07T19:49:09.2856810Z at Promise.promise.promiseDispatch (/Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/q/q.js:816:13)
2018-11-07T19:49:09.2858330Z at /Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/q/q.js:877:14
2018-11-07T19:49:09.2858660Z at runSingle (/Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/q/q.js:137:13)
2018-11-07T19:49:09.2858880Z at flush (/Users/vsts/.taco_home/node_modules/cordova/8.1.2/node_modules/cordova/node_modules/q/q.js:125:13)
2018-11-07T19:49:09.2859360Z at _combinedTickCallback (internal/process/next_tick.js:73:7)
2018-11-07T19:49:09.2859510Z at process._tickCallback (internal/process/next_tick.js:104:9)
2018-11-07T19:49:09.2860600Z name: 'CordovaError',
2018-11-07T19:49:09.2861150Z message: 'Current working directory is not a Cordova-based project.',
2018-11-07T19:49:09.2861220Z code: 0,
2018-11-07T19:49:09.2861360Z context: undefined }
2018-11-07T19:49:09.2972390Z ##[error]Task failed
Try adding the following instead of cordova build
npm install
Ionic command (Command: ionic cordova build ios)
Install an apple certificate
Install an apple provisioning profile
Xcode build
Publish to the app store (install from marketplace)
Apple has tricked me and even though I disabled autoupdates it now pulled the most recent XCode version (Version 10.0 (10A255)) and dependencies. The effect is that I can not build my app anymore, even after removing (ionic cordova platform remove ios) and re-adding the platform.
It now fails with the error below.
onic cordova run ios --debug --target="iPhone-8" --consolelogs
...
<path>/platforms/ios/build/emulator/MyApp.app/Info.plist file not found.
[ERROR] An error occurred while running cordova run ios --debug --target iPhone-8 (exit code 1).
ionic --version
3.20.0
---- EDIT
ran with verbose and received :No scripts found for hook "before_deploy". as additional info for the failure.
----- EDIT ------
Please look here for more detail. I was able to reproduce it from scratch / a blank app template
Blank app fails debug build - /Info.plist file not found
ionic cordova emulate ios -- --buildFlag="-UseModernBuildSystem=0"
Try this command it should work,this is issue with cordova.
If you're building on the command-line, try this
ionic cordova emulate ios -- --buildFlag="-UseModernBuildSystem=0"
or
Xcode 10
If you are opening the project in the Xcode IDE, you need to change the build system in Workspace Settings to "Legacy Build System"
Xcode example
Now, You can also run this on command-line $ionic cordova build ios
Best of luck
When I run: ionic build ios the archive succeeds but the export fails.
Error Messages:
error: exportArchive: Found no compatible export methods for: DVTFilePath:0x7f9d3dc41d20:'/Users/**PATH**/platforms/ios/**PROJECTNAME**.xcarchive'
Error Domain=IDEFoundationErrorDomain Code=1 "Found no compatible export methods for: DVTFilePath:0x7f9d3dc41d20:'/Users/**PATH**/platforms/ios/**PROJECTNAME**.xcarchive'" UserInfo={NSLocalizedDescription=Found no compatible export methods for: DVTFilePath:0x7f9d3dc41d20:'/Users/**PATH**/platforms/ios/**PROJECTNAME**.xcarchive'}
Error: Error code 70 for command: xcodebuild with args: -exportArchive,-archivePath,fasTask.xcarchive,-exportOptionsPlist,/Users/**PATH**/platforms/ios/exportOptions.plist,-exportPath,/Users/**PATH**/platforms/ios/build/device
I modified the exportOptions.plist 'method' key to 'export_method' but same error message.
I tried uninstalling Xcode and re-installing. The first build after re-installation gives me a successful build. Any builds after the first build give me the same error message as before.
Also if I npm uninstall -g ionic cordova and delete everything in the platform folder, then npm install -g ionic cordova then the first build succeeds but any build after it fails.
ionic serve works fine every-time.
Details:
Xcode 7.3.1
ionic 2.1.14
cordova 6.4.0
cordova-ios 4.3.1
ios-deploy 1.9.0
Thanks.
Hey I am having the same issue, it happened after updating ionic and cordova to the lastest version. I created a new project ionic start added platform ios and when trying ionic run ios --device i got the same output that you're having after building trying to export.
When running an older (pre-update) project i was not having any problem at all after i did a ionic platform rm ios and then ionic platform add ios the problem reproduced again. I think is has to be to the way that the updated cli is adding the platform or that it is expecting an updated SDK version (Xcode 8).
A workaround is first launch and installing the app to the device using Xcode, then in the terminal do ionic run ios --device -l this will create a livereload ionic server. At the end it will show the error but the livereload server will be still working and you can develop and the changes will be reflected on the app without any problem.
Xcode: 7.3.2
Ionic: 2.1.13
Cordova: 6.4
Try
ionic build ios --emulator
i have created a new hello world project using the following command,
cordova create hello com.example.hello HelloWorld
the project is created successfully, then i add the ios platform by
cordova platform add ios
and to verify i have it added correctly, i type
cordova platform list
the iOS platform is shown in the list. so at this point, according to the PhoneGap tutorial, i can use the command
cordova build ios
to build the iOS version of the project. however, i encounter the following error:
Generating config.xml from defaults for platform "ios"
Preparing ios project
Compiling app on platform "ios" via command "/Users/Aldour/PhoneGap/hello/platforms/ios/cordova/build"
/usr/local/lib/node_modules/cordova/node_modules/q/q.js:126
throw e;
^
Error: An error occurred while building the ios project.
at ChildProcess.<anonymous> (/usr/local/lib/node_modules/cordova/src/compile.js:65:22)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:735:16)
at Socket.<anonymous> (child_process.js:948:11)
at Socket.EventEmitter.emit (events.js:95:17)
at Pipe.close (net.js:466:12)
the results that i have googled are mostly concerning the android version, talking about the invalid environment path setting. i dont know if it is related since i can create and build a PhoneGap project targeting the android platform without problem.
here is my $PATH:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin/node:/usr/local/bin/npm:/Developer/SDKs/android-sdk-macosx/platform-tools:/Developer/SDKs/android-sdk-macosx/tools
EDIT:
problem solved by re-installing xcode from app store
I had the same problem in Android platform, and it was solved with the commands:
cordova platform rm android
cordova platform add android
cordova build android
in Node.Js console. try it in ios.
If you get an error with 'cordova platform add android', you may need to manually remove any android folders in your project folder hierarchy.
This resolved my issue:
cordova platform remove ios
cordova platform add ios
cordova build ios
If you run the build with --verbose, you will probably see some permission issues. By default, XCode creates a folder of the build in ~/Developer, if you haven't changed it. There probably is a permissions issue when creating that folder. Just execute the following command: sudo cordova bulid ios
That should fix your issue.