Suppose I have two developer console accounts.
If I want to upload same apk in both accounts, then whether both apps works fine and ad will serve properly or is there any problem ?
You can't upload same .apk from two account or the same account.Google check out the packageName and version for this .So if you want to upload same .apk from two account the you have to change the package name
Should work fine as long as the package name of both the apps are different.
Play store requires each app to have a unique package-name to identify each app individually. ( Just like we are assigned unique roll numbers in exam :) )
Here is what you can do
1) You create a new project with same source code and change package-name. ( Easy way)
2) Create a new project. Add existing project as library to it. Create a dummy activity in new project which just calls you main activity. This way you will not have duplicate code.
But I will not advise that because then your app will be competing with itself. Your downloads will be divided between two independent app which will result in lower chance of your app to be discoverable.
Related
I presently work on Firestore project in Android. The project works perfectly. Now I want to create another android app for the same Firestore project. This is a helping tool for the main app.
But here I try to add another app to Firestore it displays error the same SHA key is used.
Now how to rectify this problem?
If you want to add another app to a Firebase project, you need to do at least one of two things:
Give the app a new application ID
Sign the app with a different signing key (different SHA-1)
If you want to use the same signing key for the second app, then you will have to give the app a different application ID than the first.
I have published an android app in the store, however, we lost the keystore, when I unpublish the current app and try to republish another app with the same name I've got a message saying that I couldn't publish an app with the same name, is there a manipulation to do ?
Thanks :)
Every application on Google Play needs to have a separate application id (like com.company.awesomeapp). So if you lost your keystore and can't upload the application with the id you had before, you will have to change the id (say, com.company.awesomeapp2).
One small note, now the application id is not the same as the application package. So you may continue to use the old application package internally (for the source files and in the manifest), but you need to change the applicationId in gradle.build to something new. If you reference the application id somewhere in the manifest, you can use a placeholder: ${applicationId}.
The solution for my problem was to rename the previous application and create an app with the same name.
I obviously had to change the app id also
Even though your old app is not available for download anymore, the Play Store still requires a different applicationId, because some users might still have the old app installed on their devices (it still may be 'supported' in the sense that users can buy in app purchases etc.), and it's the Android OS that explicitly denies installation of packages with the same name, and allows updates when the id and certificate is the same.
You could imagine a situation where you delete an app from the play store, and if it would allow creating a new one with the same applicationId, and someone got hold of your keystore and certificate, that person could upload a completely different app and trigger updates to users with your old app. Now, that would be very bad and simple solution is just to not allow same applicationIds.
Our Android app will be taken over by a different company. This requires that the app-id/package-id be changed (from com.mycompany.app to com.newcompany.app). However, when a newer version of the apk is installed, it gets installed as a separate application as the app-ids don't match. Wondering if there is any hint we can add to the manifest indicating that the current version is an upgrade for the specific app-id. Guessing this would be a common problem for any company that acquires Android software product from another company. Regards.
There is nothing you can do to get one app (com.package.appA) to upgrade(via app store) to another app (com.package.appB).
That said, you don't really have to change the package name to transfer the app. Most users aren't aware of the package name of the app they install so it won't really buy you any credibility.
What you would have to do is provide the new company is the release signing key for your application. They are going to need this to upload new versions of the app to the play store. Hopefully you have just one for this app.
Tips for the future if you're planning on transferring more apps:
Use more generic package names (com.mysite.calculator vs apps.calculator). Package names are just identifiers so use them as such.
Use a single signing key per project so that you can give it away with the code and won't expose all your other apps.
If your Gradle file specifies an application ID:
You can go ahead and change the app's package name. (However, this would require a lot of updates to the app's source code, since the generated R class will end up with a new package name. Also, the package name used to resolve relative class names in the manifest would change.)
But, you must keep the same application ID if you want Android to consider the result to be the same app. Furthermore, you must keep using the same signing certificate as well!
So I have learnt my lesson in backing up my keystore and the new one is now safely tucked away from now on. { and yes I have looked for the old one for ages :-( }
I need to un-publish my current app and so I can reuse the app name and create a new app version 1 with the new keystore I have created.
I can only un-publish my app and not delete it as Google need to keep it as unpublished for legal reasons etc etc so understand that.
How do I create a new app with the same name as right now play store says that the name is already in use.
Still digging and investigating a solution but any help would be appreciated.
So after talking with Google support I really wanted to get the correct solution that only changed what needed to be changed and leave what could be left alone.
So for all the folk out there like me who lost their keystore file, here is the necessary steps for republishing your app where you have lost your keystore.
Unplubish your app.
So under ALL APPLICATIONS you see this and the app shows as Unpublished under Status.
Change the name of your unpublished app.
Here i just added the word old to the app name.
Rebuild your app with a new package name as follows:
if the current package name is com.mycom.myapp then use a new one such as com.mynewapp.myapp
Make a new keystore and when they say to KEEP IT SAFE they really do mean it, KEEP IT SAFE.
( I am still in the process of republishing the app so I will update my answer with more info once published.)
Google Play allows many apps to have the same title. However, the application package for each app needs to be unique within Google Play. This is the package attribute value that you provide for the <manifest> tag in the AndroidManifest.xml file of your project. The package name serves as a unique identifier for the application.
For example:
com.yourwebsite.yourappname or com.yourwebsite.yoursuitename.yourappname.
Here's the link for Android manifest :http://developer.android.com/guide/topics/manifest/manifest-element.html#package
How do I create a new app with the same name as right now play store
says that the name is already in use.
You cannot use the same name or package name. An app once published cannot be deleted and the package name is forbidden going forward once published to avoid re-publishing of banned/forbidden apps.
Same name can be used by a different developer but not by the same developer who already has an app with that name. (This is my understanding from a time when i entered the same name by mistake)
You will need to use a different package name and app name. But, if it was banned there is a high probability that it will survive with the new package name for long. It will get banned again and probably also lead to banning of the developer account. Be careful.
Now I managed to sign the apk (using Eclipse Android Tools) and adb install .. to the device for testing.
But this removed the debug function, e.g. "step over" which make problem tracing much more difficult.
Is it possible to debug the inapp billing using Eclipse?
Unfortunately I don't think there is any way to step debug, I have just been using print outputs. This is due to the fact that you have to sign your app with a release key in order for it to communicate properly with the billing service. Very annoying.
When you go through the in app billing documentation, you kinda realize that it can take substantial amount of time to understand this complex piece of technology. Most developers feel the need for a working HelloWorld, and then later play around with the builds.
I have uploaded 2 projects
The android sample project. You can download this project, and immediately run the sample. This will help you quickly debug/trace thru and figure out how the in app billing works.
A cleaned up project to help you integrate your app quickly. This can help like a library. Just integrate make your “purchase requests” on your “checkout” button action.
Mind you : I have not incorporated the security recommendations. Read android in app billing documentation. Until then you are on your own risk.
For 1
Download “http://www.4shared.com/file/f5wH3qke/InAppBilling1.html”
Create a new gmail account for all correspondence (Why, I will explain below)
Pay that 25$ and purchase a “Market Place” account.
Import the project to your eclipse environment
Create a signed application apk, File-Export-Select Your Project-Create OR Use keystore, it should be valid for 25 years from today.
Upload the signed apk to the market place as a “Draft Application”, DO NOT PUBLISH it.
For the uploaded apk, you need to add “In App Products”. You will find this link on the home page for your uploaded apk.
In Security.java dont forget to add your “public key” from your market place account “edit profile” page.
On the “In App Product List”, you need to add the following products one by one
The text below should used as “In app Product id”
sword_001 as Managed
potions_001 as Unmanaged
Title and Description dont matter (for testing purpose). Add what you need here.
Cost add 1$ (minimum)
Click auto fill
Save
Publish the in app project (dont get confused here, you only need to publish the in app product, NOT the APP)
In the test account, add your personal gmail id here. Now, this gmail account needs to be configured as your first gmail account on your phone.
Yes, this WONT work on your emulator
Now the sample app should work.
For 2
Download “http://www.4shared.com/file/h8YnJyf_/InAppBillingIntegration.html”
To integrate, in your calling activity initialize the checkout code
Handler handler = new Handler() ;
CheckoutPurchaseObserver checkout = new CheckoutPurchaseObserver(this, handler);
To send the checkout request for your product
checkout.sendCheckoutRequest(purchaseUri.toString(),null);
Important Note :
This purchaseUri is the “In-app Product ID” of your resource on the “market.android.com/publish-->Create New In-App Product” options. This string should be set as the “in app product” id.
That’s why the “id” is most important. The “In-App Product ID” is how you refer to that particular product.
Also, in Security.java dont forget to add your “public key” from your market place account “edit profile” page.**
Debugging Notes
LogCat will show all errors as InAppBilling tag
This project creates a shared_preferences named “inappbilling” And debug is set to true
The androidmanifest.xml may not be needed since this project does not
have a home screen.
Why do we need to create a new gmail account ?
Simple. The account you purchase your market place account for, cant be used for “testing” your in app billing. Since you cannot purchase products for yourself. And your primary account on your device should be set as a “test account” on the market place account. Chicken-Egg issue here. Hope its clear.
An interesting blog I came by “http://crazyviraj.blogspot.com/2011/06/some-notes-on-implementing-in-app.html“ (not mine).
In my app, I used the test product id, android.test.purchased, which will simulate the actual buying process (ie, will show the in app dialog and you'll be able to purchase and get a response that can be handled by your application). Using that product id, you can run the in app code on the device (unsigned) via eclipse over usb connection. You still might need to work around some things for testing (ie, account for the fact that you are using a testing product id and not your real id), but I found using that product ID did help me quite a bit.
See the testing section of the in app billing guide