I'm new to publishing Android apps. Our app's name and the string that users should search for to find it on the Market is Eksjö
When I first uploaded it, the upload form suggested the name Eksjo (the name of the project, since Eclipse/Android SDK disallows deviant characters in the project name). Sadly, I accepted this and noticed it could be found (since the word is unique and is in the description, presumably), but that the Market name was Eksjo.
I edited the upload form, only changing the App name to Eksjö, but this did not change the Market name. Perhaps I was impatient, and an hour or so later it would have changed?
Anyway, I went back to Eclipse to change the :label (which I've since learned has nothing to do with the Market name), but it was already set correctly.
The best thread I've found on the subject is this: http://groups.google.com/group/android-developers/browse_thread/thread/b1a6ad78ce584a40#
I've come up with 3 ideas so far:
It says that the app Title can only be set from the Developer Console, but I can't type anything in the Console tab containing the console messages. (Am I barking up the wrong tree? Intuitively, I would think that typing setTitle('Eksjö') would only change the title of the current or possibly the main view of the app at runtime?)
The other alternative would be to upload an upgrade, where basically nothing has changed but where I can hopefully type a new Market name in the upload form. The question is whether this changes anything at all.
The third alternative would be to upload a completely new identical app, but with the correct Market name. But to do that, I'd have to change the package names (and sub-names, ie. com.whatever.common, com.whatever.viewname1, etc.) Can I do that with a refactor or do I have to manually rename all the views and includes?
Which one is the ticket, 1, 2, or 3?
I think 1 is your answer. and this can occour by changing the default string appName in your strings.xml file to the one you want. Also changing the market name and icon takes some time so just wait for the data to populate.
Related
I install an apk and its package name is com.qihoo.appstore. Why in the /data/app directory its name is com.qihoo.appstore-2.apk. My question is what is the meaning of "-2" in the last?
Basically, any file you download which has the same name as one already available will get a number behind the name it has, which explains why you have that number there.
It can be confusing if you got different versions for each apk and you can't remember which one is the one you want to use.
For fixing it, you either have to delete the older ones that have no number and/or a lower number in the file name, or make a list of what version you gotten for each numbered and non-numbered file.
I am developing an Android application named "English SMS Collection" in Google Play store, and now I want to upload this app in Hindi language also. So what changes are required to previous APK?
How to add another language to an Android application? And also what image size icons are required for uploading the app to market?
Any help would be appreciated.
Generally, splitting the same app into two functionally equivalent versions with different languages is a bad idea.
If you absolutely must do that, the only thing you need to change is the package name (package="com.example.project") in your AndroidManifest.xml (no need to rename actual packages, just that one string in manifest).
Also, if your Activities are declared relatively to app's package (e.g. .MyActivity as opposed to com.mypackage.activities.MyActivity) - and they most likely are - changing app's package name will obviously cause FCs because you effectively rename the activities. So to be able to switch the package name back and forth you'll have to detach Activity names from app's package by declaring them absolutely (e.g. com.mypackage.activities.MyActivity)
Here's a comprehensive guide on icons from Google, next time please do more research before asking such simple questions: Iconography
Also, judging by the question, you'll probably want to also read into this: Publishing Checklist for Google Play
Please DO NOT split your app up into two apks just because of the language. This is very bad style.
According to the android devleoper's guide, it's best practice to create ressource-folders with so called "configuration qualifiers". Your strings (e.g. text) should all be stored in the file /res/values/strings.xml . This is the default setup (without a configuration qualifier), when adding localized translations you have to create a new folder and strings.xml file /res/values-cc/strings.xml where cc has to be the standardized country/language code (e.g. "en" for english, "de" for german, "cs" for czech...).
For more (essential) informations on this, visit developer.android.com/guide/topics/resources/localization.html .
You need to change the package name because it should be unique while uploading in market. It can be signed with the same keystore file you have done for other two apps. Obviously, you have to change the Application name and its icon.
For more Information on Publishing Checklist for Android Apps, check this documentation.
In a Package Explorer, click on the package name (e.g: com.example.android), right-click and go to Refactor. Choose the Rename... option there.
I'm updating my app and I just wanted to know if the apk needs to be named the same as the original one that I uploaded. I'm pretty sure the answer is 'No', but just wanted to check as I can't find an explicit answer anywhere.
The only things that must match the original app are the package name and the signing keystore. Other than that, you can change anything you want, including the name of the apk file (Google Play will rename it on its servers anyways).
You will also need to increment the version code (the version name may stay the same)
As far as I know the key and the package name in your manifest should be same for each update , apk name should not matter.
There is an application (already published to the Play Store) that has package name, that doesn't fully conform to the Java naming convention (like CompanyName.ApplicationName).
Today, I was unable to publish updated version to the Play Store because the Developer Console complains about bad package name of the uploaded APK. Existing package name only contains letters and does contain a dot, so the only reason for rejecting it that I can think of is package name starting with the upper-case letter. It does match the previously used package name.
Can it be the case? Are there are some recently implemented restrictions for package name?
edit
The error I'm getting is
The package name of your apk (CompanyName.ApplicationName) is invalid. Package
names must start with a character and can only contain characters,
numbers, underscores and dots. They must have at least one dot, cannot
end with a dot, and cannot contain any runs of more than one
consecutive dot.
I had same problem. Upload your apk in the new Developer Console.
You need 3 parts like org.meredrica.demo in your classpath to be compatible with android guidelines.
also you want to make it all lowercase, since they are case sensitive and capital names like that indicate classes (at least by convention, i'm not sure if its technically enforced)
So if i see something like CompanyName.ApplicationName I expect a class called CompanyName that contains a subclass ApplicationName.
You also might want to run android lint on your project.
I had the same problem while updating the apk file for an app with a package name of the form Aaa.Bbb.Ccc.Ddd, and Leon's solution worked. Though I did not understand it when I first read it.
What he meant is, in Google Play Android Developer Console, click the "Try the new design" button at the top right (which points to play.google.com/apps/publish/v2) to switch the web interface to a new layout. Uploading the apk in the new web UI works for me.
I have released an android app downloadable in the UK, but I wish to release a (very slightly different) version of the app for the U.S. Currently I believe I need to do the following for the new version of the app ...
1. Change the 'package' attribute in the manifest file to something different.
2. Ensure that on Google Play only the US can download the app.
Is there anything else I am yet to discover I need to do, or any other problems I am yet to consider?
Edit 19th July 13:19 GMT - I am currently warming towards using TelephonyManager.getNetworkCountryIso() as an initial country guess, and falling back on the locale if this fails (because of no SIM card). What do people think? Using GPS is also an option though, but is that overkill?
Since you say you're just changing a couple of strings (we'll think of the URL as just a string, too), I would suggest the following:
Create the resource directories res/values and res/values-en-rUS.
In each of these, create a strings.xml resource file
Define your default (UK specific) string values in the res/values directory, and your US specific string values in the res/values-en-rUS folder.
Then, to refer to these strings, simply use #string/my_string_name when referring to them from an XML document, or getResources().getString(R.string.my_string_name) when referring to them from code.
For more details on the types of resource qualifiers, check out this page, also for the list of qualified country codes you can use, see this page.
I'm sure anyone determined enough could change their region to US -- I'm honestly not sure offhand how the region is determined -- but for all intents and purposes this should do the trick without having to maintain two separate applications. I would just evaluate how critical it is that UK users be unable to access the US specific functions of the application, and with that in mind determine whether it is worth the maintenance of two applications.
EDIT Some more additional searching leads me to believe the region is locked into the build.prop file, which is not editable outside of rooting your device (i.e. it is not going to happen accidentally). That said, if it's still imperative that they have the correct option, I might suggest a popup dialog only on the first run of the application that confirms the locale with the user, saves it as a SharedPreference, and then choose your Strings programmatically based on that preference. That way you're still only maintaining one application, but you still have the flexibility of handling the two regions.
This is correct. The Play Store goes off of two things for who can download and if they can update. The first is the packagename com.andya.myukapp -> com.andya.myusapp should work, as long as none of your existing customers are expecting to switch freely between the two (assuming it's a paid app)
I eventually decided that the best policy was to use TelephonyManager to check the country of the Network.
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String networkCountryCode = tm.getNetworkCountryIso();
If that failed, I got the locale.
String locale = context.getResources().getConfiguration().locale.getCountry();
This would happen once at the start of the app. The results of this would then be saved and be configurable in the settings screen.