I have completed my starter app for google play market. I would like to make a free and paid version, so what im wondering is:
Can I comment out the parts in the paid version for the free version and put in dialogs referencing the paid on the marketplace more specificly using the same project just different version numbers and exported apk's?
Im wondering because i heard the marketplace will not let an apk have the same package name but ive used apps before that if you have the paid version you cannot have the free version, so im guessing its all about the version#
thank you for your time
You are right that Google Play does not allow APK's with the same package name's to be uploaded. It is using the package name that the Play store differentiates different apps from other apps.
You are, however, a little off track in thinking that it is the version that takes care of same app (free and paid).
However (again) Free and Paid version of the same apps can co-exist on the same device downloaded with the same Google account. There may be a function in the apps which checks and informs the user. But that is not a mechanism provided by the Google Play store.
Take for example an app called FriendCaster. (I am an independent freelancer who has nothing to do with FriendCaster or OneLouder Apps)
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
They both have the same versions expect with different package names (the endings are different). And you will be able to install both the apps simultaneously on one device.
In my case, I use the identical code base for both the free and the paid versions of my app. The only difference is (obviously) the paid version has all the advertisements stripped out from the XML's.
I use two different Eclipse work-spaces to keep my free and paid version separate from each other. This is more for convenience than any thing else. You can very well have the two projects in the same Eclipse work-space.
However, going by your comment on the OP, you cannot export two different APK's with different package names using the same project. If you have finished your paid version, you will need to create a new project for the free version. And you will need to export APK's of each project independently.
To keep parity in the code bases, I avoid using hard code wherever possible. For instance, in an Activity that opens the app's Google Play details page, instead of hard coding my package name in it, I use something like this:
Uri playUri = Uri.parse("market://details?id=" + Feedback.this.getPackageName());
Intent openGooglePlay = new Intent(Intent.ACTION_VIEW, playUri);
try {
startActivity(openGooglePlay);
} catch (ActivityNotFoundException e) {
// SHOW A TOAST
String tstMessage = "Could not launch the Play Store app.";
showToast.showToast(tstMessage);
}
I hope I have made some sense with this post. If you need any clarifications, feel free to ask away. :-)
Related
In Android Studio I have two "flavors" of the same app, one is the free version with some functionality removed, the other is the full version with some extra bells and whistles thrown in.
When I am in the Google Play console, do I have to maintain two separate projects but just use the free-release apk for the free project, and the full-release apk for the paid version?
If so, how do I know ahead of time how to give a link from the free version to the paid version if I don't yet have any sort of URL or method for going there?
If you are referring to knowing before which URL should you add to your free app to redirect users to your paid app, then you can use the general convention that the Google Play employs
https://play.google.com/store/apps/details?id="packagename"
So you can give your packagename of your full app
I am wondering what is the best way to have two different versions of an android app. I would like to have version of my app with ads and one without ads (the paid one). What is the easiest way to achieve this ? I have found something called version flavours here but since I am new to android development I am not sure if that is what I want. Please any suggestions for addressing this ?
You could have two versions of the application in Play store. However, you would have to maintain these separately and it is frustrating to upgrade from free to paid with this approach. If you chose this way of maintaining your application, you would have to have two projects, one for each version. This would result you into having two copies of almost identical source code.
One approach I've seen people do is that the free version also contains the premium features which are unlocked once the user installs a paid unlocker application from the store. However, this has the same result as the first option: you would have to maintain two applications (this time different, though) and the users would have to install additional software.
The best option is to include the premium version as an in-app purchase. The app would contain all the premium features but would be locked by default. Once the user pays for the in-app product (in this case the premium membership), he would unlock all the features.
You can read more about in-app billing here.
Why not just publish two apps with the free one as this :
MyApp
and the paid one as this:
MyApp(Paid).
And this is how to prepare them:
Get your app working, and add ads and then sign it and generate the apk. Publish it. MyApp.apk
Then go back, and remeove the ads, change the package name, add the Paid to the name, and then sign the apk. MyApp(Paid).apk
Then Publish it.
I decided to build a paid version of my free Android application.
The paid version has some extra features. How do I manage both versions?
Is it possible to keep them based on the same source code?
If an application requires unique package name, how do I force paid application to replace free version?
What about db, preferences and other privately stored stuff, how to share them without exposing all data to the rest of the world?
Any advice that will help to manage both projects,
but not answers the above questions directly, is appreciated as well.
There are several approaches:
Put the core of your app in a library project, and create two other projects one for the paid, and one for the free version of the app. An upgrade to the paid version means the user has to uninstall the free version, and looses all the data.
This is the "classical" approach.
Let the user make an in-app payment. The user keeps all database and settings, and you have to maintain only one app.
This option requires extra modules to be included in your app, and extra logic.
Make another dummy/empty app, this is a paid app. The existance of this app means the user has a paid version. The user keeps on using the orginal/free app.
You can simply check by using the PackageManager to see if the paid app is downloaded.
The user keeps all database and settings, and you have to maintain only one app. Ok, there are two apps, but the second can be really small and simple.
You don't have to include additional libraries/code to make an in-app payment. You can also have all your apps upgraded to the 'pro' version with one purchase.
I don't know if all users understand this pattern. For the developper, this can be achieved with minimal work, and the users keep all their settings while upgrading.
I think it's possible and recommended to keep them in same source
code. Otherwise you have to support two versions of app instead of
only one.
If you have only one app therefore you have only one package name.
Create a class responsible for app features availability in current license state (free or paid). This class should store information about license state (free, paid, maybe you will deside to add subscription mode in future in which paid version can expire after some period). Features of your app available only in paid verion shoud check current license state. You can also change app GUI depending of license state. For example hide GUI of paid features, show "Buy" button or ads, etc.
And also if you have only one app that can be free or paid you don't have to share any internal app data between paid and free versions.
I have just created a developer account at Google Play. Now I got to upload the application but I have a few doubts:
Can I add more then one android APKs for different applications?
Is it possible to upload an application for a testing and after that set the price of the app?
Is it possible to set such criteria where first 500 users get a free download and then the app will be paid?
Is it possible to delete an app and re-upload it if something gets wrong while uploading?
Multiple APKs for one application:
Multiple APK support is a feature on Google Play that allows you to
publish different APKs for your application that are each targeted to
different device configurations. Each APK is a complete and
independent version of your application, but they share the same
application listing on Google Play and must share the same package
name and be signed with the same release key.
Besides that, with your developer account you can create multiple application projects and provide your APKs for them of course.
No. After you have released an application for free you can not introduce a price for it. You'd have to create a new app project with a different package name.
This is not naturally supported by the Google Play Store. But you could implement this by writing a counter function that synchronizes over the web. You could also crawl/scrape your app page in the Google Play Store to get the install number. There are various ways.
After you upload your APK, there is some kind of sanity check integrated in the Play Store routine. This should prevent that anything goes wrong during the upload. Anyway, you can also upload a new APK, replacing the previous. That's how app updates work.
Your case overall sounds like you could use In-App-Billing to let your users access most functionality in your app for free, and after a certain time period has passed, offer them the full functionality after a payment.
Keep in mind that it is not a good practice to promote your app for free in the Play Store but then hide everything behind a payment wall inside the app.
Updated answer:
You need to have different package names (i.e. different app projects in your developer account) if you want to offer a free and a paid APK. It's actually a common practice and you'll find many apps in the Play Store that have a "free" and a paid "premium" version.
Very often, it would be easier for you to maintain and to update your app if the premium version only functions as a key (i.e. without actual functionality) that unlocks certain features of the free version. Therefore, you can check in your code if the user has installed the premium version.
Still, it would be more elegant to not "pollute" the Play Store with a dummy premium app and by implementing this with an In-App-Purchase of your premium functionality. Here is a good tutorial (besides the Android guide that I have linked above).
1)Yes, your account can have multiple applications. Or did you mean for the same app multiple apks?
2)No, once an app is free it can't have a price added to it later. If it has a price you can change what it cost though
3)No
4)You can always upload a new version, which seems to be what you want here.
Is it possible to list in Google's Android Market a single APK for both free and paid versions?
So far, I only found this tip to create a button in the free version that links to the paid versions, but IIUC these are still 2 separate APKs.
I also found a reference to creating free/paid versions from same code, but that still refers to 2 separate APKs.
What I am interested in is an (Google) Android Market way to provide functionality that is similar to PayPal's MPL (i.e. one app does it all). Is this possible?
EDIT: Based on the answer below, it seems that Google's In-App Billing facilitates this.
However, LVL's Requirements and limitations says:
Licensing is currently for paid apps
only, since free apps are considered
licensed for all users. If your
application is already published as
free, you won't be able to upload a
new version that uses licensing.
I know that LVL is not the same as In-App Billing but LVL is definitely required for In-App Billing to work (if only for using the key). So how does this reconcile?
It's possible to use something known as in app products. The min API is 1.6, which should work plenty well. Basically, anyone could download the code, but some unlocking of features could be done if desired to buy new functionality. They also have sample code which shows how it works.
Alternatively, you could use the licensing API, and simply check to see if your app is licensed. This would require a different package name, however, as all apps do.
You can rename the package before compile and release it as two apps.
i.e. com.example.yourproject and com.example.yourprojectpaid
You need to use the Key for both he LVL and the in app billing and its a good amount of effort to set up. If you want the easy way out use the example above, but know your paid app is not really protected from piracy if you don't use the LVL for your paid app or in app purchases if you keep the app free.
Good Luck.