so currently we are exporting APK to the play store and we are using Firebase app distribution for our testing track but now we want to start using App bundles instead of APK but the issue here that Firebase app distribution does not support App bundles, I thought of deploying an APK for the testing track and then publish an App bundle for play store release, but I think there is a risk here since the app bundle is not tested and may contain undiscoverable issue, our options are to migrate the testing track to the internal app sharing in the play console, is there a way to make Firebase app distribution support App Bundles or any other options?
Update May 2021: This is now available with Firebase App Distribution! You have to link Firebase to your Google Play account and then distribute .aab files without problems 👍
More info: https://firebase.google.com/docs/app-distribution/troubleshooting?platform=android#distribute-aabs
That's actually the only way for now. You have to upload AAB to playstore and APK to app distribution. Using app bundle will not cause any kind of testing issues or undiscoverable problems. I have worked at two mass-scale product companies, both are using the same formats and haven't faced any issue.
The best solution I have for now is to use Bundletool to create a universal .apk from my app bundle.
For our team, it was necessary to do this, since we had a dynamic feature module with <dist:fusing dist:include="true"/>, so ./gradlew assemble would not include this module in the build.
The command in CI looks something like this:
java -jar bundletool-all-1.0.0.jar build-apks --bundle=PATH_TO_YOUR_BUNDLE_FILE --mode=universal --output=zip.apks --ks=PATH_TO_KEYSTORE_FILE --ks-key-alias=YOUR_KEY_ALIAS --ks-pass=pass:YOUR_KEYSTORE_PASSWORD
Firebase App Distribution supports Android App Bundles (AAB)
This is documented on Firebase Distribute Android apps to testers using the Firebase console, just click the AAB button.
This guide describes how to upload Android App Bundles (AABs) to App Distribution and distribute generated APKs using the Firebase console. To follow this guide, you'll need to have access to a Google Play account for which you're an Admin or Owner, and an app that's been published on the Play account.
Caution: When you register your app with Firebase, make sure to enter the same package name as the app you're distributing. The package name value is case-sensitive and cannot be changed for your app in Firebase after it's registered with your Firebase project.
PS: Just upload your App Bundle (with caveats). That's what I'm gonna do now :)
Related
I have this app released on play store that I want to make available on my website. I tried downloading the signed apk via the Google play console and use that, but some users in China have issues installing it.
They get a message like this while installing: "Your device does not support Google Play Services and cannot install "
I have a few Google sdk bits referenced in my project (signin, safetyNet, ads) which I would assume I need to delete before building for this apk version, since target devices don't have gms..
What about signing? Can I simply build without the said code and distribute it? (Generate release apk in android studio) Or do I need to upload to play console and download the one signed from google?
Please let me know if you have any clues on this, been banging my head around for a few days already.
Cheers :)
This might help you taking your decision:
If you have Play App Signing enabled, the APK generated through your studio and the APK generated through Play Console will have different signatures.
Otherwise, both approaches will have the same signatures.
So, it depends whether you care about your APK on website having the same signature as Play Store. If you don't care about having same signature, you can go ahead with creating APK from Android Studio itself and publish to your website.
If your app utilizes Google Play Services, as is informed by the error message, then it WILL not run on the device unless Google Play Services and everything that it depends on is installed on the device. The only work around is to convert your app features that uses Google Play Services to its alternative that's supported in China.
I've dealt with similar issue on Huawei smartphones, my approach was to 'develop another app' using Huawei SDK, check out https://developer.huawei.com/consumer/en/ for its complete reference
I am having trouble getting Android permissions and/or Play Store code signing to work correctly with my Flutter app, which accesses Google Fit data.
My configuration:
I'm still just doing internal releases, so have not yet requested Google "verification" of my app.
I have two build flavors: flavor_alpha and flavor_dev, which connect to different Firebase databases.
For both flavors, the app attempts to access Google Fit data on the local device.
Each flavor has its own google-services.json, containing:
valid Firebase project info (project number, id, etc.)
"client_info" and "oauth_client" data which references the correct (I think!) client_id, package_name, certificate_hash.
For "local" testing, I build/install the app using a variety of mechanims. Behavior is the same for each:
directly via VS Code
flutter build apk; flutter install
flutter build appbundle; bundletool build-apks; bundletool install-apks
For "Play Store" testing, I build using "flutter build appbundle" then drag/drop the appbundle onto the Play store release upload webpage.
Behavior with flavor_alpha:
Access to Firebase project id: mydb-alpha
successfully authenticates via firebase_auth using email/password
successfully accesses data in Cloud Firestore
Access to device's Google Fit data (via "fit_kit" package)
successful access for locally installed build
unsuccessful if downloaded via Google Play
I assume this difference is due to re-signing that Google Play does. I have read and re-read the documentation related to keys and code signing, and I have tried changing the keys in google_services.json, but have not managed to resolve the problem. There's some detail I'm missing or not understanding fully. Also, due to the permissions problems I have with the other flavor (see below), I am not 100% convinced it is due to re-signing.
Behavior with flavor_dev:
Access to Firebase project id: mydb-dev-123
successfully authenticates via firebase_auth using email/password
successfully accesses data in Cloud Firestore
Access to device's Google Fit data (via "fit_kit" package)
fails to access in all cases (installed locally and via Play, debug and release)
Suggestions?
I don't understand why I am seeing different behavior for flavor_dev. Since it behaves differently from flavor_alpha, it seems I may have multiple things configured incorrectly in the build.
Can anyone point me in the right direction to resolve this, or at least help me confirm what is actually causing the problem(s)?
With Visual Studio 2019 I created a archive folder that contains 3 signed-apk files for the app I plan on publishing to the google store.
In the signed-apks folder the file names are:
com.blah1.app.apk
com.blah1.app-arm64-v8a.apk
com.blah1.app-armeabi-v7a.apk
Which one(s) should I use? The Google Play Console seems to let me add all 3. Any other information you also provide would be great as well.
Thanks.
You should upload all three. you are generating an apk per ABI
From the documentation:
Multiple APK support is a feature on Google Play that allows you to
publish different APKs for your application that are each targeted to
different device configurations. Each APK is a complete and
independent version of your application, but they share the same
application listing on Google Play and must share the same package
name and be signed with the same release key. This feature is useful
for cases in which your application cannot reach all desired devices
with a single APK.
Hi I see that Android Studio allows to build different APK for instant and installed app.
Does Google Play Developer console allows to upload different APK for instant and installed app there ? How does it manage ?
Does Google Play Developer console allows to upload different APK for instant and installed app there ? How does it manage ?
Yep. You need to upload different APK for instant and installed application. Google Play Developer Console has new menu Release management > Android Instant Apps to release instant app in addition to installed app.
You should go through this link to understand more Distribute your instant app
Yes, Play console allows you to add two different APK for the installable and instant app.
a picture is worth a thousand words
The developer console now separates your uploads by 'App Releases' vs 'Android Instant Apps', as illustrated by Pinkesh's answer. Better labeling would have been 'Installable Apps' instead of 'App Releases' in my opinion, as the later implies all versions. You are forced to use a different versionCode numbers for each type, even for otherwise identical APKs. The installable versionCode must be higher so the installable version will be an 'upgrade' from the instant version.
As to whether you would want to use the same codebase for both APKs ('bundles' now), like I do for my game app, the process has gotten better for arguing to do so. You used to have to do a 20+ step very code invasive process to break your app into three parts, installed, instant, and base modules here https://codelabs.developers.google.com/codelabs/android-multi-feature-instant-app/#0. For me, separate codebases would have been easier and less risky than this, but I still wasted a lot of time practicing with Google Codelab's example Topeka app before finding out it's all been depreciated. Now you can just add a separate module to store large resources and assets, flaging the module for just 'install-time' delivery, keeping the rest of your app under the 10G instant limit. You can include an 'isInstantapp' flag in your code to branch between instant and installable implementations.
I have created an App on www.hockeyapp.net manually which created an AppID for me. Also, I have integrated the HockeyApp sdk in my Android app and included the AppId i got from the manual creation on the HockeyApp. I have tried uploading the apk to the hockey app in beta mode and downloaded from the page provided for app distribution which worked fine.
Now I want to upload my Android app to the store. I want to know will the app directly send crash reports to HockeyApp as I have included the AppID and sdk in it while creating the .apk or should I first upload it to HockeyApp and then download it from there and then upload to the store?
I am confused on how it works with Store apps. Any help is appreciated.
If you have integrated the HockeyApp SDK and signed the apk, you can now upload it to the store. You will automatically get the crash reports in the HockeyApp crashes section. You just have to integrate the SDK and test it. If it works fine in your test, then it will work fine on store too.