Saturday, December 15, 2012

How to Rename an android app without changing the identifier

How to rename an android app without changing the identifier

Blog Post 1

I'll start by 
explaining the blog
 posts I will do. I
 almost never will
 have posts about my
 life, they will
 instead focus
 around tech and
 Programming in
 particular, is what I
 will write about
 here. Let's get

How to rename an android app without changing the identifier

OR using an IDE.

This was a question I had myself. I downloaded the source code to K-9 Mail, to work on my Epistol
 application, when I realized I really needed to change the name... But how? That was the question. It took
 me quite some time to figure it out, but I eventually discovered how to do it while on
 Great site by the way. 

 Now, I wanted to do this without an IDE, as Eclipse is really annoying when you try to import projects. I
 looked around the source, but I couldn't find it. But while on Stackoverflow I discovered the answer. It is
 AndroidManifest.xml file.

The file should look something like this,

<?xml version="1.0" encoding="utf-8"?>
    android:versionName="0.1" package="com.fsck.k9"
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>

    <!-- Needed to mark a contact as contacted -->
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

.... It goes on...

Now at first, I thought it was the package that I wanted to change, but no. That just causes errors, instead
 you need to locate this key.

        android:label="@string/app_name"   <---Right there! That's what you want!

android:label= is what you want. Now, you can just change it to something like 

        android:label="New Name" 

That should work. But, instead, I used a xml file to store all my strings. That is the best way to do things,
 so I would suggest you do the same. Here's how. 
You will need to keep using the "@string/app_name" and then navigate to your string file. Usually, it is
 located somewhere around /res/values/strings.xml

So, that file should look something like:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- === App-specific strings ============================================================= -->

    <!-- This should make it easier for forks to change the branding -->

    <!-- Used in AndroidManifest.xml -->
    <string name="app_name">Epistol Mail</string>
    <string name="beta_app_name">Epistol Mail BETA</string>

    <string name="shortcuts_title">Epistol Accounts</string>
    <string name="unread_widget_label">Epistol Unread</string>

    <string name="remote_control_label">Epistol Mail remote control</string>
    <string name="remote_control_desc">Allows this application to control Epistol Mail activities and settings.</string>

Again, the is only part of it. But as you can see. The is a key labeled, <string name="app_name">

That is what you want to change, I changed mine to Epistol Mail, but the idea is the same. Now, some

 apps will use the string file for everything, like K-9 Mail, which was very nice. All I had to do was
 Find&Replace everything that says K-9 with Epistol. You could do something similar. 

That's pretty much it, happy coding!