2014年3月8日土曜日

Androidアプリ開発:ADT eclipseの更新-appcompat_v7プロジェクトが勝手に作られる!?

ネットでちょっと動かしてみたいアプリのソースがあったのでADT(eclipse)をMacで起動、念のためSDK Managerで更新ライブラリを確認してみたら、新しいのがでてました。いやな予感がしたのですが、念のため更新。するとSDK manager本体も更新しろといってきます。これはeclipseの方から行いますが、その後どうも動きがおかしくなり新規Andoidプロジェクトがうまく作れなくなりました。

色々やっていたので何が原因で、何が起きたのかはっきりしませんが家の中にある他のMac、およびWindows7のADTも更新してみて動作を比較しながらやり、どうにか3台の環境で元々動かしてみようとしたAndroidアプリのソースを動かすことができるようになりました。(SDK Manager本体の更新にAndroid Developper ToolsサイトのURLが"http"ではだめで、また"https"に戻したり・・・、いったいどちらが正解なんだろう?時々、片方ではエラーがでて、片方で更新がうまくいったりします。)

ただ、なんか今度の更新でADTで新規Androidプロジェクトを作成すると、"appcompat_v7"というsrcのないプロジェクトが勝手に作成されます。過去に作成したAndroidアプリを再実行するのには特に必要ありませんが、今回から新規に作成したAndroidプロジェクトでは環境設定でここにある"appcompat_v7.jar"というファイルを参照しているようで、自分が作成した覚えがないからといって削除してしまうとエラーになります。調べてみても、海外のQ&Aサイトで何件か質問がここ最近でていましが、特にこれはという回答が見つかりませんでした。googleのサイトを調べないとだめかな。

また、今回の更新でエラーが出るようになったというのもありましたが、Android SDK Manager/ExtraからAndroid Support Repository、Android Support Libraryをインストールすれば消えたという報告がありました。自分のエラーは他にも原因があり(.classpathの内容にも問題があった)、よくわかりませんが処置してみたら動くようになりました。でも結局、"appcompat_v7"が何者なのかはわからず、、、名前からするとARM v7関係なのかな。ということはintel系のアプリを作成すると別のものができる?→これ違いました、追記します

PS
昨年の夏にAction Barという新しいUIが実装されて、そのライブラリが"appcompat_v7.jar"らしいです。ついでにv7というのはSupport v7のことで、Android SDK Manager/ExtraからAndroid Support Libraryでインストールされるそうです。(だからこれインストールしとかないと実行時にエラーになったのか)だからってPackage Explorerの見えるところにわざわざおかなくてもいいのに。。。昨年の時は手動でプロジェクトを作成しないといけなかったようですが、それを自動的に作成するようにしたみたいです。

ところでこのSupportライブラリはAndroid2.3とか古いバージョンでもこの新しいUIを使えるようにしているということなので、ちょっと考えました。このUIを使う気がないなら、Android Support Libraryを外して、さらにAndroidプロジェクトを作成するときに最低バージョン(通常は2.3にしていますが)を4.0以上にしてやれば、この"appcompat_v7"という空のプロジェクトは作成されなくなります。(正確にはテーマも変えるべきなんですが。昔は"Theme.Ligt"とか"Theme.Black"だったのが、ActionBarという名称が今は追加されてくるはずです。個人的にAndroid4.0以上の端末しか持ってなければこの方がきれいなんですが、もうちょっと実装考えてくれないかな~Googleさん。)

更に調べてみましたが、このappcompatプロジェクトがライブラリプロジェクトとして作成したAndroidアプリのプロジェクトからはリンクする設定になっていました。
(だからPackage Explorer内にプロジェクトフォルダ作っちゃうんだ...)ただ困ったことに、今後新しいアプリのプロジェクトを作成する度に新しいもの(appcompat_v7_2, appcompat_v7_3等)と新しいライブラリプロジェクトを作成してくれちゃう状態になってました。まあ新しいappcompat_v7_*は削除して、新しいプロジェクトの上記リンク設定を最初に作成されたものに設定しなおしてしまえばいいんですが、ちょっとこれはたまりません。それにこのライブラリ自体が更新されたらソースの管理はどうなるんだろう?なんか悩ましい状況になっている気がします。

2 件のコメント:

  1. minSdkVersion="14" としたら出てこなくなった。

    返信削除
  2. そうですね、古いバージョン(2.3等)への対応を諦めれば作成されなくなるようです。

    返信削除