2012/03/20

[android]パッケージ名とフォルダ名は別物なのだよ

まあ、ひどく当たり前の話なのだが、よかろう。

 

いま作っている、PaSoRiをandroid-x86で動かすパッケージは、フォルダ名でいうと

packages/apps/Nfc

以下に入っている。
このフォルダ名は、android標準環境のものだ。

私は、このNfcをがちゃがちゃと変更しただけ。
しかし、フォルダ名がNfcのままだと管理しにくいので、NfcServiceForPasori、と長々しい名前に変更することにした。

androidでビルドするとき、どのパッケージをビルドするのかは、設定による。
build/以下に標準的な設定があって、それをdevice/以下に自分の端末向けフォルダを作り、そこに設定を書いていく。
”lunch”などで選択するのは、その部分だ。
詳しくは、http://source.android.com/index.htmlに書いてあるかもしれないが、最新になってから見てないのでわからん。

android-x86の場合、私はこんな設定になっている。

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.3
TARGET_PRODUCT=generic_x86
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=x86
TARGET_ARCH_VARIANT=x86
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=IML74K
============================================

たぶん、repoでとってきたそのままだと思う。
ここの「TARGET_PRODUCT」が、だいたいdevice/以下にあるフォルダを探すときの目安になる。
今回は、device/common/generic_x86という場所にあった。

この中に、packages.mkというファイルがある。
(*.mkというファイルは、makeファイルの一環で、mやmmするときにさらってくれるようだ。)
ここの環境変数PRODUCT_PACKAGESが、ビルドするパッケージになる。
今まではここに「Nfc」と追記していたのだが、フォルダ名を変えたので「NfcServiceForPasori」に変更した。

そしたら、ビルドされなかった。。。

理由は簡単で、PRODUCT_PACKAGESは「パッケージ名」であって「フォルダ名」ではないのだ。
パッケージ名は、各Android.mkのLOCAL_PACKAGE_NAMEなどに入っているようだ。
これを変更していなかったので「NfcServiceForPasoriというパッケージはない」とみなされたのだ。

はい、そんだけです。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。