読者です 読者をやめる 読者になる 読者になる

古いAndroidアプリをバージョンアップすることになった人へ

Android

はじめに

eclipseで作成されたAndroidアプリの開発環境の構築手順です。
利用しているライブラリによって、多少作業が増えたり減ったりすると思います。

Android Studio」に移行できた人は読む必要がないので、戻るボタンをどうぞ。
お察しの通り、「Android Studio」の話は出てきません(移行を試みましたが…)。

1. 「eclipse with adt」のダウンロード

本家のダウンロードページが見つからないので、別途提供元を探す必要がある。
http://www.cutt.jp/books/978-4-87783-351-0/supp/chap00_ADT-gt-and-start.htmlからダウンロードする。

パスが長すぎる場合、解凍時に問題が発生する(「エラー 0x80010135 パスが長すぎます」が発生する)ため、ダウンロード先は「C:\(ドライブ直下)」等を指定する。

2. 「SDK Manager」で各ツールをインストール

アプリを動かすのに最低限必要なツール(「Android4.4」「Google API」「usb driver」等)をインストールする。

3. プロジェクトをインポート

バージョン管理の有無によって対応が異なる。

  • gitbuket等でバージョン管理されていない場合
    http://www.adakoda.com/android/000220.htmlに倣って、該当ディレクトリのインポートを行う。
    ちなみに、gitbucket等でバージョン管理したい場合は、
    [Git Repository Exploring](Perspective)を開いて、「Clone a git repository」をクリックする。表示されるウィンドウにしたがって、作成済みのリモートリポジトリに関する情報(http  clone url、ユーザ名、パスワード等)と、作成するローカルリポジトリの宛先を入力する。
    上記で作成したローカルリポジトリと該当プロジェクトを関連付けるため、該当プロジェクトを右クリックして[Team][Share Project…]を選択する。表示されるウィンドウで、上記で作成したローカルリポジトリを指定する。
    管理対象としないリソース(/bin・/gen等)を.gitignoreに追記する。
    プッシュする際に、Gitに関する情報(ユーザ、メールアドレス)を設定すれば完了。

  • gitbucket等でバージョン管理されている場合
    メニュータブから[File][import][Git][projects from git]を選択する。表示されるウィンドウにしたがって、既存のリモートリポジトリに関する情報(リモート先、ユーザID/パスワード)を指定する。
    その他の画面は、デフォルトのまま「next」をクリックしていけば完了。

    A.01. Git リポジトリからのプロジェクトのインポート · mixi-inc/AndroidTraining Wiki · GitHub

4. 「SDK Manager」でインストールできない各ツールをダウンロード&インポート

基本的には、前開発者が利用していたものを共有してもらう。
それができないようであれば、本家またはその他の提供元からダウンロードする。
バージョンによって配布方法やAPIが変更されるため、そこを踏まえたうえでダウンロードを行う必要がある。

例. 「Google Play Services」をダウンロード&インポート
google maps api」を利用しているアプリの場合、「google play services(端末にインストールされている「Google Play 開発者サービス」というAPKの機能を呼び出すためのインターフェース群)」が必要になる。

  1. ダウンロード

    バージョンによって、「google play services」の中身が異なる。
    http://qiita.com/komitake/items/f25191ac61292d1d095e
    あるバージョンから、「libproject」がなくなっている。
    http://stackoverflow.com/questions/37310684/missing-sdk-extras-google-google-play-services-libproject-folder-after-updat
    また、あるバージョンから、いくつかのパッケージが廃止されている。
    http://onlineconsultant.jp/pukiwiki/?com.google.android.gms.location.LocationClient%E3%81%8Cimport%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84

    最新バージョンをダウンロードして実装側でその差分(中身が違うとかAPIが変更されたとか)を埋めるか、
    前開発時に利用していたバージョンをダウンロードしてそのまま利用するか。

    今回は後者で対応する。
    旧バージョンのダウンロードリンクを利用して、該当バージョンを取得する。
    http://stackoverflow.com/questions/37310684/missing-sdk-extras-google-google-play-services-libproject-folder-after-updat
    http://stackoverflow.com/questions/20982533/how-to-download-older-google-play-services?noredirect=1&lq=1

  2. インポート
    [ファイル][新規][その他][Android][既存コードからのAndroidプロジェクト]を選択する。
    表示されるウィンドウで、「プロジェクトをワークスペースにコピー」にチェックを付け、「google-play-services_lib」を指定して、対象ライブラリをプロジェクトとしてインポートする。

    「Package Exploer」の「google_play_services_lib」を右クリックし、[Properties][Android][Project build target]を選択する。該当するAPIにチェックを入れる。

    「Package Exploer」の該当プロジェクトを右クリックし、[Properties][Android][Project build target]を選択する。「Google API」にチェックし、「Library」に上記でインポートした「google_play_services_lib」を追加する。 

5. 4のツール関連の設定

認証周りで作業が必要になったりする。

例.  「Google Maps APIキー」利用に関する設定
Google Developers Console(https://console.developers.google.com/?hl=JA)」にログインする。
「認証情報」より対象のAPIキーをクリックし、パッケージ名とフィンガープリントの追加を行う(フィンガープリントは、[Window][preference][Android][Build]から確認する)。

6. エラー対応

逐一調べていくしかない
http://shirokai.hatenablog.com/entry/eclipse-exclamation

一見意味のにないように思えて、実際にやってみると解決してしまうことがある。
上の作業でいえば、ライブラリの紐づけを一度外してもう一度付けたら…(もうよく分からない)。

7. この後

eclipse
http://aitaka.hatenablog.com/entry/2016/12/10/174504

基本(ライフサイクルとかContextとか)
http://www.atmarkit.co.jp/ait/articles/0901/19/news122.html
http://qiita.com/tyfkda/items/bbb77a0e5a97eda9d4b6
http://textdrop.net/soft/android-avoiding-memory-leaks/

おわりに

泥臭さ