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.
Related
We purchased the source code to a certain Android and iOS application and now need to re-brand it before releasing it on the app stores. I'm quite familiar with Android, so that side wasn't an issue. However, I've never touched iOS apps before, so I have a few questions.
On the Android side, we changed the application name by changing several string resources. Then we changed the package name in the manifest.xml file (to make this a unique application in the eyes of Google Play) along with changing the package names in the affected class files. And compile.
Would iOS applications require something similar? Is there an equivalent to the Android string resources where I can change strings in one place and they are reused throughout the application? Also do iOS applications have some sort of unique ID, the equivalent of the Android's package name in the manifest.xml file? If I change this unique ID, does it impact the code in any way (in Android the package name corresponds to the main application Java package that starts the application).
The package name you referred is called Bundle Identifier in iOS world.
It can be changed in Project settings, or directly in the project property list (.plist) in the Xcode project.
The original value may look like:
com.example.${PRODUCT_NAME:rfc1034identifier}
You can change it to whatever valid values you want (highly suggest you use reversed FQDN format).
Remember to clean & rebuild to project after changing this value, and all App ID, Provisioning Profiles and probably certificates have to be re-configured.
I have to maintain an application which has strings, images, videos in different language it makes a heavy apk and I would like to know if I could tell the exporter to only package only resource applying to one specific locale ?
imagine I have the files
res/values/strings.xml
res/values-en/strings.xml
res/values-it/strings.xml
res/values-fr/strings.xml
And I want to generate and apk with only italian only
res/values/strings.xml
res/values-it/strings.xml
(and maybe force generated app to use italian as locale)
Actually I have 2 projects for 2 locales us / it, everthing is dupplicated, so everytime I have to edit a java or xml file I have to edit it twice.
Now I am required to create a 3rd apps for french and I don't want to copy paste to a new app and to maintain 3 times the same files ! (and more in the future)
I wanted to merge everything into a single apk and then export for one locale because the client require 1 apk per country
I don't know how I could refactor the apps to simplify my works my idea is to export for one locale
thanks for help
I think you could do this with Android Studio and Gradle but it would take some possibly complicated (for a Gradle beginner) setting up of the Source Sets folders.
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-flavors
I need to create two different Android apps using the same code. The user should be able to install both the apps on the same device.
The differences between the two apps are just a few strings, including the application name. These strings have been isolated to a string resource file called Custom.xml.
My plan to achieve two versions is rather simple. In the nightly build script:
1. Run Ant to create the first application .apk file.
2. Rename the generated .apk file
3. Replace Custom.xml with a different one
4. Run Ant once again
This may work except for one thing that I am not sure about. It is the package name in AndroidManifest.xml->manifest->package attribute. I guess this has to be different if the apps have to coexist. Does changing the package name have any impact on the rest of the code? I hope this package name is not tied to the package name used in java files.
Also, does anyone see any problem with my overall strategy? Thank you in advance for your help.
No, it does not have any impact, unless you use your hardcoded package name in the code.
There is an official example of renaming the package to build a debuggable version of the app.
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'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.