自分用メモ
新規作成系
環境
OS: Windows7
Java: JDK8
Ant: 1.9.2
id: Android-15
Platform: Android 4.0.3
API Level: 15
Revisions: 5
Tag/ABIs: default/armeabi-v7a
Android SDK Tools: 25.2.5
Android SDK Platform-tools: 29.06
Android SDK Build-tools: 29.0.3
使用してるドキュメント: Android4.4.2時点のもの (6年以上昔の古い情報)
プロジェクト作成
ttp://127.0.0.1:8000/training/basics/firstapp/creating-project.html
このコマンドでアプリ作る可能なターゲットをリストアップして調べる
> android list targets
※android はバッチファイルで引数なしで実行するとGUIのSDKマネージャが起動する…
※このバッチファイル、substコマンドで生成したドライブ下では(何かの設定が悪かったのか)動かなかった…残念…
このコマンドでアプリの空プロジェクト(テンプレート)一式が生成される
MyFirstAppとかの引数は適宜
> android create project --target <target-id> --name MyFirstApp \
--path <path-to-workspace>/MyFirstApp --activity MainActivity \
--package com.example.myfirstapp
※ android --help create project コマンドを実行すると引数の説明でてくるが、--gradleの指定でビルドツールをantじゃなくgradleにすることもできるらしい(まぁantのほう使うけど)
実機でのアプリのテスト実行
ttp://127.0.0.1:8000/training/basics/firstapp/running-app.html
このコマンドでアプリのデバッグ版がビルドされる
> ant debug
スマホの実機をPCに繋いだら
このコマンドを実行でアプリをインストールできる
またadbがデバッグ情報受け取りのためサーバーになってスマホと接続状態が継続されるぽい
> adb install bin\MyFirstApp-debug.apk
インストール済みのところにもう一度インストールするときは -r フラグをつけると新しいのに置き換えてくれる
> adb install -r bin\MyFirstApp-debug.apk
端末からのアンインストールのコマンドはパッケージ名で指定する必要がある
> adb uninstall com.example.myfirstapp
デバッグサーバー状態のままだとスマホとPCの接続切れないから
adbのサーバーを止めることで強制的に切れる
> adb kill-server
(これは昔ググったときに見た情報でありこのやりかたがいいのか知らん、要調査)
AndroidManifest.xmlのuses-sdkタグ
チュートにあったuses-sdkタグの設定をどうすればいいのか分からんかったので設定しなかった、後で調べる
ttp://127.0.0.1:8000/guide/topics/manifest/uses-sdk-element.html
android:minSdkVersion ... アプリ動かすのに必要な最小のAPIレベルを指定するらしい、省略すると1になり初期のAndroid端末でも動くことを保証することになるらしい…ヤバい、設定必須の重要項目だた。create projectコマンドで生成されるAndroidManifest.xmlにはデフォではuses-sdkタグは含まれてないので毎度書き入れる必要がある
android:targetSdkVersion ... 雑に言えば実行確認済みの端末のVersion(APIレベル)。minSdkVersionからこのバージョンまで全部確認してますよー的な。これが実機のAPIレベルより低い場合に互換性モードが発動するらしい、互換性モードが望ましくない場合は最新実機までちゃんとテストしてここに記せってことらしい?省略するとminSdkVersionと同じになる。(この属性はAPIレベル4で導入されたらしい?まぁ4未満で動かすことないから関係ないか)
android:maxSdkVersion ... 設定したらダメと説明されてる属性…ここで指定したAPIレベルより高いAPIレベルを使う端末は(後方互換性がない可能性から)一切サポートしないということを示す感じ?端末のAndroidのバージョンをアップデートして端末のAPIレベルが上がったときに上がったAPIレベルより低いAPIレベルをこの属性で指定してるアプリを自動削除するという機能が発動。通常は後方互換性があるようにAndroidは設計されてるらしいので不要な属性らしい。Android2.0.1以降は勝手に削除はしなくなったらしい(?)がGooglePlayではチェックしてるらしいくこの属性は設定しないほうがいいらしい。APIレベル4導入されたらしいAndroid1.6あたりがAPIレベル4ぽい?