I Have a query
I have an app on the Google Play store since long and it was developed using Cordova
Now I have made a separate APK using Native Android (Android Studio)
I have 1000 downloads!
I want to replace the new Native built Apk with the old Cordova
without losing any downloads or review & ratings
How can I Do that?
As long as it is the same keystore and package name, you don't have to worry.
Simply create a new Android Studio project (or in whatever IDE you use) and make sure the package name is the same as the previous one. You can change it after the project is generated, but it is harder than making sure it is right.
After you generate the project, write the code.
After you write the app finished, just upload it with a higher version code than the current one (just like normal). Make sure it is signed with the same keystore and has the same package name and you can update it running different code
AS you already have the code (or so is my understanding) make sure the package name is the same, the version is higher than the previous upload and it is signed with the same keystore. Upload and you are good to go
Related
I want to test my react native application by installing it on other devices. I already got release apk file from output folder in Android directory. I want to get the recently updated version of my react native application to test outside of my development environment. How to get the updated version of my application?
Every Android app needs to be signed. Otherwise it will fail to install.
Android Studio generates a default keystore and key. It uses it to sign your app if you deploy a debug version of it during development unless you specify an own key.
If you want to distribute your app to others, you should generate an own key and use only this. Once you released your app to any app store, you must always use this same key to sign your apps*.
Android devices will only accept APKs as an app update if the old and new version are signed with the same key. Otherwise, if both apps have the same application ID but different signing keys, the update will fail.
The best practice is to store your key and the passwords somewhere safe. E.g. in a separate private git repository and a password manager.
Whenever you change development environments (work on a different computer), you need to reuse the same key in order to be able to update your app.
* You change keys in the Google Play store but for this, you still need to have the original key
I uploaded a test-release for an App on both iOS & Android on AppStore/GooglePlay using their respective native programs. In other words I reserved their bundle-identifiers string.
Now I'm trying to code the App using Flutter, which is freshly new to me.
Can I create a Flutter project (running on Android Studio) for this app and then change the bundle-identifiers names for each platform separately? and will it work so I could update these apps continuously?
For example,
One App created with a bundle-identifier for iOS like this: 'com.thisApp.thisApp', on itunessconnect (reserved).
Same App with a different bundle-identifier was created for Android on Google Play Console and reserved: 'com.anotherApp.anotherApp'.
None of the apps are LIVE.
Now, if I create a Flutter project I have to choose a package name say 'com.thisApp.thisApp'.
This package name will be created for both platforms by default!
Although I figured out that you could change the package name in Flutter,
as in this post - How to change package name in flutter?
However it's still isn't clear to me, if I DO change it, does the package-name must be identical foreach platform? i.e 'com.anotherApp.anotherApp' OR could the package-name/bundle-id for each platform differ? and even if it works on debug, will it work on release?
So I managed to solve this and answer my own problem.
Yes it is possible.
As already mentioned, before I started to work with Flutter, I used Android Studio and Xcode to upload a "draft version" of the App to the Google Play and App Store respectively in order to "reserve" these AppNamePackages.
Since in one store the same name/package was already taken, I used another name, for example:
com.thisApp.thisApp
and
com.anotherApp.anotherApp
To achieve this in Flutter you need to make sure that:
You change the desired applicationID in the Android-app level build.gradle file and in the AndroidManifest.xml
for this example lets call it com.thisApp.thisApp
You go through equivalent procedure for iOS by changing the desired package name in the info.plist.
for this example - com.anotherApp.anotherApp
By selecting any file under Runner folder (iOS folder in Flutter) you can click "Open iOS module in Xcode" and pick the correct App name and package in the App Project.
And that's it. Flutter didn't make problems considering the two different package names. The App bundles were uploaded based on their previous Google Play and iTunesconnet configurations.
I have published an Ionic app to google play and it's working fine. But, I had to make a change to its package name and now when I try to reupload it, it says the package name should be the same as previous version.
Your APK needs to have the package name com.mypackagename.
You need to use a different version code for your APK because you already have one with version code 'myversioncode'.
I'm happy to take down the whole app and upload the newer version but I don't think google would allow me to do it.
How can I work around this? Should I update the version code as well?
Think of the packagename as kind of a unique id for you app. If you look closely, a playstore-link is always a combination of the url and your packagename, like https://play.google.com/store/apps/details?id=COM.YOUR.PACKAGENAME.
When you create a new app project in the developer console, and upload the first apk, this project is permanently linked to the given package name.
I think the reason for this is androids app update scheme. By comparing the package names it checkts if you have a certain app installed, and if the installed version has a lower versioncode then the one available, it detects that you could update it.
So basically you have two options:
A) keep the old package name and do a regular update
B) change the package name and create a new app project in the developer console. publish your "new" app. Keep in mind that this app starts at zero, so your previous downloads and ratings are gone
You can not update the same app with different package name instead disable the previous app and upload new app with a new package name.
I'm developing an app from the scratch, but customer wan to make it as an update for the existing app on the play store. How can I do it, and what do I need (certificates, key stores etc.) ?
There are mainly few things that you need to keep in mind while you are going to create an update for an app.
1.The package name of the app should be the same
-This will make sure there is only 1 instance of this app running in the device, the app is recognized as another version of the app developed.
2.You will need the keystore file which is used during the release of the previous version.
-This is to make sure the digital signature remains the same for this update too.
**
3.Version number in the manifest file of the app.
**
-You have to increase the app version in the manifest file without fail for the android system to identify this app as a new version of that app.
change the value of "android:versionName" & "android:versionCode" in the manifest file.
Just get the old code of your project and modify it first and if you don't have source of your old app then make sure that the package name of your new app is match with old app and version of your current app is also higher then previous app other wise it's not possible to update in Google play.
Right click on your project and click on Export tab then select Android then select Export Android Application then Browse your project (I think it's by default same so no need to do anything just click next),
Now select Use Existing keystore (By default selected) and browse your Keystorefile as well as password which you enter last time then click Next.
Create alias and again enter the same password then give APK name with .apk extension and then click on finish.
After doing this all step if you are getting error anywhere then might be your password or your keyfile is wrong.
PS: Don't forget to update your app version in manifest file
I guess this could be a common problem for new android developer like myself so I thought to ask it even so it is not a big deal.
I would like to have both the current published stable version of an app and the under development version on my device. Yet when I want to install both I get
Re-installation failed due to different application signatures.
You must perform a full uninstall of the application.
I understand it technically yet I was wondering how I could have an easy way around this so I can have both application on my phone. I could change the package name for the time being but I hope there is an even more straight forward way to get it done.
Thanks
UPDATE
Solution as given by "Marc Bernstein" in the following post - thx Algo for posting the link to it
How to change package name of an Android Application
There is a way to change the package name easily in Eclipse. Right click on your project, scroll down to Android Tools, and then click on Rename Application Package.
Just change package name of your published and development version Application. Changing Package name is really very simple and easy, follow that post
https://stackoverflow.com/a/9171773/185022
The "published" version should be signed using a release keystore.
The "development" version should be signed using a debug keystore.
At installation time, Android will complain that the two applications (having the same package name) have different signatures, and won't install the latest one (Re-installation failed due to different application signatures.).
To fix this (normal) behavior, change the package name of your application while developing it (ex: com.example.myapp-dev).