I have Android Apps A and B waiting to be published on Android Play-store.Is it possible to keep same fingerprint for multiple Apps, with different package names?
This is to allow Just one of the two Apps to be installable in a supporting device. How to do this
I could use the same fingerprint to publish apps in Play-Store. But I was able to do an Install of both the Apps on the same phone.This is not what was intended. Any Solution ?
The application ID is what distinguishes apps on your device and in Google Play. I don't think it is possible to force only one app to be installed at a time if they have different application ID. Android has an "application ID" which is used to uniquely identify your app. It has nothing to do with what keystore is used to sign the APK.
But, the application ID is not necessarily the package name. An excerpt from the docs:
Although your project's package name matches the application ID by default, you can change it. However, if you want to change your package name, be aware that the package name (as defined by your project directory structure) should always match the package attribute in the AndroidManifest.xml file
So you can have two different apps with the same application ID, but different package names. And then only one of them could be installed on a device. I'm not sure if that's what you're going for, though.
And I'm not sure that your reasoning for doing this is great. Maybe you can expand upon what you mean by
This is to allow Just one of the two Apps to be installable in a supporting device.
so that maybe someone can suggest a better alternative for your situation.
Related
I need to temporarily change the package name of an Android app.
The reason I need to do this is because my customer does not yet have a Google Play account, but wants to test the app I've been developing for him. So I want to put it on an internal testing channel using my Play account, but I want to do so under a different package name.
When I develop iOS apps, there is a mechanism in Xcode by which any app can have multiple targets, and each target can have a separate bundle ID, and other properties, creating a unique app from the same source code. Then I can switch between targets at will to produce either version of the app.
What is the correct way to do this in Android?
The answers I've found online suggest that a wholesale refactoring of all the package names in the actual source code files is necessary -- I don't think this is the right answer in my case. I just want to toggle between two package names the same way you would toggle between build variants.
Thanks,
Frank
Use applicationIdSuffix ".demo" to extend the given name (the namespace does not really matter, the package name only has to be unique). One probably cannot completly override the applicationId; the merge output of AndroidManifest.xml would show what is broken.
Better publish to Firebase App Distribution first (can be linked to Play Store).
There the obstacles are generally lower - and one can also see remote crashes.
The docs for publishing WearOS apps consistently state that:
Ensure that both the watch and phone app modules have the same package name.
However I'm wondering if it actually means applicationId from the build.gradle file instead of package name (my understanding of what package name means is in the package statement at the top of source files - maybe that's wrong?)
The reason I'm wondering this is that another part of the docs say that:
Every Android app has a unique application ID that looks like a Java package name, such as com.example.myapp. This ID uniquely identifies your app on the device and in Google Play Store. If you want to upload a new version of your app, the application ID (and the certificate you sign it with) must be the same as the original APK—if you change the application ID, Google Play Store treats the APK as a completely different app. So once you publish your app, you should never change the application ID.
So, it sounds like it's the applicationId that is important when publishing apps, not the package name. Maybe I'm getting my terminology confused, or maybe the terms 'package name' and 'applicationId' are used interchangeably?
Also, I'm futher confused by the fact that you can have a package attribute in the application element of Manifest (eg package="com.example.myapp") - I currently don't have that so I assume it's optional.
I'm a bit confused, if anyone could clarify what exactly is meant by package name when it says Ensure that both the watch and phone app modules have the same package name that would be great. Thanks :)
I wanted to know if it is possible to submit multiple versions of the same app to the Google Play store. I know that Google Play allows developers to submit multiple APK's to the target certain device configurations, but we would like to release a different name of the app to each of our clients. Things that would be different in each app are the logos, app names, access to different types of information for each customer. I wanted to know if this would violate the Google Play Store's submission guidelines (it is an app built using Adobe Phonegap build, each app package name would be the same), would it be subject to rejection? I know that there are multiple questions on this site similar to this, but they are older questions and I wanted to see if this is something that Google Play is offering. Thank you.
"each app package name would be the same"
AFAIK, that not possible, since package name is used as ID in play store.
The package names must be different. Ideally, you would have unique security keys that signed the APKs as well. It prevents one app from accessing the private data of another app. Other than that, there's no policy or technical block stopping you from posting the same APK with different flavors.
As has been said - the package name is used as the ID in the Play Store.
But the way around this is very simple - just use different package names!
You'll be making the same app with different branding anyway so you'll already have different code bases.
Copy your entire app folder.
Find the config.xml. It looks like this (from the docs): http://docs.phonegap.com/phonegap-build/configuring/#example
Change the id. If you have two apps you'd have:
com.phonegap.appname1
com.phonegap.appname2
Upload each app to a different PhoneGap Build repository. This will create two different apps. Easy.
I am developing 2 android applications, which are clients for my server. I cannot install both applications on my android phone. I install the first app to phone, everything is ok. Then when I try to install the second app on the phone, I get the message that the application will replace another application (the first one), and then I get following error:
Application not installed: an existing package by the same name with a conflicting signature is already installed.
I mention that I have created one separate keystore file for every application, export them as in the android official signing application guide, then zipaligned them.
So the OS thinks that it is a single application? But in fact there are 2 different apps.
What am I doing wrong?
I think you are using the same package, which is not allowed for two different apps.
But for anyone who have the same error for installing another version on top of previously installed app:
I wanted to test released version of my app when the problem occured. I've had the app previously installed using eclipse, and than I wanted to install the same app but with released signature. I have even uninstalled the app using apps gallery, but the problem persisted.
The solution for me was to unistall the app using Settings->Apps->"the app"->top right corner menu->Uninstall for all users
I had the same error message, but these answers did not help. On a 4.3 nexus 7, I was using a user who was NOT the owner. I had uninstalled the older version but I kept getting the same message.
Solution: I had to login as the owner and go to the settings->apps... Scroll down to the end of the list where my old version was listed with a mark 'not installed'. Select it and press the 'settings' button in the top right corner and finally 'uninstall for all users'
Not sure what happens when you use the same signing key, because in all honesty, I never really tried it.
That being said, as Anand Tiwari, in his comment, has already simplified the answer, you cannot install two different applications with the same package name on one device. They, logically speaking, may be different to you, but for the OS, they are in fact, the same.
The problem also manifests itself when you try to upload the applications to the Android Market (Google Play). Google Play will simply not accept the second application. There is a short and simple explanation by Warren Faith here: https://stackoverflow.com/a/5788664/450534
As an example of how similar applications with a few changes are published to the Google Play store:
The free version of FriendCaster is: https://play.google.com/store/apps/details?id=uk.co.senab.blueNotifyFree
The paid version if the same app is: https://play.google.com/store/apps/details?id=uk.co.senab.blueNotify
Notice the ending of the package names. In this case, you will be able to install both the apps simultaneously on one device.
I think your problem is that both your files have the same package name. You can name both apps with similar packages, but they can't be identical. In fact, using the same package base can be used to communicate between applications ie. App1: com.mypkg.app1 and App2: com.mypkg.app2. However, they both can't be called com.mypkg.app - the package name is how Android identifies apps, and can't be identical.
You should be able to sign as many different apps (assuming their package is different) with the same key.
Make sure not to lose your signing certificate, if you lose it, you will not be able to upload a new app with the same package name. If you lose your signing certificate, you will be in big trouble.
Good luck.
Short question
In Mono for Android (MonoDroid) - or Android apps in general - are identical package names with only case variations considered to be equal? E.g. 'Application.Application' = 'Application.Application'. The question refers specifically to equality as considered for the Android market application update mechanism. Not to equality in general.
If NOT then is there another way to change the package name but still have the Android Market consider the application as the same app? We want to insure end-users don't need to install a completely new app, but can use the standard Market update mechanism.
More detailed problem description
Our application was put in the Android Market using a package name containing upper case symbols, e.g. 'Application.Application'. So - in hindsight - we did NOT follow the advised Java package naming conventions. However the original application functioned without any further problems.
We have now extended our Android application with push notifications. During testing a problem surfaced that sending push notifications through the Google C2DM service did not work using the upper case package name. Only after changing the package name to contain no upper case symbols BEFORE the dot (.) did push notifications come through in our test environment. E.g. 'application.Application'. To achieve this we changed the package name in the manifest.xml file and submitted a new request for the differently cased package name via the C2DM sign up form.
We did not foresee this problem. But we would now still like to deploy a new version of our app through the Market but are concerned about being able to use the conventional update mechanism. We don't want to distribute the application as a completely new app.
Can we realise this? And if so, then how?
1. Can we just go with the 'application.Application' package name?
2. Or is there some mechanism to allow a changed package name? We might then further change our package name so it conforms to standards, e.g. 'ext.domain.application'
Note we have NOT deployed our new application. We want to solve this package name issue before deploying server side changes to production (e.g. the push notifications 'provider'), since server-side code also contains the package name for sending the messages.
Further note that the app is build using MonoDroid and uses the C2dm-Sharp library to send and receive push notifications. Perhaps the issue originates there, although it's seems a general problem.
I've done some research, and found two different apps on Google Play, with two package names differ only in case.
check out:
https://play.google.com/store/apps/details?id=Jk.app.app
vs
https://play.google.com/store/apps/details?id=JK.app.app
Conclusion:
Google Play package names are case sensitive - so what you're trying to do is not possible.