Androidのアプリ開発関連のブログ

アプリ開発方法

Androidアプリの開発には統合開発環境のEclipseを使ってる方が多いが、
GUIの統合開発環境を使うとUIの操作方法を覚えなくてはいけないので、めんどい。普通のテキストエディターで書きたい。
その場合でも、直接javacはせずにantは使ったほうが良さそう。

開発用PCのOSはArch Linux使ってますんで、環境構築関連はArch Linuxでの方法です。


https://archlinuxjp.kusakata.com/wiki/Android
↑Arch Wikiの情報を元にAndroid SDKを入れて開発環境を用意する。
パッケージは全てAURにあるが、
  1. android-sdk
  2. android-sdk-platform-tools
  3. android-sdk-build-tools
の3つがまずは必要。


SDKのファイルをユーザー権限で変更できるように、
# groupadd sdkusers
# gpasswd -a <user> sdkusers
# chown -R <user>:sdkusers /opt/android-sdk/
# chmod -R 0774 /opt/android-sdk/
と、グループを作成してユーザーをグループに追加。
SDKのディレクトリの所有者と権限を変更。

Android端末を持っているなら元々入れている人が多いと思うが、インストール等にADBも使う。
Arch公式リポジトリのandroid-toolsでADBがインストールできる。


エミュレーターでのテストのためにandroid-platformが最低1つ必要、
AURからandroid-platform-14の様なパッケージがバージョン別に存在するが、
$ android sdk
とSDKを起動して、SDKの機能でGUIインストールができる。
AURでいくつもパッケージを入れるのは面倒なので、SDKの方で入れた。


$ android avd
で対象バージョンのAndroidエミュレータを作成。


$ android list targets
でデバイスの一覧が表示されるが、プロジェクト作成時に、ここで表示される「id」を指定する必要がある。


「android create project」でプロジェクトの作成ができる。
$ android create project -n myproject -t 1 -p myproject -k com.example.myproject -a MainActivity
オプションを指定する必要があり、
-n プロジェクト名
-t 「
android list targets」で確認できる「id」
-p プロジェクトのディレクトリ
-k パッケージ名
-a アクティビティ名

-t」オプションで設定されるターゲットAPIレベルは、最低要件とは別なので高くても問題ない。
テストしやすいバージョンを選べば良さそう。

ntpは問題ないと思うが、
kのパッケージ名は他のAndroidアプリと被らないように命名する必要があり、一般的には被らないようにするため、ドメイン名を逆向きにした感じで命名する。
注意事項として、「.」で区切られた各文字列の先頭に数字はダメぽい。先頭は英字。

aの
アクティビティ名は、トップ画面のアクティビティのクラス名になる。
好きな名前をつけられるようだが、一般的には「MainActivity」じゃないかと。

「android create project」で、pで指定したディレクトリにプロジェクトのファイル群が作成される。


プロジェクトのビルドにantを使うのでインストール。
# pacman -S apache-ant
Archではapache-ant」というパッケージ名。


あと、自分の場合は最初から入ってるが、当然javaのコンパイル用に
openjdkとかOracleのJDKとか、コンパイラが必要なはず。


プロジェクトのビルドは、プロジェクトのルートディレクトリで、
ant debug
ant release
↑どちらか。
binディレクトリに.apkが生成されるが、
debugだとdebug.apk、releaseだとunsigned.apkが生成される。
認証しないと
unsigned.apkしか作成されずインストールできないので、正式にアプリを公開する場合以外はdebugにする。
作成直後のプロジェクトで空のアプリが作成可能。


アプリのインストールはADBを使う。
$ android avd
からエミュレータを起動し、
$ adb devices
でデバイス名を確認。
$ adb -s デバイス名 install bin/myproject-debug.apk
ADBで認識するデバイスが1つならデバイスを指定する必要はないが、端末が複数ある時に間違えて実機にインストールしないようにadbの-sオプションでデバイスを指定したほうが良さそう。
というか、実機を複数繋いでる時に間違えて操作しちゃったことが何度かあるから、普段から-sオプションでデバイス指定したほうが良いのかもしれない・・・
エミュレーターのデバイスは「emulator-xxxx」って感じになってると思う。
adbはユーザー権限で使ったが、環境によってはサーバー起動の際にroot権限が必要な場合もあるかも。


アプリの削除は

$ adb -s デバイス名 uninstall パッケージ名
adbからのアプリアンインストールはパッケージ名での指定となる。
プロジェクト作成時にkオプションで指定した名前のパッケージとなる。
端末上で削除してもいい。


上の手順で成功すればアプリはインストールされ、端末側でアプリを実行することもできるが、
adb -s デバイス名 shell am start -n com.example.myproject/.MainActivity
で、adbからアプリ起動することもできる。