Bob - you should be able to make Pro version look into the Lite's preferences at upgrade time, so you can copy in the settings without using a provider. Incidentally, if you do use a provider it needs to have a different name in the Lite & Pro versions - that's one of the things our Ant script changes in the manifest.
Take a look at Context.createPackageContext(), here: http://groups.google.com/group/android-developers/browse_thread/thread/9d95bdd4a1bf81f0/9926f03b990d31f7?lnk=gst&q=jarkman#9926f03b990d31f7 Richard On Feb 25, 5:05 pm, Bob Kerns <[email protected]> wrote: > While the downloadable license approach sounds good on the face of it, > there are just too many loose ends for my tastes as it stands. We > already have a very limited channel for communicating with our > customers, and I don't want to waste those characters > > What I've done is create a master build script, which takes a project > name, tags it in Subversion, cleans and switches a build working copy > (or does a checkout if needed). > > I then do two exports from that working copy. I run an XSLT script on > the AndroidManifest.xml to handle the differences there, including > changing the package, removing the debuggable='true' flag, removing > ADMOB ID's, etc. Any differences, I handle programmatically. I don't > actually change the code packages, just the references in the manifest > and the manifest's package name. > > Any excess code I'm tentatively planning to remove via Proguard, but I > haven't gotten that far yet. > > In effect, I have three versions -- DEV, FREE, and PRO. DEV is > internal-only. > > I also maintain a change log page I show the users the first time they > run after they update. I'm thinking of generating this page content > from a filtered view of the Subversion log, but for now I'm manually > updating it. It hides any changes they've already seen, based on a > record in the Shared Settings. > > Which is where this all breaks down -- these settings aren't shared > between the different versions. > > Here's my plan for dealing with that: > > 1) Create a content provider for the settings for my app. > > 2) When launching the PRO version the first time, if it detects the > FREE versions, it will suck in the existing settings from the FREE > version. > > 3) When launching the FREE version, if it detects the PRO version, it > will not launch its service, and will take the user to an explanatory > page, with a link to the application management page in the system > settings. > > 3a) I plan to listen for PACKAGE_ADDED, and transfer the settings > there. That looks to me to be the most reliable place. > > 3b) I suppose I should monitor PACKAGE_REMOVED, and if the PRO version > is uninstalled, re-enable the FREE version. I should only need these > in the FREE version, so once a user upgrades there would be no need to > launch the app on each install/uninstall. > > 4) The DEV version will have a couple extra menu items to invoke these > operations manually for testing. > > (For what it's worth, I notice that com.android.voicedialler monitors > PACKAGE_ADDED and PACKAGE_RECEIVED, as do a few others with no other > obvious reason. I wonder if some of them are doing a similar trick?) > > This looks to me to be about the best I can do. Does anybody see any > problems I've missed? Have a better/simpler idea? > > It's really too bad the platform doesn't provide a way for one app to > supersede another, when signed with the same key. This could be > handled much more cleanly at install time. > > On Feb 24, 11:34 pm, String <[email protected]> wrote: > > > On Feb 25, 4:00 am, Carmen Delessio <[email protected]> wrote: > > > > It seems like it should be possible to have 2 apps signed with same > > > certificate. > > > See the info below. If your paid app exposed functionality to your free > > > app > > > you would get the free/paid goal. > > > The free app would check whether paid app was installed, if it was it > > > would > > > be used. If not an upgrade message would be displayed. > > > This is exactly what I do with one of my apps, TerraTime. I call the > > paid app the "license", and it has essentially no functionality of its > > own; it just needs to be present for the full functionality of the > > free app to be unlocked. I have a slightly different marketing > > strategy - my free app has the full feature set, but is just time- > > limited to a trial period. It's that time limit which the license > > unlocks. But the same approach should work for a freemium model like > > yours. > > > The major advantage to this is a single code base. From this > > perspective, it works well. > > > There are a number of small drawbacks that I've found, however. > > Primarily, it causes some confusion for the user... The free app is > > named "TerraTime Trial", but it needs to stay installed when the user > > upgrades. I mostly get around this with clear instructions in all the > > relevant places. This may be less applicable with your strategy; just > > make sure you don't name the free version "Lite" or some such. And > > make VERY clear in the app description that it's a freemium model, or > > you'll get complaints. > > > Overall, it'd be better if the Market supported in-app purchases (like > > certain other App Stores do). But there are so many other, more > > serious problems with the market that this feature is probably - > > hopefully - pretty far down the priority list. > > > A completely different possibility might be to organize your code into > > a single JAR file which you can then include in both application > > packages. While this would let you maintain only a single version of > > your Java source, it wouldn't help you with other code (manifests, > > resources, etc). Also, I've personally never got it to work, but I > > think that's more to do with unfamiliarity with Eclipse & Java outside > > of the usual Android development track. > > > String > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

