I'm developing an android app that won't be downloaded via the Google Play store but instead through an APK listed on my website. I was looking for a way to update this app.
I've done some research and I think the best way would be to run an API at the start of the app that checks the downloaded app's version against the version of the APK listed on the website (at the time of app launch). If the version of the website APK is higher, then I prompt the user for an update. Ideally the API would get the APK itself without the user needing to go to the website.
I have some doubts about this that I hope someone can answer however:
First - Once I download the new APK does the old one get deleted or do I have to do that?
Second - How do I keep User Preferences?
If this isn't the right way to do it I'd appreciate any tips.
If it is the right way and you know of some good resources to build an API like this I'd appreciate those too!
Related
This question already has answers here:
How to autoupdate android app without playstore? Like Facebook app or any Contest app
(6 answers)
Closed 2 years ago.
I am developing an android app, I am pretty much completed with everything and now I wish to roll out updates to it in order to maintain and perform some bugfixes. (Note : I don't want my app to be released in the market as its related to my college degree project. i.e. It has only a few audience). If an update is available, I want the user to get notified of the update as soon as they open the app. And when they agree, the app should download the new updated .apk file and when the download is finished, it should automatically prompt the user to install it. (Prompt example attached below)
How do I achieve this without using the android playstore market?
I heard somewhere i can do this by simple version comparison of my app with a public domain (like dropbox or GitHub) which contains a txt file (which has version code) and an updated apk. If the versions match with the txt file, nothing happens.
If versions differ, it should show a dialog to download the update.
How do I perform this guys? Please help me out?.. Can someone please help me out with actual java codes?
P.s. - I am actually fairly new to all this, and I wish to learn Android studio.
Thankyou so much my friends :D
You can achieve it using Play Store(I know you don't want to use it) but its the recommended way to do. In Play Core library iv Google has introduced in-app updates feature where you can roll out updates to the user without rolling out a new apk in Play Store.
Supporting API level 21 and above, the Play Core library allows us to offer in-app updates meaning we can show that an app update is available whilst the user is within the context of our application. For more information, you can visit the developer site.
I am installing security software/hardware into a couple different school districts. The application is at it's final stage, however I will need to send updates to users periodically. For example, a general password will be changed for the application every 6 months.
Installing an .apk is considered an "update" after the initial application is installed, correct?
I just have a feeling that there should be some easy way of doing this. I don't really want to give people an .apk. Someone could get smart and tear it apart to find the contents. That, and some others might not understand how to install files on their phone.
What are your ideas? Maybe a web link a user can go to that starts the install for them?
You have multiple misconceptions how updating, APKs and keeping keys secure work.
You have to host your APKs somewhere. Github releases is a pretty common way (but slow), but you could also use google drive, dropbox or your own server.
Your app has to fetch the server regularly and check if a new APK is available (pull-based). Second option is to use push notification in some kind e.g. FCM (push-based). Then you download the APK and let the user install it. Your app cannot start a installation by itself, it has to be done by the user.
But you can redirect the user to the installation menu with that APK, so he just has to click "Install". "Install from unknown sources" has to be enabled for that, if not the user will get an information about that from the OS with a way to enable.
There are apps like "APK extractor" which get you the APKs from google play without root, so there's nothing wrong about giving out the APK. Your APK should never contain secure keys which the user isn't allowed to see. It's easy to reverse engineer those keys, it's just a matter of time.
I have distributed my app through posting the link from google drive where the users can download the .apk file.Now that I haven't published my app in google play how to know how many installs or how many people have installed my application.Is there a way I can increase the count variable in the server or something like that?
Unless you went through the App Store or integrated some third party analytics tool like Fabric you would need to have implemented this in the application with a request to a server with a unique identifier to keep track.
Is there a way I can increase the count variable in the server or something like that?
Well that seems a bit shady. You don't want to lie to people, do you?
When you release an app on the Play Store, Google will keep track of how many users download your app, and update it accordingly. So if people use your app, then your downloads (listed on the Play Store) will reflect that.
To see your current downloads, you should be able to find that information on the "Google Play Developer Console." (I would imagine; I currently don't have access to the dashboard myself.)
First of all, I'm sorry I don't speak very good english. I have a thesis project to make android app similiar like logo quiz using java. Basicaly, I have to make the admin site of this app or make it updatable not via play store. I'm going to put the newest APK version in a website host. Does anyone here know how to make it work like that? Or maybe you have another idea to make the admin site? please tell me
The update also must be installed. The user will check is there any newest version. Then user will download it and the downloaded APK will be automaticaly installed
This is not easy to do. The only option you have is to write some server side code to let a client know what the latest version is. The client can trigger a local notification and alert the user that a new version is available.
Facebook managed to do what you're asking but I'm sure a lot of engineering effort went into it.
[EDIT]
Google has updated their policy to forbid dynamic updates.
“An app downloaded from Google Play may not modify, replace or update
its own APK binary code using any method other than Google Play's
update mechanism.”
FYI Without uploading on play store, user will never come to know about the updates of your app.
Or
There must be some kind of notification you should implement in your admin and send to your users using the app, and through that notification you should ask user to download updated APK from your web.
How do I package/export my app from eclipse for consumption? Where can I upload it other than android marketplace?
I've done all the programming but have no idea what to do next.
You should check out this excellent talk given at Droidcon uk last year
http://skillsmatter.com/podcast/agile-testing/how-to-run-a-private-beta-on-the-android-market
Read about publishing here. The process isn't too bad. You must:
Create a signing certificate
Build and Export for publishing
Sign
Distribute
If you just want to distribute to testers, you can sign with a debug certificate. Those who want to install the debug app on their phones must go to Settings->Applications->Unknown Sources. From there it's as easy as using adb install <path to APK> or uploading the app to a web server and having the target phone navigate to its URL using Android's browser.
As for other marketplaces, there are a lot these days, with Amazon's the closest second to the Android Market. Even WalMart has jumped in!
The biggest pain is setting up your signing credentials, but it's not a big deal. Just read the dev guides and you'll be publishing in no time.
Depends on if you are going to hold a private or a public beta. First things first though.
You need a signed .apk in eclipse, click File->Export and then open the Android Folder and click "Export Android Application"
It will walk you through signing your .apk. If you are going to do a private beta you could use a different key than the one you plan on using for the android market if you wanted.
If you are holding a private beta you can put the .apk out on dropbox or another service like that and send your beta testers the link. You will want to make sure they have checked "Unkown sources" in there settings.
If you are holding a public beta you can publish it to the market and just let everybody know it is in beta.
I have done it both ways... Having a public beta may discourage certain users from downloading the app but you will establish your place in the market. On the flip side you could be affected by ratings. It will depends on if your app is really ready for beta or is in more of an alpha stage.
Hope this helps.
I suppose this part of the documentation could help. It describes the specifics on how to publish your .apk file outside the standard Android Market channel. In fact, the whole "Publishing" section of the doc gives you a quite complete overview of what is possible to do, and how to do it.
Good luck your your app!