Publishing my first app to Android Marketplace
I wish I could say that I could whip this off in a day or even a weekend. Truth is, it took alot of preparation. I referred to numerous Android books, web sites as well as the android developers site: http://developer.android.com/guide/publishing/preparing.html.Application icon
You have to have an icon and I am no artist so this was not a trivial step for me. In the end, I downloaded Inkscape from inkscape.org and made some silly icon for the drawable-hdpi folder (which should be 72x72 pixels). I used the same image for the other densities since I knew they could still be displayed.Minor changes to the appliction
I commented out my logging code and turned off my internal debugging switch (which does simple things like speed up wait times for testing). I then made the following changes to my manifest file.- I made sure to include a versionCode and versionName manifest attribute. versionCode starts at 1. versionName is what I want the user to see.
- I removed the debuggable=true attribute from the application tag.
- I made sure the application tag had both an icon and name attribute.
- Because I did not want to support small screens, I included a "support-screens" tag and turned off support for small screens.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidmocha.mypomodoro"
android:versionCode="1"
android:versionName="0.1 Beta">
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.VIBRATE" />
<supports-screens
android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"
/>
<application
android:icon="@drawable/app_launcher"
android:name=".PomodoroApp"
android:label="@string/app_name">
I then convinced myself that I HAD to add an ABOUT screen to the application where I show the application name, the version and some simple text on how to use the application. I show that screen on startup unless the user clears a checkbox to the contrary. It is also viewable from the home screen menu.Testing
I repeated my testing:- On my phone (landscape and portrait)
- On my normal emulator
- On my emulator running a "small" screen resolution of 320x480. I was not happy with these results in landscape mode as text was clipped but in the end I looked at what android devices are on the market (http://developer.android.com/guide/practices/screens_support.html) and decided I didn't care.
Adding of the EULA
The addition of a EULA is suggested in multiple places but I didn't see many apps doing it. Further, I was loathe to include some giant amount of legal text. In the end, I took the time to create a screen which is shown once with some very simple text about how this software might not work and the user assumes all risks. I tie the showing of the screen to a version dependent preference parameter (e.g. ShowUserAgreement_V1 ) and if the user agrees to the screen then I turn off the showing of that screen. Otherwise, there is no way for the user to move further.Making screenshots.
I know that I will need screenshots of the application in Android Market so I do this while testing. From Eclipse, I open the "DDMS" perspective and click on the "Screen Capture" button when the app is running on my phone from Eclipse.Making the release APK
Finally, I was ready to make the APK. As documented, the APK which Eclipse normally makes is a DEBUG APK which is signed with a debug key. This is not acceptable by Android Market. So I have to compile a release APK, create a new key store, a key for my package, then I have to sign the APK and optimize the APK with ZipAlign.exe. Fortunately, Eclipse has a wizard which does all of this for you. It is in File | Export | Android |Export Android Application. Still I had to enter alot of information.- I had to specify the name of a new keystore, I chose a name specific to the URL which I made specifically for my android apps. It is called AndroidMocha.com and I registered the URL from Google - lol. So my keystore is AndroidMocha.Keystore and is located in the same folder as the debug keystore which on Windows 7 is <My Documents>\.android.
- I choose a strong password for my keystore.
- Next I had to generate a key. As discussed in the documentation, I want to use the same key on all future versions of this product and for any related products which might run together. Therefore, I named it after my URL and gave it a validity of 25 years (as recommended in the documentation). I left all the organization fields blank except for "Organization" which i made the same as my website name (AndroidMocha.com)
The wizard finished without error and gave me an APK which is supposedly ready for publishing!!
Retesting the APK.
Well now that I have a new release APK, I have to retest it right? But how do I install the APK on my phone? Normally Eclipse does that for me. I google it and the documentation says I should:- Hook up my phone
- Run ADB.EXE (Its in platform-tools folder of the sdk)
- ADB.EXE INSTALL <Path-To-APK>
And that works! Note that I first uninstalled my previous build from my phone just to make sure it worked correctly. Now I do a couple simple tests and I am ready to go further.
Getting an Android Market Developer Account
To do this, I have to go to the following address and sign in with my google account. Then I have to pay $25 through google-checkout so now they have my credit card which is awesome. I am forced to fill out a profile which I do. For the developer name and website, I give them my website. For an email address, I give them my website email address. (At this point, I am very happy with the $10 investment in registering a URL). They make me give them my phone number and so I do. I submit the form and they promptly charge me and activate my android market account!https://market.android.com/publish/Home
I am so close now!! I can almost smell it. How much longer should this take?
Uploading the APK to Android Market and Publishing
From Android Market, I have an option to Upload Applications. Great, this is what I want, but when I see the next screen, I know it won't be done this minute.- First,, they ask me for two screenshots. I am prepared for that because I made previously (see above). I give them two.
- Next, they want a 512x512 "High resolution application icon" and it is REQUIRED. What the heck?? It also has a bunch of art-speak I don't understand what it even means much less how to do it. (Drop shadow: black. What is a drop shadow??) I did not know about this and please see my comments above about my very limited artistic skills. I google this and everyone else is similarly confused and annoyed by this requirement. One guy uploaded a 512x512 white square. People say you can just upload your launcher icon. But I go back into inkscape and make a 512x512 PNG of my icon. Fine.
Uploading the APK - Second Try.
APK Upload
Now I have my APK, my screenshots and my "High Resolution Application Icon". So I am ready to go. I browse for my APK and press UPLOAD. There is an error right away. I do it again, same thing. Then I realize that I am using "Internet Explorer" and I laugh. I start up the Google Chrome and it works right away. hahahahahah. It is happy with my APK! It tells me the correct version number (both code and name), my minimum API level as well. It then tells me that I have required one special permission (this is true, I need android.permission.VIBRATE to vibrate the phone if the user has the sound off). It ALSO tells me that I have one feature that can be used as a filter in android market, it is "android.hardware.touchscreen". Not sure about that but yeah they have to have a touchscreen so I move on.Upload Assets
I upload two of my screenshots since two are required.Next I get to the "High Resolution Application Icon" and thankfully it accepts it because this is required. I skip the optional "Promotional Graphic", "Feature Graphic" and "Promotional Video". I am not sure whether to check the "Marketing Opt-Out". I google this and nobody else seems to know. So I leave it unchecked.
Listing Details
- Title - I only get 30 characters so I go with my app name plus its category (My Pomodor - time management)
- Description - I write a description off the cuff
- Recent Changes - I just say its the first release.
- Promo Text - i wing it.
- Application Type = Applications
- Category = Productivity
Publishing options
- Copy Protection = off (feature is deprecated)
- Content Rating = Everyone
- Pricing = Free
- Countries = all countries
Supported devices - at the bottom of this section I am reminded that I specified that my app is only for screen layouts of NORMAL, LARGE and XLARGE. This is correct, I excluded SMALL. It then reminds me that my required device features are "android.hardware.touchscreen". I don't know how that was specified, I assume it is part of android because android devices have touch screens. Then my heart skips a beat. It tells me: This application is available to over 0 devices. What? Did I mess something up? Did my exclusion of SMALL screens exclude all devices? I google this and other people are complaining about it so I decide to press on.
Contact Information
- Website - got it
- Email - I use a mailbox at my website.
- Phone - yeah, I was warned against putting anything here so I leave it blank!!
Consent - I check both boxes.
Press the "Publish" button.
Arrgh, it tells me that I don't have an active APK. I move back to the "APK Files" tab and i see there is an option to "Activate" the APK. Well, what else do I want to do with it. I activate it and now my APK says "active". I go back and try again.Progress. Now it tells me that my application is available to over 474 devices!! I hope that means device models. Ha. But I have an error. I had filled in some promotional text but apparently I don't get to provide promotional text if I dont also provide a promotional image. So I delete the text and try again.
SUCCESS it says that the app is published!!
Here it is: https://market.android.com/details?id=com.androidmocha.mypomodoro
and I am too emotionally drained to do more today!
No comments:
Post a Comment