How to submit Xamarin iOS app with Native Reference to AppStore? - xamarin.forms

I'm working on a Xamarin Forms app which includes this SpatialiteForms library.
https://github.com/breekmd/SpatialiteForms
When I try to submit the iOS app to the AppStore it is rejected during the validation.
Just wondering if anybody else have/had this issue and if yes, how it was resolve?
I'm using the latest version of Visual Studio 2019 and XCode.
When I checked the architecture of the iOSSpatialite framework, it is saying iOSSpatialite is architecture: x86_64 (see below)
lipo -info iOSSpatialite
Non-fat file: iOSSpatialite is architecture: x86_64
Would it be possible to have it as arm64?
See message below related to the rejection:
*Publishing project 'PROJECT_NAME' completed with errors.
App Store bundle validation failed for archive PROJECT_NAME
"altool" exited with code 67.
Missing 64-bit support. iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK or later. We recommend using the default "Standard Architectures" build setting for "Architectures" in Xcode, to build a single binary with both 32-bit and 64-bit support.
Unsupported Architectures. The executable for PROJECT_NAME.iOS.app/Frameworks/iOSSpatialite.framework contains unsupported architectures '[x86_64]'.
Invalid Bundle Structure - The binary file 'PROJECT_NAME.iOS.app/Frameworks/iOSSpatialite.framework/Frameworks/mod_spatialite_arm64.7.dylib' is not permitted. Your app can’t contain standalone executables or libraries, other than a valid CFBundleExecutable of supported bundles. Refer to the Bundle Programming Guide at https://developer.apple.com/go/?id=bundle-structure for information on the iOS app bundle structure.
Invalid Segment Alignment. The app binary at 'PROJECT_NAME.iOS.app/Frameworks/iOSSpatialite.framework/iOSSpatialite' does not have proper segment alignment. Try rebuilding the app with the latest Xcode version.
The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid, or the binary is already encrypted. This binary does not seem to have been built with Apple's linker.
Invalid architecture: Apps that include an app extension and framework must support arm64.
Invalid Bundle. The bundle at 'PROJECT_NAME.iOS.app/Frameworks/iOSSpatialite.framework' contains disallowed file 'Frameworks'.*
Thanks,
S.

Related

Catalyst support for Firebase MLNLTranslate

