On your device, go to settings -> Knowledge Base Navigator -> Advanced -> Enable log
Once the log has been enabled, execute your app and then you will be able to check the log from the 'View log' option on your Knowledge Base Navigator:
Refer to Apple Requirements for version specific information.
The GXFlexibleClient framework is the group of iOS GeneXus standard classes deployed as a framework referenced in your XCode project. During the compilation process, you will notice it is automatically installed:
========== iOS Compilation started ==========
Command:MacTransfer compile "myMac" "UserName" "<password>" "KnowledgeBasename" "DashboardName" "IPhoneSim" "C:\Models\Xev2\ios\javaiOS"
Connecting to myMac
Copying Library C:\GX\gxXev2\iOS\YAJLIOS.framework.zip
Copying Library C:\GX\gxXev2\iOS\GXFlexibleClient.framework.zip
Copying File C:\GX\gxXev2\iOS\MacTransfer.scpt to /Users/UserName/Library/Artech/GeneXus/MacTransfer.scpt
Copying File C:\GX\gxXev2\iOS\iphonesim to /Users/UserName/Library/Artech/GeneXus/iphonesim
Synchronizing C:\Models\Xev2\ios\javaiOS\mobile\iOS\DashboardName\ios\Genexus to /Users/UserName/Documents/Projects/ios/DashboardName
Remove File .DS_Store
Updating File DashboardName.xcodeproj/project.pbxproj
Remove Directory DashboardName.xcodeproj/project.xcworkspace
Remove Directory DashboardName.xcodeproj/xcuserdata
Remove File UserControls/.DS_Store
....
Compiling
sshExec: cd ~/Documents/Projects/ios/DashboardName;xcodebuild -sdk iphonesimulator5.0 -configuration Debug clean build 2>&1
To know its version number, check the revision.h file in the folder ~/Library/Artech/GeneXus/GXFlexibleClient.framework/Headers
This number will match the GeneXus Build number used to generate the application.
#define kRevisionNumber 53833
Check the following article from Apple: Getting Crash Logs and Console Output
As from macOS Monterey, only Xcode 13 or higher can be officially installed. This prevent the user to execute applications generated with GeneXus 17 Upgrade 5 or prior. There is an unofficial mechanism that allows to execute older versions of Xcode in macOS Monterey and is explained in this article HowTo: Compiling apps using Xcode 12.5 or prior in macOS Monterey
This error appears when adding a new Knowledge Base to the KBN.
Cause: The URL that it is trying to add is not correct or the server is not working.
Solution: In order to check whether the device can access that URL, open the browser from the device and check if it can access the file /gxmetadata/sdapps.json.
For instance, if the Service URL looks as follows:
http://apps.genexus.com/Id89c7ac6b26874392be79eaf42428194b
you should try to access the following resource:
http://apps.genexus.com/Id89c7ac6b26874392be79eaf42428195a/gxmetadata/sdapps.json
When building a project for iOS the following error may occur
sshExec: cd ~/Documents/Projects/SampleProject/SampleProject;
security list-keychains -s ~/Library/Keychains/login.keychain;
security unlock-keychain -p <password>
~/Library/Keychains/login.keychain;/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk iphoneos7.1 -configuration Release clean build 2>&1
error: Check dependencies
error: [BEROR]Code Sign error: No matching codesigning identity found:
No codesigning identities (i.e. certificate and private key pairs) matching iPhone Developer were found.
error: [BEROR]CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 7.1'
error:
error: Check dependencies
error: Code Sign error: No matching codesigning identity found: No codesigning identities (i.e. certificate and private key pairs) matching iPhone Developer were found.
error: CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 7.1'
Cause: Well known XCode issue.
Solution: Compile the project from XCode using the "iOS Device" target. The same message will appear with a "Fix Issue" option. You will need to connect using an Apple Id account to resolve the code signing issue and select the Provisioning file. Once the case works from XCode, retry the operation from GeneXus.
This error occurs when compiling with OS X El Capitan
Cause: OS X El Capitan changed the way SSH connections are established. SSH is used by GeneXus to compile iOS applications on a Mac computer.
Solution: This error has been fixed in GeneXus X Evolution 3 Upgrade 5, for previous GeneXus versions, see SAC #38590.
The following error may occur when compiling an iOS project:
Connecting to machinename
error: Permission denied (keyboard-interactive).
iOS Compilation Failed
Cause: GeneXus couldn't connect with the Mac machine.
Solution: Check your credentials when connecting to the Mac; Mac User or Mac password is wrong.
When GeneXus 15 compiles an iOS application it shows a sequence of errors indicating that some code section starting with 'NS' prefix has been renamed without that prefix and tells that these sentences are obsoleted in Swift 3.
For example,
error: /Users/<my_user>/Documents/Projects/<my_project>/Development/RUNMenu/Classes/GXStd.swift:826:11: error: 'NSComparisonResult' has been renamed to 'ComparisonResult'
error: extension NSComparisonResult {
error: ^08/10/17 10:15 AM08/10/17 10:15 AM08/10/17 10:15 AM~~
error: ComparisonResult
error: <unknown>:0: note: 'NSComparisonResult' was obsoleted in Swift 3
Cause: When you migrate a Knowledge Base to GeneXus 15, it is probably that old source files won't be generated again, leaving syntax error that are obsoletes in newest versions of Swift language.
Solution: Delete the /mobile/iOS directory of your target environment directory and rebuild-all.
Cause: This compilation error happens because the command line tools do not recognize the required version X (see Apple Requirements).
Solution: Download required version, unzip it, copy it to Applications (See https://stackoverflow.com/questions/43663097/how-to-install-xcode-from-xip-file)
Then open Xcode -> Preferences -> Locations and set the required version in the Command Line Tools option
Cause: The error appears at compilation time due to change of Ruby version, caused by a macOS update. Ref.: https://github.com/CocoaPods/CocoaPods/issues/6778
Solution: Reinstall the cocoapods. Execute the following command in your Mac's terminal. If you need to elevate privileges, use sudo command.
gem install cocoapods
When compiling an iOS application with GeneXus 15 Upgrade 9, the following error is displayed:
Updating CocoaPods repositories (may take several minutes)
sshExec: export LANG=en_US.UTF-8;/usr/local/bin/pod repo update
iOS Compilation Failed
Cause: If your computer has macOS Sierra 10.12.x, it has an old version of Ruby environment. The pod command tries to do a request which only supports TLS 1.2. Check this post for further information.
Solution: You have two alternatives
1) Upgrade your Mac to the latest macOS High Sierra version (10.13.x, as recommended in Apple Requirements).
2) Upgrade your Ruby environment version (check this post).
This problem& could also be caused due to an Internet connectivity issue, in such case try running the following command in your Mac's terminal for detailed information:
export LANG=en_US.UTF-8;/usr/local/bin/pod repo update --verbose
When compiling an iOS application after updating GeneXus or Xcode, you may get compiler errors related to Xcode's derived data.
The error message may vary, some examples:
error: ld: file too small (length=0) file '/Users/username/Library/Developer/Xcode/DerivedData/SDMenuAAA-cmbhnruplemvsgdocuqgrhplvfwm/Build/Intermediates.noindex/SDMenuAAA.build/Debug-iphonesimulator/SDMenuAAA.build/Objects-normal/x86_64/prcInformaErrorOfflineAAA.o' for architecture x86_64
-------
error: The following binaries use incompatible versions of Swift:
/Users/username/Library/Developer/Xcode/DerivedData/Aqui_Tem-dehcftldmuupivdrourerasqvkdo/Build/Products/Debug~iphonesimulator/Aqui_Tem.app/Frameworks/GXDebugger.framework/GXDebugger/Users/username/Library/GeneXus/GeneXus/16.0.134138_U4/iphonesimulator/GXGoogleMapsDirectionsProvider.framework/GXGoogleMapsDirectionsProvider
DerivedData is a folder where Xcode stores all kinds of intermediate build results, generated indexes, etc. Sometimes Xcode tries to use an intermediate result when it is no longer valid (e.g., by changing a GeneXus framework's version, intermediate results linked with the previous version are no longer valid).
In this case, you need to manually delete the derived data and rebuild your application. To find the derived data folder, go to Xcode, Preferences..., Locations, Derived Data, and click on the small arrow that appears next to the derived data path.
Updating spec repo `GXLocal` fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]' $ /usr/bin/git -C /Users/macuser/.cocoapods/repos/GXLocal fetch origin --progress $ /usr/bin/git -C /Users/macuser/.cocoapods/repos/GXLocal rev-parse --abbrev-ref HEAD
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. HEAD Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]' [!] CocoaPods was not able to update the `GXLocal` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`
Solution: Open the Terminal and execute the following commands to recreate the repo GXLocal from scratch:
pod repo remove GXLocal
rm -rf /Users/Shared/Library/GeneXus/GeneXus/CocoaPods
mkdir -p /Users/Shared/Library/GeneXus/GeneXus/CocoaPods
cd /Users/Shared/Library/GeneXus/GeneXus/CocoaPods
git init
echo "GeneXus Local Repo" > README.md
git add README.md
git commit -m "GXLocal Repo Initial commit"
pod repo add GXLocal /Users/Shared/Library/GeneXus/GeneXus/CocoaPods
After this, you should be able to execute without problems the following command:
pod repo update
Is possible that after all these steps, a message like the following appears:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
In that case, please execute the commands mentioned in the message, adding an email address and a user name:
git config --global user.email "user@email.com"
git config --global user.name "UserName"
Since GeneXus 16 Upgrade 3, this is not required following that default credentials are set when building the application.
error: “No such module XXX”
error: linker command failed with exit code 1
In iOS, when using User Controls or External Objects or other functionalities that are integrated at Extension Libraries (ie Notifications with OneSignal, Lottie ), the file to open with XCode is the one with the .xcworkspace extension (not .xcodeproj).
When compiling an iOS application the following error may occur:
sshExec: cd ~/Documents/Projects/sample/dotNet\ Environment/sample;/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace sample.xcworkspace -scheme "sample" -destination "generic/platform=iOS Simulator" -configuration Debug build SYMROOT=\$PWD/build 2>&1
error: error: unable to attach DB: error: accessing build database "/Users/svp/Library/Developer/Xcode/DerivedData/sample-cxmipcikwkyvsegfrynauesgrpeo/Build/Intermediates.noindex/XCBuildData/build.db": database is locked Possibly there are two concurrent builds running in the same filesystem location.
iOS Compilation Failed
Build sample Failed
Cause: Make sure the Mac machine is not executing the same project.
Solution: Close Xcode on the Mac machine and compile again.
Cause: The user that connects to the MAC has a different shell than Bash as default, for instance ZSH
Solution: Configure Bash as default shell for the user that connects to MAC.
On a Terminal run:
chsh -s /bin/bash
Or System Preferences > Users & Groups > right click > Advanced Options. And then sets 'Login Shell' = /bin/bash
Cause: The cocoapods version installed is not valid, check for a Release version.
Solution: Validate that the cocoapods version is a Release version; on a Terminal run:
pod --version
It should return a version like 1.8.4 or similar, if it gets 1.9.0.beta.2 or some beta version it means that it is not correct; execute the following to reinstall it:
sudo gem uninstall cocoapods
sudo gem install cocoapods
Cause: The cocoapods version installed is not valid for Macs with chip Apple Silicon.
Solution: Re-install Cocoapods as explained in SAC#50562
Cause: Xcode needs to run with Rosetta compability.
Solution: Change the Xcode option "Open using Rosetta" as explaned in SAC#50945