茨城県つくば市でモバイルアプリ(iPhone、Android)のプログラミングをする日記です。あとWordPress、Raspberry Pi、Arduinoなど。

モバイルアプリ開発@つくば

Android Studioでパッケージ名を変更する

投稿日:2017年4月5日 更新日:

こんにちは、okuzawatsです。

時々、Androidのパッケージ名("com.example.projectname"みたいなやつ)を変更する時がありますね。
Android Studioの方でパッケージ名の変更機能を提供していないので、手動で変更する必要があって大変です。
日常的に行う作業ではないので、毎回、調べながらやっています。

また、実はパッケージ名には制限があり、それに違反したパッケージ名を付けることはできません。
誤ったパッケージ名を付けようとすると、パッケージ名の変更に何時間もかかった挙句に変更できないで終わります。
わたくしがそうでした。

この記事では、正しいパッケージ名の付け方と、パッケージ名の変更の手順についてまとめていきます。

既にリリースしてあるアプリのパッケージ名を変更すると、別のアプリと見なされるようになってしまいます。
パッケージ名の変更は、まだリリースしていない、開発中のアプリに対してのみ行うようにしましょう。

パッケージ名で使える文字

パッケージ名に関して注意しなければならないのは、パッケージ名として使えない文字があることです。
これについては、先日、Qiitaの方に短いまとめを投稿しました。

数字から始まるドメインでAndroidのパッケージ名を作る時のハマりについて - Qiita

簡単に言うと、

  • 英字以外の文字から始まるドメインは使えない
  • ハイフンを含むドメインは使えない
  • Javaの予約語は使えない

ということです。

In some cases, the internet domain name may not be a valid package name.
This can occur if the domain name contains a hyphen or other special character, if the package name begins with a digit or other character that is illegal to use as the beginning of a Java name, or if the package name contains a reserved Java keyword, such as "int".
In this event, the suggested convention is to add an underscore.

出典:Naming a Package (The Java™ Tutorials > Learning the Java Language > Packages)

数字から始まるドメインやハイフンを含むドメインにパッケージ名を変更しようとすると、ハマります。
パッケージ名に使うドメインは、必ず英字から開始し、ハイフンを含まないようにしなければなりません。

Androidのパッケージ名を変更する方法

次に、Androidのパッケージ名を変更する方法についてまとめます。
パッケージ名の変更に失敗した場合のことを考え、プロジェクトのディレクトリは必ずバックアップをとってから作業を始めましょう。

基本的には、プロジェクト内の古いパッケージ名が書かれている箇所を新しいパッケージ名に置き換えていくだけです。

まずはAndroidManifest.xml。

パッケージ名変更

package="com.example.projectname"と書かれている旧パッケージ名を、新しいパッケージ名に置き換えます。

次に、app/build.gradle。

パッケージ名変更

applicationIdを新しいパッケージ名に変更します。
最低限、app/build.gradleのapplicationIdだけを書き換えれば、アプリのIDだけは変更できるような気がします。

次にディレクリのパスを変更します。

パッケージ名変更

ディレクトリの名前を、新しいパッケージ名の構成と一致するように変更します。

例えば、com.example.projectnameというパッケージ名の場合、

/app/src/main/java/com/example/projectname

というようなディレクトリ構成になっているので、これを、

/app/src/main/java/net/hoge/fuga

というような感じでパッケージ名と一致するディレクトリ名に変更していきます。

次にレイアウトファイルのパッケージ名を変更します。

パッケージ名変更

tools:content="com.example.projectname"という箇所に書かれているパッケージ名を、新しいパッケージ名に変更します。

この作業は、すべてのレイアウトファイルに対して行います。
レイアウトファイルが多い場合は、何らかの手段を用いて機械的に行った方がいいですね。

最後に各アクティビティのパッケージ宣言部分を変更します。

パッケージ名変更

Javaファイルの冒頭にある、package "com.example.projectname"と書かれたパッケージ宣言部分のパッケージ名を書き換えます。
同時に、import文の方にも古いパッケージ名が隠れているので、これも新しいパッケージ名に修正します。

パッケージ名変更

google-services.jsonには、情報としてパッケージ名が含まれています。
google-services.jsonを使っている場合は、新しいgoogle-services.jsonを発行して置き換えましょう。

まとめ

Androidアプリのパッケージ名の変更についてまとめました。

一発でパッケージ名が決まれば何も問題はないですが、なかなかそうはいきません。
パッケージ名が決まらないままプロジェクトが始まったり、最後になってドメインが変わったり...。

そんなことがあっても、パッケージ名を変更する方法を知っていれば安心ですね!
突然のパッケージ名変更があっても、頑張っていきましょう!

-Android

Copyright© モバイルアプリ開発@つくば , 2017 AllRights Reserved Powered by AFFINGER4.