Pushing Latest Android Build to Devices - android

Is there a way or an app that allows me to push my latest android build to all devices that have it installed? My app is not in the Google Play market yet but would like my testers to not have to manually install every build I push.

Why don't you just use dropbox?
Install it where your developing the application then share the folder of available apks (releases) to the testers that also install dropbox on their phones. When an update occures (you move a file to the folder) they'll get an update notification, then they can go and install it right from dropbox.

I wrote an update library a while back, which you can find here. It allows you to update your app by maintaining the latest apk on a server, along with a text file with the latest version code.
The library is open source, so feel free to adapt it to your needs.

Here are some solutions you might find a few of these have forced updating and auto-updating.
Android Google Play Market - Beta Section
Appaloosa
App47
HockeyApp

You would have to build your own update mechanism into your application. It would need to periodically poll a server and ask if there was an update available. If so, it would need to download the update and trigger the installation of the update.
Maybe this is too much effort for this case.

For this need, I would definitely recommend TestFlight. It's free, iOS/Android compatible, and does everything expected when dealing with beta app deployment.

Related

Flutter: in app update without google/apple store?

My company (where I work) created an application for a company. I worked alone on this app and nobody else is into mobile developing + I am new in application developing. I use the firebase app distribution function to share the APK with the testers.
The problem that the testers are bored that they always get an email when there is a new version and have to install the new version through that.
Is it possbile to achieve some kind of in-app-update without using google/apple store? This app is for a company, that is not an option to put it on google/apple store.
The packages I found are using the store...
https://pub.dev/packages/new_version
https://pub.dev/packages/in_app_update
Sorry for the newbie question, thanks you in advance.
I'd suggest the following steps:
Enable Firebase Storage
Name your apks by version code
When you run your app, search the Firebase Storage for the max version code file
Compare running app's version with max
Download
Launch installer
Note: This is not in-app-update, but rather an automated process for downloading updates to a device. And launching installs may be restricted on Android 11 and higher, so look into that if necessary.

Is there a way to upload a new version of apk which will not show up as an update to users who have already downloaded the app?

Here is the scenario we are in:
We recently pushed an apk to the play store - the manifest file has the maxsdk version set as 26. This means that for the users with version 8.1 of Android does not see the app for download on the play store.
What we want to do is create another apk without the maxsdk version and upload to playstore replacing the existing one - no change in code as we have already tested the apk with version 8.1. However, we are concerned that the users who have already downloaded the app will get an "update" which is not really an update.
Can someone suggest the best way to deal with this?
You can achieve this by uploading an APK with minSdkVersion=27, and include the previous APK in the release, i.e. you'll have both APKs in the release but your existing users won't be eligible to release the new APK so won't see the update.
Then, in your next "real" release, you go back to your normal minSdkVersion and go back to a single APK per release.
It's a bit hacky but achieves what you want.
Hope that helps!
The best way would be to simply release a proper update, which in the version description simply says that you added support for Android 8.1. If you're updating the SDK, you are indeed making an update, and this sort of 'update' is commonplace.
Users won't be put off by the fact that there's an update that is exclusive to a particular Android version (which they may not have), as it will show that you're committed to supporting the latest firmware.

Auto Updating Sideloaded Android App on Start

We have an Android app (.apk) published to a publicly accessible URL, any user who knows the URL can download and install the app.
The app is already installed on the relevant user phones and allowing sideload option from the settings is turned on.
How can I force the app, on start, to check for update and replace the existing app if found, then restart the app (to pick up the latest version)?
Is there a standard solution or a software package? Should I be thinking in a different way?
I am using Xamarin Forms, however, I am happy with Xamarin Android or any Java-based solution.
One thing you could do is to have a small plain text file in the same server where the APK is, that contains the version number of the APK available on the server. The runing app then just reads that text file and compares against its own version number.
If the version on the server is newer (has a higher version number), you simply download the new APK to a temp dir and install the APK programatically using the method outlined here: Android: install .apk programmatically
The way to go is HockeyApp. It´s a distribution system that does exactly what you are looking for. Besides, you get a useful crash logger and some statistics, etc. It´s free for 2 apps.
Once you install and configure their SDK in your Android app, an activity will popup telling the user a new update is available if there is any.
The user can install the new version with a button tap. Simple.
The setup process involves installing a nuget package and write a few lines of code in your main Activity class.

