アプリ名を変更したい
スマホのホーム画面からアプリを起動した際のアプリ名を変更したいというケースは度々発生します。特に開発時に決めた仮の名前からリリース時に変わることはよくあると思います。その場合はリスト4のように設定可能です。
<widget id="com.coltware.cdv.SampleApp14" version="1.0.0" : 省略 > <!-- (1) 標準的な方法 --> <name>サンプルアプリ</name> : <platform name="android"> <!-- (2) プラグインを使ったときのAndroidのアプリ名の設定 --> <preference name="android-manifest/application/activity/@android:label" value="サンプルアプリ" /> </platform> <platform name="ios"> <!-- (3) プラグインを使ったときのiOSのアプリ名の設定 --> <config-file platform="ios" target="*-Info.plist" parent="CFBundleDisplayName"> <string>サンプルアプリ</string> </config-file> </platform> :
(1)は、標準的な方法です。ただし、アプリ名として日本語を使いたい場合には少々困ったことが起きます。
例を挙げると、iOSの場合<name>要素の値を使って実際のプロジェクトフォルダが作成されるため、日本語のフォルダができてしまいます。
このケース以外にも、バージョン管理をしている場合や、プロジェクト内部に直接手を加えてしまった場合など、フォルダ名が変わってしまうと不便が生じるケースがあります。そのため(2)や(3)のように、先ほどインストールしたcordova-custom-configプラグインの機能を使って変更する方法をおすすめします。
Androidだと、<preference />を使った指定をしている場合、Androidの設定ファイルであるAndroidManifest.xmlの設定を変更することができます。(2)の指定は、実際に変更する項目をXPath形式でname属性に、対応する値をvalue属性に、それぞれ渡しています。
(3)の<config-file>は、target属性で指定したXMLファイルを書き換えるための指定です。iOSの場合、[プロジェクト名]-Info.plistというファイルがiOSの設定ファイルになり、このファイルを編集するにはtarget属性に"ios"という値を設定する必要があります。通常、これらのファイルはIDEであるXCodeを通じて編集します。また、(3)では、どのようなプロジェクト名であってもiOSの設定ファイルが該当するように、"*-Info.plist"というファイルを指定します。iOSの設定ファイル内では、アプリ名はCFBundleDisplayNameという項目で管理されているので、その値を<string>要素内で指定します。
パッケージ名を変更したい
Androidの場合、アプリのパッケージ名はプログラムのパッケージ名と同じものになります。iOSの場合はパッケージ名をコード署名時のパッケージ名としても使います。これらのパッケージ名にはドメイン名を使うことが一般的ですが、ドメインにハイフンが含まれているとiOSで利用することができません。そのため、iOSとAndroidで別々のパッケージ名を使いたいケースが発生します。その場合、リスト5のようにして変更が可能です。
<widget id="com.coltware.cdv.SampleApp14" // (1) 基本のパッケージ名 android-packageName="com.coltware.cdv.android.SampleApp14" // (2) Androidの場合 ios-CFBundleIdentifier="com.coltware.cdv.ios.SampleApp14" // (3) iOSの場合 : >
(1)がiOSとAndroidのパッケージ名を共通にした場合の変更方法です。同じものに変更する場合、この方法をとります。(2)がAndroidのみ変更する場合の指定方法です。そして、(3)がiOSのみ変更する場合の指定方法です。
iosでは*-Info.plist内でCFBundleIdentifierという項目で管理されているので、アプリ名を変更する際と同様に<config-file />要素を使った方法でも変更できます。
SDKやiOSの対象バージョンを指定する
利用するAndroid SDKのバージョン(利用できるAndroidのバージョン)や、iOSのバージョンを指定したい場合には、リスト6のように指定可能です。
<platform name="android"> <-- (1) Androidのバージョンを指定する --> <preference name="android-minSdkVersion" value="18" /> <preference name="android-targetSdkVersion" value="21" /> <preference name="android-maxSdkVersion" value="24" /> </platform> <platform name="ios"> <!-- (2) iOSのターゲットバージョンを指定 --> <preference name="ios-XCBuildConfiguration-IPHONEOS_DEPLOYMENT_TARGET" value="8.3" quote="none" /> </platform>
Androidの場合、(1)のようにminSdkVersion(利用できる最低のバージョン)、targetSdkVersion(主にターゲットとしているバージョン)、maxSdkVersion(最大バージョン)が指定できます。
また、Androidは新しいバージョンに更新すると古いバージョンにのみ対応しているアプリケーションが使えなくなるということがあるため、これらの指定が必要になるケースがあります。バージョンの意味は、こちらで確認できます。その他、指定したname属性以外にもリファレンス(英語)に記載されている通り、数多くの指定が可能です。
iOSには標準の設定方法がないため、(2)のようにcordova-custom-configプラグインの拡張指定を使用します。この例ではiOSの8.3のバージョンを指定しており、<preference />要素のname属性に"ios-XCBuildConfiguration-"で始まる指定をすることで、XCodeプロジェクト内の[プロジェクト名].xcodeproj/project.pbxprojファイルの内容を変更することが可能です。このファイルは、iOSアプリをビルドする際、コンパイルやリンクなどのオプションを指定するファイルです。value属性にはnameで指定した項目に対する値を指定します。また、quote属性には"none"を指定します。こちらの意味としては指定する項目と値を設定する際にダブルクォートの扱いなのですが、そのルールはXCodeをハックしないとわからないのであまり深く理解する必要はありません。