Xamarin.iOS binding library that depends on FirebaseCore - xamarin

I need to bind library for Xamarin.iOS which has many dependencies, such as Firebase/Core and Firebase/Messaging.
Following that doc, I have created a proxy project, generated the fat release, used sharpie to create the ApiDefinitions, generated the dll with a Binding Project in Visual Studio for Mac, and finaly used it in a Xamarin.iOS project that successfully built.
But, the app crashes on startup, on any simulator or real iPhone, with the following logs :
-CMSessionMgr- CMSessionMgrHandleApplicationStateChange: CMSession: Client com.maxim.myapp2 with pid '372' is now Foreground Running. Background entitlement: NO ActiveLongFormVideoSession: NO WhitelistedLongFormVideoApp NO
-CMSessionMgr- CMSessionMgrHandleApplicationStateChange: CMSession: Sending EndInterruption to com.maxim.myppev2 with pid '372' because client moved to ForegroundRunning and is not allowed to play in the background
[application<com.maxim.myappev2>:372] Death sentinel fired!
...
[application<com.maxim.myappev2>:372] Process exited: <RBSProcessExitContext; specific: <RBSProcessExitStatus; domain: signal (2); code: SIGSEGV (11)>>.
I think it comes from the Enable Bitcode option, which is not supported by Xamarin.
Indeed, the library I am binding has not this option, but one of its dependencies has :
iMac:Release-fat maxim$ otool -l FirebaseCore/FirebaseCore.framework/FirebaseCore | grep __LLVM
segname __LLVM
segname __LLVM
segname __LLVM
segname __LLVM
iMac:Release-fat maxim$
Is there any chance I can remove this native dependency library of Firebase and use the already binded one https://github.com/xamarin/GooglePlayServicesComponents/ ??
How could I do please ?

Related

Run an exe file on a Mac with Wineskin (VseeFace Application)