I want to build a iPad/Mac Catalyst app that features language translation using the Firebase machine learning framework.
I know by default that the frameworks are designed to support iOS. But if I want to built a new Catalyst app (where it's an iOS app that will port over to MacOS), how do I get these frameworks to work?
I just tried to compile for the Mac and I get this error:
ld: building for Mac Catalyst, but linking in object file built for iOS Simulator, file '/Documents/TestAppCatalyst/Pods/FirebaseMLNLTranslate/Frameworks/FirebaseMLNLTranslate.framework/FirebaseMLNLTranslate' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
It's a bit cryptic but I am guessing it means I am trying to use a framework designed for the iOS but I can't. Has anyone come up with a workaround for this type of issue?
ML Kit does not currently support Mac Catalyst. It only supports iOS at the moment.

How do I verify if I'm using the native iOS SQLite provider, and how do I correct it?

I'm using a new project that's using sql-lite-pcl and it doesn't appear to be loading the required dependency packages (recursively). I know this because "it just doesn't work (tm)"
I've been able to get the project to work by adding the following on the Xamarin Forms project and the iOS project
SQLite-net-pcl
SQLitePCLRaw.bundle_green
SQLitePCLRaw.core
SQLitePCLRaw.lib.e_sqlite3.ios
SQLitePCLRaw.provider.dynamic_cdecl
SQLitePCLRaw.provider.internal.ios_unified. (iOS only)
SQLitePCLRaw.provider.ios_inified (iOS only)
For most of the items above I needed to install a 1x version, whereas the 2.0 version of SQLite reported a variety of errors from the SQLite-net-pcl library. (there is an open GIT issue on the project page for 2.0 support)
Question
How do I verify (in runtime?) that I'm using the native iOS provider?
Does it matter if I switch between the iOS provider and the code- based one? In either data binary reading and writing, locks, app suspension/closing handles, performance or any other reason?
What are the correct libraries to load if simply adding sql-lite-pcl into a Visual Studio for Mac doesn't recursively load all dependencies, and the correct version of them?
There is a very good tutorial how to use SQLite for Xamarin Forms. You can find it here.
It's working fine both for Android and iOS version

Xamarin with Entity Framework Core: Error: unauthorized access to "/system/lib/libsqlite.so" on Android 7

Im trying to create a Xamarin Forms App using the new Entity Framework Core. The app targets android 6.0 but my Emulator is running Android 7.0. I installed the following related Nuget packages on the android project:
Microsoft.EntityFrameworkCore --> 1.1.1
Microsoft.EntityFrameworkCore.Sqlite --> 1.1.1
When accessing my DbContext on Android a message will pop up telling: Detected problems with native libraries unauthorized access to "/system/lib/libsqlite.so".
This Xamarin forums thread suggests, that it's due to the native SqLite binaries are no longer supported (on Android 7?) and the common fix seems to be to switch to the SqLite.Net PCL.
However as Microsoft.EntityFrameworkCore.Sqlite depends on Microsoft.Data.Sqlite which in turn depends on the native SqLite package I cannot just replace this (or can I?)
Strangely enough, despite of the error message suggesting otherwise, the data access seems to work. At least migrations run and repeated writes to the database will create new Ids.
Of course I could just scrap EF Core but I guess a lot of people are looking into using it for Xamarin in the future. So it would be nice if anyone would find/know a fix.
I had the same problem. I have fixed this using the following libs: sqlite-net-pcl (version 1.2.0), SQLitePCLRaw.bundle_green, SQLitePCLRaw.core, SQLitePCLRaw.lib.e_sqlite3.android, SQLitePCLRaw.provider.e_sqlite3.android.
Matheus Souza had the right idea there. However installing SQLitePCL is only part of the answer. Here is how I eventually solved this:
DISCLAIMER: This is a kind of "You can do it but it isn't pretty"-solution. If you have the time, it's probably best to wait for the official Microsoft.EntityFrameworkCore.Sqlite 1.2.0 release.
This issue brought me on the right track. The new (unreleased) version of EntityFrameworkCore no longer uses the native sqlite binaries, but sqlite-net-pcl. This is the steps I followed to install it:
Add the aspnetcore-dev branch to your nuget feeds. Nuget 3: https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json
Check "Show preview versions" in Nuget and update (or reinstall) all EntityFrameworkCore packages to "1.2.0 - preview"
(Make sure your x64 is checked in your android projects advanced build options, if the app instantly crashes on deploy. This might be unreleated)

How to make CC3200 project with Kaa SDK?

I'm using Ubuntu 16.10. Installed Kaa Sandbox and tested with notification demo in terminal. I'm using CCSv7 to program on CC3200. I confused what is correct way to create project in CCS with Kaa SDK generate from Kaa Sandbox. Here is how I do but I can't build project:
Generate SDK and run build by cmake with target platform is cc32xx, I use notification example
Create new project then include Kaa SDK path
Include Kaa file library (*.a): libkaac.a, libextension_user.a, libextension_event.a, libextension_logging.a, libextension_profile.a, libextension_bootstrap.a, libextension_notification.a, libextension_configuration.a, libmbedtls.a, librsa_keygen.a. I'm not sure that need all of them but just include all to prevent error.
Copy some code from kaa_demo.c and blinky demo project to my main.c.
Hit build. Error occur that libmbedtls.a not build for ARM so I go to folder thirdparty and build it. Solved.
Occur another error: Description Resource Path Location Type
#10099-D program will not fit into available memory. placement with alignment fails for section ".cinit" size 0xc41 . Available memory ranges: cc3200v1p32.cmd /demo1 line 75 C/C++ Problem. I try to increase or decrease stack size but not work.
More error: Description Resource Path Location Type
unresolved symbol __assert_func, first referenced in /opt/ti/kaa-sdk/build/libkaac.a demo1 C/C++ Problem. This error occur when missing include library file but it occur in another library file so I dont know how to fix.
Anyone can help me or suggest how to make a project for CC3200 with Kaa SDK, in any IDE. Its take me 2 weeks.
At the moment of Kaa 0.10.0 release the CC32xx sample applications were broken due to the same issue you mentioned in 7). The binary build did not fit into the CC32xx program memory. That is why whole the CC32xx platform was disabled in the Kaa 0.10.0 Sandbox release.
Now, the issue on the GitHub repository is fixed and the CC32xx platform will be re-enabled in the Kaa 0.10.1 Sandbox release (comming soon). So, you can either wait for the Kaa 0.10.1 release or try building the CC32xx application with the CMake from GitHub.
Regarding your question for build from CCSv7 IDE directly you should search for integration of CMake builds into the CCSv7 IDE. Kaa team does not provide such integration for now considering you should use any IDE you prefer for development and build by CMake (manually or from IDE).

Error : while working with SQLite in windows phone 8

this is my first post. I get this error
The processor architecture of the project being built "Any CPU" is not
supported by the referenced SDK "SQLite.WP80, Version=3.8.10.2".
Please consider changing the targeted processor architecture of your
project (in Visual Studio this can be done through the Configuration
Manager) to one of the architectures supported by the SDK: "x86, ARM".
while working in windows phone app and using SQLite. If I set the architecture to ARM then it will disappear but I got another error of missing "community" from namespace in SQLite.cs file. Any one can help me out? Thanks in advance.
follow this:
Install Extension "SQLite for Windows Phone" from Tools -> Extension and Updates Menu. check screenshot 1
Then Install NuGet Pacakge sqlite-net-wp8 from NuGet Package manager. check screenshot 2
then add Conditional Compilation symbol USE_WP8_NATIVE_SQLITE in Project properties -> Build settings. check screenshot 3
Then Try to ReBuild the solutions and the errors will be gone..!
(I assumed that you've already copied those two files SQLite.cs and SQLiteAsync.cs)
Reference Links:
http://social.technet.microsoft.com/wiki/contents/articles/18204.how-to-use-sqlite-with-a-windows-phone-8-application.aspx
Type or namespace 'Sqlite' could not be found in SQLite.cs

Resources