Xamarin.iOS: Could not launch instrumented app after using latest 3.2.0 lib
Xamarin.iOS: Could not launch instrumented app after using latest 3.2.0 lib
Xamarin.iOS: Could not launch instrumented app after using latest 3.2.0 lib. When we were using the 3.0.4 source code instrumentation lib it was working correctly. However, using the new versions of ranorex studio along with serviceapp (3.2.0) make the instrumentation ipa not launchable anymore. It complains about the fact the URL scheme is not starting with "ranorex.", however it used to work without that with the older versions. Why is it like that? Thank you.
- Support Team
- Site Admin
- Posts: 12145
- Joined: Fri Jul 07, 2006 4:30 pm
- Location: Houston, Texas, USA
- Contact:
Re: Xamarin.iOS: Could not launch instrumented app after using latest 3.2.0 lib
Hello r1v3n,
Unfortunately, this is a known issue, but there are some notes on that from our developers.
The main manual instrumentation process is described on Ranorex web pages, here:
iOS in source IPA instrumentation
There are few items, which are required for manual instrumentation, which are not exposed in the Ranorex main web page.
In project plist file it is mandatory to add BUNDLE DISPLAY NAME. More information from stack-overflow:
CFBundleDisplayName is for changing the text below the app icon on your device (and simulator). To edit this, you can change the "Bundle display name under "info" in the project: Location of the Bundle display name attribute
During Ranorex instrumentation process our tools add to info.plist project file the url schema. This is mandatory to open the instrumented ipa from within RxServices application or from Ranorex Studio. An example of added schema looks like that:
For manually instrumented IPA a designer needs to add this schema to the application settings.
Warning: there exists Apple API, which lets to restrict any such schema from running the application from other applications. If a designer implements this functionality then it will not be possible to run even an instrumented IPA from within RxServices and Ranorex Studio.
Let assume that the instrumented application is prepared properly. It contains CFBundleDisplayName and CFBundleURLSchemes defines properly. To make this application recognizable by RxServices IPA there are required three steps to be done:
Bernhard
Unfortunately, this is a known issue, but there are some notes on that from our developers.
The main manual instrumentation process is described on Ranorex web pages, here:
iOS in source IPA instrumentation
There are few items, which are required for manual instrumentation, which are not exposed in the Ranorex main web page.
In project plist file it is mandatory to add BUNDLE DISPLAY NAME. More information from stack-overflow:
CFBundleDisplayName is for changing the text below the app icon on your device (and simulator). To edit this, you can change the "Bundle display name under "info" in the project: Location of the Bundle display name attribute
During Ranorex instrumentation process our tools add to info.plist project file the url schema. This is mandatory to open the instrumented ipa from within RxServices application or from Ranorex Studio. An example of added schema looks like that:
Code: Select all
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>ranorex.your.application.name</string>
<key>CFBundleURLSchemes</key>
<array>
<string>ranorex.your.application.name</string>
</array>
</dict>
</array>
Warning: there exists Apple API, which lets to restrict any such schema from running the application from other applications. If a designer implements this functionality then it will not be possible to run even an instrumented IPA from within RxServices and Ranorex Studio.
Let assume that the instrumented application is prepared properly. It contains CFBundleDisplayName and CFBundleURLSchemes defines properly. To make this application recognizable by RxServices IPA there are required three steps to be done:
- Run RxServices IPA and put into background;
- Run the instrumented IPA and also put it into background; Now, the new instrumented IPA should be listed in available IPAs in RxServices application as well as in Ranorex Studio;
- However, to run any instrumented IPA while both RxServices and the instrumented IPAs are in background it is mandatory to run with parameter resetinitialstate set to true
Bernhard
You do not have the required permissions to view the files attached to this post.
Re: Xamarin.iOS: Could not launch instrumented app after using latest 3.2.0 lib
Thank you for your support Bernhard.
I added the URLTypes section containing the URLSchemes to our plist. However, I endup with the same result when launching the app from the RxServiceApp. It's like if it was ignoring that section and still complaining about that missing section. Here is a partial print from PlistBuddy with the Info.plist in the ipa instrumented file. So I can confirm that the section is there.
Dict {
UIRequiredDeviceCapabilities = Array {
arm64
}
com.xamarin.ios = Dict {
Version = 13.18.2.1 (d16-6: 29c4ea731)
}
CFBundleInfoDictionaryVersion = 6.0
UISupportedInterfaceOrientations~ipad = Array {
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
}
UIRequiresFullScreen = true
CFBundleURLTypes = Array {
Dict {
CFBundleURLName = ranorex.myapp
CFBundleURLSchemes = Array {
ranorex.myapp
}
}
}
CFBundleName = My Application
....
What else could cause that? Thank you
I added the URLTypes section containing the URLSchemes to our plist. However, I endup with the same result when launching the app from the RxServiceApp. It's like if it was ignoring that section and still complaining about that missing section. Here is a partial print from PlistBuddy with the Info.plist in the ipa instrumented file. So I can confirm that the section is there.
Dict {
UIRequiredDeviceCapabilities = Array {
arm64
}
com.xamarin.ios = Dict {
Version = 13.18.2.1 (d16-6: 29c4ea731)
}
CFBundleInfoDictionaryVersion = 6.0
UISupportedInterfaceOrientations~ipad = Array {
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
}
UIRequiresFullScreen = true
CFBundleURLTypes = Array {
Dict {
CFBundleURLName = ranorex.myapp
CFBundleURLSchemes = Array {
ranorex.myapp
}
}
}
CFBundleName = My Application
....
What else could cause that? Thank you