Some Huawei mobile devices don't have the Google Play Store and have the Huawei AppGallery instead. Since Flutter is for cross-platform development (iOS and Android), it may be desirable to propose Flutter developed apps through the Huawei AppGallery.
The Huawei devices without the Google Play Store are still using Android and the applications to upload to the Huawei AppGallery must have the apk extension (just like in the Google Play Store). These are hunches that at least some Google Play Store applications can be proposed on the Huawei AppGallery. However, I did not find any proof or confirmation of this. Nor any clear perimeter for this compatibility. For example, some services may not work or may not be accepted on the Huawei AppGallery for technical or legal reasons. One part of this perimeter is the use of Flutter to develop the application.
So, my question is, can a Flutter developed application be compatible with the Huawei AppGallery and if so, under which conditions?
Edit after first app publication 2020 04 13
My first Flutter app has just been published on the Huawei AppGallery. This answers the first part of the question.
Still, as this app is quite minimalist, this doesn't answer the most important part which is: under which conditions can a Flutter app be published on the Huawei AppGallery?
As long as your application complies with the regulations of AppGallery, there should not be any problem it.
https://developer.huawei.com/consumer/en/doc/30202
AppGallery does not have any restriction on the language application developed with, no need to worry about it; flutter, cordova, react.native, xamarin they are fine.
Just a point to take care. If you are using SDKs or services those depend on Google Play services, when you have published your application on AppGallery, it will be visible only for Huawei devices supports Google Play Services.
There are no restrictions on the Flutter apps. They can be released on HUAWEI AppGallery.
How to release an app:
Register and sign in to your HUAWEI Developer account, go to AppGallery Connect, create a new app, and upload the APK.
Set languages and basic app information, such as app name, introduction, screenshots, and app category.
Select your business model (free or premium), release countries and regions, and a link to the privacy statement.
Confirm that all of the information provided is correct, and submit your app for review.
As #captaink said, please also refer to AppGallery Review Guidelines.
If your app has integrated GMS Kit, these capabilities provided via GMS are not available on Huawei phones with HMS. If you want your app to run on these phones, integrate Huawei Mobile Services (HMS).
Huawei has provided some HMS Core kit plugins for Flutter. They have been published to public open source communities. You can also find them on GitHub.
Account Kit plugins for Flutter
Ads Kit plugins for Flutter
Analytics Kit plugins for Flutter
AR Kit plugin for Flutter
In-App Purchases Kit plugin for Flutter
Location Kit plugins for Flutter
Map Kit plugins for Flutter
Push Kit plugins for Flutter
Scan Kit plugin for Flutter
Site Kit plugins for Flutter
In theory, yes it could. Huawei uses an OS called Harmony OS.
The Arc compiler in Harmony OS supports all the major programming languages including C/, C++, Java, JavaScript and Kotlin.
Flutter compiles Dart code to native device code (Java, and Kotlin for Android and Swift for iOS). Huawei is making an Arc compiler that supposedly makes it easy to turn Android apps to Harmony OS apps. What does this mean for Flutter and the AppGallery? I'm not sure.
So to your question, in theory, yes it could but I would just recommend coding your own app in one of the languages mentioned above and using the Arc compiler to put it on Huawei's AppGallery.
UPDATE:
So apparently you can just put an APK on the Huawei App Gallery: https://developer.huawei.com/consumer/en/doc/distribution/app/30204. Since you can obviously make APKs in Flutter, I don't see why not.
Update on this subject:
we received the communication from Huawei technical staff to delete all Google Play Services in the app and substitute them with theirs Huawei Mobile Services, before the end of November 2020.
It seems that after this date they don't accept Google Play Services inside the apps. Don't know if app published before will still be there after.
We build Android-based game Apps on the Cocos2d platform using C++ and JavaScript. App uses no internet.I can able to see the crash report when we use the android studio to debug. but how to catch the log/report when the app crashes on the mobile device when it's not connected to Computer.
Use crash reporter, which allows your to view crash-related information on the web when a crash occurs. It's easy to integrated into your project by reference each document.
You can use Crashlytics by Fabric (recommended)
The most powerful, yet lightest weight crash reporting solution. You can easily integrate with your app through gradle and get crash report.
Enable NDK crash reporting in your project, for more information check this thread.
BugSense
I have tried to find out from the documentation whether Google is supporting NDK C++ crashes in the newly released Firebase Crash Reporting. So far I have seen only Java crashes support.
Does any one know if Google is planning to add support in the near future.
In the initial beta version, Firebase Crash Reporting only supports collecting Java crashes (on Android).
Can't make any comments on future support, but its certainly an important area to consider for us.
After google's acquisition of fabric and their claim that crashlytics will become the main crash reporting tool for firebase; I would say that crashlytics is the way to go. Crashlytics also has good ndk support
I can't find this in any of the facebook documentation. Has anyone submitted an android app they built with react native yet?
I found this gist which outlines the process of creating a release APK file (credit to the author, marty-wang).
Once you have the release package, you should be able to upload the APK manually through the play store.
Edit 2016-06-01:
The most up to date way to handle RN builds for Android and iOS would be using Fastlane - the tooling abstracts building and uploading to both the Play store, as well as to the iOS App store/Testflight. Also allows for generation of screenshots and managing store metadata in your code base. Danial Banck has a great write up of how to do this that I personally have used myself and can highly recommend.
I have an Android app which has a C++ library (via JNI).
Whenever the library crashes, it makes the app also crash, but I don't receive the crash on crashlytics.
Is this a limitation of Crashlytics. Does it only catches the uncaught Java exceptions?
Note: Any Java exception on main thread that makes the app crash is caught by Crashlytics, so I know it is working.
Now it's official, Crashlytics supports NDK!
If you read their blog:
http://www.crashlytics.com/blog/crashlytics-february-2015-update/
They say:
Latest Toys from Crashlytics Labs : Many of you who are building awesome apps with the NDK on Android have
requested support from Crashlytics. Since opening access to our beta
program in October, our Labs team has continued building this out and
enhancing its functionalities every day. We’re now working with top
companies who have already shipped their apps with our beta — so if
you haven’t test out our NDK beta yet, request early access here
You can get the beta access here:
http://try.crashlytics.com/secret/
Edit:
We been using the beta for some time now and it does the trick nicely. It's now out to the general public and you can read their blog post about it.
You're right that the Android SDK only catches Java exceptions at the moment. Twitter announced that Crashlytics has NDK support coming soon, though.