I really hope that someone could help me out with my problem.
I want to start an exe File (VSeeFace - see https://www.vseeface.icu for more information) on my Mac with wineskin. VseeFace is an application for Vtubing.
The application starts normally via Wineskin, but as soon as I try to open my avatar (a .vrm file), the software stops and I don't know why. I have searched everywhere and found nothing about my problem, but perhaps that is also due to my limited knowledge of development skills.
Can anyone help me please?
My Mac:
MacOS Monterey Version 12.4
Radeon Pro 575X 4 GB
My Wineskin Setup:
Wrapper Version Wineskin 2.9.1.5
Engine WS11WineCX64Bit22.0.1-1
Config Utility - Windows-Version 8
VseeFace Software – https://www.vseeface.icu/#download
They also describe how it will work on Linux or maybe Mac,
https://www.vseeface.icu/#running-on-linux-and-maybe-mac
For the Facetracking I run OpenSeeFace (but that seemed to work, I could see the green light of the iMac camera, but I couldn't test it because of my software problem).
I mean I could run the application but on the most important Screen it stops working.
In the debug.log file I noticed the following messages:
0024:err:shell:HCR_GetFolderAttributes should be called for simple PIDL's only!
0024:fixme:exec:SHELL_execute flags ignored: 0x0000000c
0118:err:module:import_dll Library dsound.dll (which is needed by L"C:\windows\system32\devenum.dll") not found
0118:trace:loaddll:build_module Loaded L"C:\windows\system32\msdmo.dll" at 000000034ABC0000: builtin
0118:err:ole:apartment_add_dll couldn't load in-process dll L"C:\windows\system32\devenum.dll"
0118:err:ole:com_get_class_object no class object {62be5d10-60eb-11d0-bd3b-00a0c911ce86} could be created for context 0x1
0118:err:module:import_dll Library dsound.dll (which is needed by L"C:\windows\system32\devenum.dll") not found
0118:err:ole:apartment_add_dll couldn't load in-process dll L"C:\windows\system32\devenum.dll"
0118:err:ole:com_get_class_object no class object {62be5d10-60eb-11d0-bd3b-00a0c911ce86} could be created for context 0x1
0118:err:ole:apartment_add_dll couldn't find function DllGetClassObject in L"C:\windows\system32\devenum.dll"
0118:err:ole:com_get_class_object no class object {62be5d10-60eb-11d0-bd3b-00a0c911ce86} could be created for context 0x1
0118:err:ole:com_get_class_object no class object {62be5d10-60eb-11d0-bd3b-00a0c911ce86} could be created for context 0x1
0118:trace:loaddll:build_module Loaded L"C:\windows\system32\Avrt.dll" at 00000002F2930000: builtin
0118:trace:loaddll:build_module Loaded L"C:\VSeeFace\VSeeFace_Data\Plugins\x86_64\LeapCV4.dll" at 000000010A220000: native
0118:trace:loaddll:build_module Loaded L"C:\windows\system32\VCRUNTIME140_1.dll" at 00000002F7F20000: builtin
0118:err:module:import_dll Loading library MSVCP140_2.dll (which is needed by L"C:\VSeeFace\VSeeFace_Data\Plugins\x86_64\LeapCV5.dll") failed (error c000007b).
0118:trace:loaddll:build_module Loaded L"C:\VSeeFace\VSeeFace_Data\Plugins\x86_64\CONCRT140.dll" at 0000000104CA0000: native
0118:err:module:import_dll Loading library MSVCP140_2.dll (which is needed by L"C:\VSeeFace\VSeeFace_Data\Plugins\x86_64\LeapCV5.dll") failed (error c000007b).
[mvk-info] Created 2 swapchain images with initial size (1280, 720) and contents scale 1.0 for screen Integriertes Retina-Display.
[mvk-error] VK_ERROR_INITIALIZATION_FAILED: Render pipeline compile failed (Error code 2):
Vertex attribute v4(4) of type int4 cannot be read using MTLAttributeFormatUInt4.
0118:trace:loaddll:build_module Loaded L"C:\VSeeFace\UnityPlayer.dll" at 0000000180000000: native
0118:fixme:thread:get_thread_times not implemented on this platform
0118:trace:loaddll:build_module Loaded L"C:\windows\system32\mmdevapi.dll" at 0000000336850000: builtin
0118:trace:loaddll:build_module Loaded L"C:\windows\system32\winecoreaudio.drv" at 00000001C92D0000: builtin
0118:fixme:coreaudio:ca_channel_layout_to_channel_mask Unhandled channel 0xffffffff
0
01b0:fixme:kernelbase:AppPolicyGetThreadInitializationType FFFFFFFFFFFFFFFA, 0000000066D6FE10
01b0:trace:loaddll:build_module Loaded L"C:\windows\system32\avrt.dll" at 00000002F2930000: builtin
01b0:fixme:avrt:AvSetMmThreadCharacteristicsW (L"Audio",0000000066D6FDB8): stub
01b0:trace:loaddll:free_modref Unloaded module L"C:\windows\system32\avrt.dll" : builtin
***If needed I could post the complete log file. ***
I have installed the dlls and they are in all the folders. I have also tried the installation via Winetricks, where it displays the following message:
Executing mkdir -p /Applications/Wineskin/VSeeFace.app/Contents/SharedSupport
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
Using winetricks 20220411-next - sha256sum: 846f79cac49697fd818f06a6aebf36ca408661f89b97633e9872025b33bc0e7b with wine-7.7 (WineskinCX 22.0.1) and WINEARCH=win64
Unknown arg UnityPlayer.dll
Usage: Applications/Wineskin/VSeeFace.app/Wineskin.app/Contents/Resources/winetricks [options] [command|verb|path-to-verb] ...
Executes given verbs. Each verb installs an application or changes a setting.
Options:
--country=CC Set country code to CC and don't detect your IP address
-f, --force Don't check whether packages were already installed
--gui Show gui diagnostics even when driven by commandline
--gui=OPT Set OPT to kdialog or zenity to override GUI engine
--isolate Install each app or game in its own bottle (WINEPREFIX)
--self-update Update this application to the last version
--update-rollback Rollback the last self update
-k, --keep_isos Cache isos (allows later installation without disc)
--no-clean Don't delete temp directories (useful during debugging)
-q, --unattended Don't ask any questions, just install automatically
-r, --ddrescue Retry hard when caching scratched discs
-t --torify Run downloads under torify, if available
--verify Run (automated) GUI tests for verbs, if available
-v, --verbose Echo all commands as they are executed
-h, --help Display this message and exit
-V, --version Display version and exit
Commands:
list list categories
list-all list all categories and their verbs
apps list list verbs in category 'applications'
benchmarks list list verbs in category 'benchmarks'
dlls list list verbs in category 'dlls'
fonts list list verbs in category 'fonts'
games list list verbs in category 'games'
settings list list verbs in category 'settings'
list-cached list cached-and-ready-to-install verbs
list-download list verbs which download automatically
list-manual-download list verbs which download with some help from the user
list-installed list already-installed verbs
arch=32|64 create wineprefix with 32 or 64 bit, this option must be
given before prefix=foobar and will not work in case of
the default wineprefix.
prefix=foobar select WINEPREFIX=/Users/myusername/.local/share/wineprefixes/foobar
annihilate Delete ALL DATA AND APPLICATIONS INSIDE THIS WINEPREFIX
Winetricks Commands Finished!!

Nativescript - cannot run android on device

I used to be able to run on android and all of a sudden I am getting this error (see below).
The only thing I recall changing is downgrading "nativescript-ui-listview" to "^7.1.0" and "nativescript-ui-sidedrawer" to "~7.0.0" because it otherwise breaks on ios 12.
Webpack compilation complete. Watching for file changes.
Webpack build done!
Project successfully prepared (android)
Installing on device f180a829...
More than one .apk found in /Users/manuelmaestrini/Programming/spiio-development/spiiomobile/platforms/android/app/build/outputs/apk directory. Using the last one produced from build.
Successfully installed on device with identifier 'f180a829'.
Application com.spiio.mobile is not running on device f180a829.
This issue may be caused by:
* crash at startup (try `tns debug android --debug-brk` to check why it crashes)
* different application identifier in your package.json and in your gradle files (check your identifier in `package.json` and in all *.gradle files in your App_Resources directory)
* device is locked
* manual closing of the application
Unable to apply changes on device: f180a829. Error is: Application com.spiio.mobile is not running.
Any idea what might be? I tried to do --clean, remove node_modules, hooks, platforms, uninstall and reinstall webpack etc but no luck...

Converting static framework to dynamic

I want to convert static iOS framework (https://github.com/comScore/ComScore-iOS-watchOS-tvOS/tree/master/ComScore/iOS) into dynamic.
> clang -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk -lc++ -F . -framework ComScore -ObjC -o ComScoreDynamic
This command is successful, however, there is a problem with symbol visibility.
When I check symbols in the original framework it is around 4k of public symbols:
> nm -gU ComScore.framework/ComScore | wc -l
4387
In dynamic version only very few of them:
nm -gU ComScoreDynamic
0000000000114af8 S _OBJC_CLASS_$_SCORCommonUtils
0000000000114940 S _OBJC_CLASS_$_SCORCrossPublisherIdSourceValue
0000000000114a08 S _OBJC_CLASS_$_SCORHTTP
0000000000114990 S _OBJC_CLASS_$_SCORHelper
0000000000114aa8 S _OBJC_CLASS_$_SCORObfuscation
0000000000114a80 S _OBJC_CLASS_$_SCORReachability
0000000000114918 S _OBJC_CLASS_$_SCORUniqueId
0000000000114b20 S _OBJC_METACLASS_$_SCORCommonUtils
00000000001149e0 S _OBJC_METACLASS_$_SCORCrossPublisherIdSourceValue
0000000000114a30 S _OBJC_METACLASS_$_SCORHTTP
0000000000114968 S _OBJC_METACLASS_$_SCORHelper
0000000000114ad0 S _OBJC_METACLASS_$_SCORObfuscation
0000000000114a58 S _OBJC_METACLASS_$_SCORReachability
00000000001149b8 S _OBJC_METACLASS_$_SCORUniqueId
00000000001166b0 D __ZTINSt3__117bad_function_callE
00000000000d5d60 S __ZTSNSt3__117bad_function_callE
All other symbols marked as internal (t and s markings).
How can I keep symbols external?
UPDATE:
Looks like this can be similar problem: Export an `OBJC_CLASS` from one static lib as part of another
Problem is that symbols in static lib are exported as private_extern and there is no way to preserve them in dynamic library.
The public symbols in the comScore framework are marked private external. This can be seen with the nm utility and looking for the SCORAnalytics class:
nm -m ComScore/iOS/ComScore.framework/Versions/A/ComScore |grep _OBJC_CLASS_\$_SCORAnalytics
Shows:
---------------- (LTO,DATA) private external _OBJC_CLASS_$_SCORAnalytics
This means the symbol can only be linked against once. When Cocoapods performs a pre-link for secondary ('transitive') dependencies, these symbols lose their extern attribute. The idea here is to prevent public symbols from a dependency from leaking into those of another library. The problem is that, for Swift projects, they aren't fully resolved until the final app link; by that point they're no longer available.
The real issue is that the comScore library is a static framework. The best solution would be for comScore to release it as a dynamic framework, but these are only supported by iOS 8 and above; comScore insists on support all the way back to iOS 6. I know.
For now, my solution is to include the comScore framework directly in our Cocoapod and vend it within the Podspec, allowing it to work with both Obj-C and Swift projects. The downside is I have to manually update our Cocoapod every time comScore releases a new version. There would also be symbol conflicts if another pod included comScore, but since our pod is a metrics aggregator that logs to several backends, it's likely to be the only metrics component in use. YMMV.

No destinations were specified with the -destination flag which were valid for the specified scheme

My integration bot when trying to run the app on the server complains that...
xcodebuild: error: No destinations were specified with the -destination flag which were valid for the specified scheme 'MyScheme'.
Not sure how to approach this error?
Prior to crashing it does a bunch of searches for different devices...
2014-05-21 14:14:22.631 xcodebuild[49977:100b] [MT] DVTDeviceSearch: Searching for device with type 'iOS Simulator', options: {
OS = "7.1";
name = iPad;
}, genericOnly: NO allowMultiple:NO timeout:0.000000
2014-05-21 14:14:23.134 xcodebuild[49977:100b] [MT] DVTDeviceSearch: Search found devices: (
"<DVTiPhoneSimulator: 0x7ff6fdb9a230> {\n\t\tsessionActive: NO\n\t\tlaunchService: (null)\n\t\tlaunchSucceeded: NO\n\t\tcurrentSimulatorSession: (null)\n\t\tdidExitRecursionGuard: NO\n\t\tdeviceInfo: <DeviceInfo iPad>\n\t\tsimulatedSystemRoot: <DTiPhoneSimulatorSystemRoot 0x7ff6fdb8e6f0> path=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk version=7.1 name=Simulator - iOS 7.1\n\t\tsimulatedDeviceFamily: 2\n\t\tsupportedDeviceFamilies: (\n 1,\n 2\n)\n\t\t}"
)
Checking the servers xcode I can see 6.1 and 7.0 simulator installed.
It also runs fine from xcode.
Your log states it is looking for 7.1 simulators, not 7.0. Either install 7.1 simulators to your Xcode server or downgrade your Deployment Target to 7.0.
I had to update my Xcode Version on our build server.
You can also check, which simulators are available, when you go to
Xcode-> Preferences... -> Components
Make sure the given SDK version was available here. In your case it would be iOS 7.1 simulator. If it was not available, hit the download button.

flex 4.6 mobile project debug error using air 3.4

i've followed this in order to flashbuilder 4.6 to use air sdk 3.4. no problems, or hiccups with the update.
the only problem is when i try to debug a mobile project using this sdk, either for android or ios i get the following error:
Process terminated without establishing connection to debugger.
invalid application descriptor: Unknown namespace:
http://ns.adobe.com/air/application/3.4
Launch command details: "C:\Program Files (x86)\Adobe\Adobe Flash
Builder 4.6\sdks\4.6.1\bin\adl.exe" -runtime "C:\Program Files
(x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.1\runtimes\air\win"
-profile mobileDevice -screensize 640x920:640x960 -XscreenDPI 326 -XversionPlatform IOS "C:\Users\joao\Adobe Flash Builder 4.6\teste34\bin-debug\teste34-app.xml" "C:\Users\joao\Adobe Flash Builder 4.6\teste34\bin-debug"
i've also got this problem.
following is what i've done:
1:create a new empty mobile application and debug it runs
2:open the new app's '{appname}-app.xml' file , find the 'xmlns' property in application root node for example
<application xmlns="http://ns.adobe.com/air/application/3.1">
3:replace the row of your old application
So i think the problem is your air sdk can not support the 3.4 version

Resources