Can an Android app auto-upgrade itself?

The device my Android app is running does not have Playstore on it. The plan is to pre-install the software when shipping the device. I am now looking for a strategy to upgrade the application.
I found this useful link to install an Android app from the apk file:
Android: install .apk programmatically
I am thinking I will use this logic to auto-upgrade my app. I am wondering if it is even possible. I am thinking the upgrade will first try to uninstall existing version but will fail as the executable is still running and the file may be locked. Is there a better way? Regards.
Peter, we've just implemented the same thing.
Users have the software pre-installed on their device and we host update APK's on the companies servers.
From the app they can then check for updates where we have a WCF service which extracts the APK file (essentially a .zip) and returns the manifest details. From there we have the version of the APK and can compare it against the local version.
If the user decides to upgrade they can download the APK and you can automatically launch it. At which point the user will be told the application is going to be updated. There are no file locks etc, the app will just close and restart using the new version.
Note: Downgrading is not "automatic". The user would have to first uninstall the app. For upgrades, however, it's a simple case of downloading and launching the APK version (the user will be told they need to allow installations from unknown sources if this is not checked).
You have a couple of options, depending upon your target system.
Use the link you posted. This will provide the user with a traditional install dialog, whereby the user can choose to install or not. You should avoid doing that automatically, as APKs can be large and you might irritate the user if they don't want updates.
You can install updates magically, but you will require the firmware signing key (or possibly root, but I haven't tested that). That will not ask for consent from the user. You will need to add additional code using reflection to access the installation methods of Android. If you go this way, you should build an opt-out/in mechanism.
If your app is open-source, F-Droid would solve the problem for you.
F-Droid is an installable catalogue of FOSS (Free and Open Source
Software) applications for the Android platform. The client makes it
easy to browse, install, and keep track of updates on your device.
Mainly, it updates your app when necessary. (Or just have a look at its source code for inspiration on how to do it).
Yes but as far as I remember only if you had Root privileges in order to have access to the INSTALL_PACKAGES permission.

Blocking Apk's from installing directly into BB10.2.1 updated devices

I port my android apps for making bb10 builds . Since now from bb10.2.1 update blackberry has introduced a new concept wherein apk's can be directly installed and can be installed in BB10 devices if the manage apps in settings menu of the phone is made ON. My question is that I wanna restrict my users from doing so and not installing the apk's into bb10 . And take download my app only from appworld.
Has anyone faced and has fixed this issue kindly tell me on how to solve the same.
Based on the Android behaviour, I don't think you can restrict users from doing so.
I haven't tried it on BlackBerry but from what you say, that option sounds analogue to the Unknown sources setting under Security settings on Android. If the user enables the installation of applications from unknown sources on their phone, there is now way to prevent the direct install of the apk (by adding something to your apk or any other way).
There is no way to restrict it to BlackBerry World only. If they get the APK, they can load it directly this way. There may be other ways around it though.
If, for example, your app is for sale and people are side loading a pirated copy, you could change your app to be free, and put some advanced functionality in your app behind an in-app purchase. That way they'll be forced to go through the storefront at some point to pay. This takes bigger changes to your app though, and the IAP implementation is likely different between BBW and GPlay.
You could also put in a version check: when your app launches, it checks a special file on your web server to see what the latest version of the app is. If they don't have the latest version, it doesn't let them use the app until they upgrade. This won't prevent side loading or piracy outright, but you can put out updates often enough to make side loading very annoying. When they are roadblocked and told to get the new version, you can link directly to the storefront to encourage them to get the latest version there.
Thirdly, and lastly, if you port your app to a BlackBerry 10 native, cascades, or WebWorks app, the app file is fully protected and can't be pirated or extracted from BlackBerry World (since the platform is secure). That will 100% protect you from piracy on BlackBerry 10.
I hope this helps!

Categories

Resources