android sdk tools 25.3.0 に関しての備忘メモ
- はじめに
- sdk tools 25.2 => 25.3.0
- コマンドライン更新はオマケなのです?
- AS 2.3からは強制なのです?
- sdk tools r26 の状況(2017/03/29追記)
- 2017/4/22 追記
- adbに余計な修正が。。(2017/5/26追記)
はじめに
をうけて
今後 android update sdk の更新URLだと、更新情報が配信されない?
みたいな話がありアップデートしてみて気づいたことを備忘メモしておきます
環境
sdk tools 25.2 => 25.3.0
今の時点では Canary Channelで配布しているよう。
$ANDROID_HOME/tools/bin/sdkmanager --update --channel=3
で更新しました。 確かに下記のコマンドでの更新情報にはでてきません
勿論 AS上で、Canary Channel に設定すればGUIで更新は可能です
更新後
下記コマンドは削除
- android
- sdkmanager/avdmanager が代替
- ddms
- tools直下の monitor が代替
- draw9patch
- これはAS上で作業しましょうということ? *1
- Android Asset Studio 辺り使うのかな?
- hierarchyviewer
- Uiautomatorviewerが代替
- traceview
- 代替対象なし?
template系の削除
これASの初期の時点で、ほぼ使われていなくて、現在はAS内部のpluginの中に同梱されているんですよね・・
カスタムとかしてもどっちにしろupdate時にまるっとフォルダごと消されるので、下記のテクとかあんま意味ないな~とか思ってました
ADTのときは
現時点でのASベースだと、
- 汎用library-projectを作って独自aarを作って他のプロジェクトに持っていって利用
- フォルダごと導入の手もあるが、フォルダベースが増えるとASは誤動作しやすい/不安定になる 気がする
binに移動したやつ
- monkeyrunner
- monkeyrecorderは、既に無くなってるのに今もつかっている人いるんだろうか??
- screenshot2
- AS + screenshot2 だと 16GなMac環境だとたまに固まる から正式採用扱いされても微妙。
そこら辺の話は、下記辺りに以前書いた
スクリーンショット(pshot.sh) の辺り
環境設定の変更
- $HOME/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.8` export JAVAFX_HOME=$JAVA_HOME export ANDROID_BUILD_VERSION=25.0.2 # 下記二行は環境依存 export ANDROID_HOME=$HOME/android-sdks export ANDROID_NDK_HOME=$HOME/android-ndk-r13b export NDK_TOOLCHAIN_VERSION=clang export NDK_CCACHE=`which ccache` # 〜中略〜 PATH=$ANDROID_HOME/tools:$PATH PATH=$ANDROID_HOME/tools/bin:$PATH #★追加 PATH=$ANDROID_HOME/platform-tools:$PATH PATH=$ANDROID_HOME/build-tools/$ANDROID_BUILD_VERSION:$PATH
新規追加系
sdkmanager
–channel 指定なしだと 0:Stable になってしまう動き
- sdkmanager –list だと一気に表示が流れてしまうのでわかりづらい。
- sdkmanager –list >log とかしてdumpしてから使うのコレ?
- パッケージのインストール
sdkmanager “platforms;android-25”
と指定すれば入れられるとのことですが、イマイチ指定の仕方のルールがわからん・・
でも、android gradle plugin 2.3.X から、下記の機能がついているので、それ程致命的ではないかとは思いますが。。。
- build.gradle に compileSdkVersion 指定しておくと、存在しない場合実行時に勝手にDLしてくる
- ./gradlew tasks でもOK
- オフライン実行や既に存在しない compileSdkVersion を指定するとビルドエラーになる
ココらへんの話はググるとAS上のGUIの設定ページに飛ばされる
Prefrenceメニュー内に存在
- 引数なし実行時のヘルプ
$sdkmanager Usage: sdkmanager [--uninstall] [<common args>] [--package_file <file>] [<packages>...] sdkmanager --update [<common args>] sdkmanager --list [<common args>] sdkmanager --licenses [<common args>] In its first form, installs, or uninstalls, or updates packages. By default, the listed packages are installed or (if already installed) updated to the latest version. --uninstall: uninstalled listed packages. <package> is a sdk-style path (e.g. "build-tools;23.0.0" or "platforms;android-23"). <package-file> is a text file where each line is a sdk-style path of a package to install or uninstall. Multiple --package_file arguments may be specified in combination with explicit paths. In its second form (with --update), all installed packages are updated to the latest version. In its third form, all installed and available packages are printed out. In its fourth form (with --licenses), show and offer the option to accept licenses for all available packages that have not already been accepted. Common Arguments: --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK containing this tool --channel=<channelId>: Include packages in channels up to <channelId>. Common channels are: 0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary). --include_obsolete: With --list, show obsolete packages in the package listing. With --update, update obsolete packages as well as non-obsolete. --no_https: Force all connections to use http rather than https. --proxy=<http | socks>: Connect via a proxy of the given type. --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use. --proxy_port=<port #>: Proxy port to connect to. * If the env var REPO_OS_OVERRIDE is set to "windows", "macosx", or "linux", packages will be downloaded for that OS.
avdmanager
- 該当の解説ページは現在ない
- 25.2.X でsdkmanagerは配布されているけど、avdmanagerは同梱されてないから?
- これJenkinsとかでavd作ってテストしている界隈の人は別対応が必要そう
- エミュ使わない robolectricテストがこの頃主流っぽいから問題ない??
- 引数なし実行時のヘルプ
$ avdmanager Usage: android [global options] [action] [action options] Global options: -s --silent : Silent mode, shows errors only. -v --verbose : Verbose mode, shows errors, warnings and all messages. --clear-cache: Clear the SDK Manager repository manifest cache. -h --help : Help on a specific command. Valid actions are composed of a verb and an optional direct object: - list : Lists existing targets or virtual devices. - list avd : Lists existing Android Virtual Devices. - list target : Lists existing targets. - list device : Lists existing devices. - create avd : Creates a new Android Virtual Device. - move avd : Moves or renames an Android Virtual Device. - delete avd : Deletes an Android Virtual Device.
ググると GoogleのGUI設定ページに飛ばされるんですよね・・
現在のandroid sdkのみのDL方法
現在は必ずAndroid Studioのページに飛ばされてしまう・・
Android Studio と SDK ツールをダウンロードする | Android Studio
な感じで、toolsのフォルダ内の実行ファイルのみ取得したあと、
な流れで更新させようとしているのかな?
コマンドライン更新はオマケなのです?
keicha_hrs さんがWin版の検証されているみたいですね。
すごく勉強になります・・
$ androidThe android command is no longer available.For manual SDK and AVD management, please use Android Studio.なんじゃこりゃ!
コマンドラインツールオンリーっていうのはどうも勝手が悪いよね・・・
$ sdkmanager --listと入力してパッケージ名一覧を取得しようとしても、一定の文字数以上は省略する仕様になっているもんだから、system-images;a...gle_apis;x86_64のように切れてしまう。これじゃ使い物にならんだろ。
GUIのSDK Managerを使いたいためだけにAndroid Studioを導入するっていうのは、さすがにアホくさいよなあ
tools/androidの中身を閲覧して吹いた
SDK Tools 25.3のWindows版はまだ配布されていないみたいだけど、SDK Managerがなくなるのに先立って、SDK Tools単体でAndroid Studioに認識させる実験をしてみる。
結果としては、Android Studioは最新版のSDK Platformの有無しか見てないみたいね。
AS 2.3からは強制なのです?
とくにWin版はインストーラで入れていると、2.2アンインストールされるらしい。
厳しいですね〜
あるはずですよー pic.twitter.com/qy6ZbADnYD
— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年3月3日
窓だとクソみたいなとこに入るんですよね…。以下にあります。
— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年3月3日
C:\Users\ユーザ名\AppData\Local\Android\sdk3\tools\bin\sdkmanager.bat
sdk2 ディレクトリ確認したけど確かに exe だった。
— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年3月3日
GUI は Android Studio 備え付けって感じだと思う
— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年3月3日
新規はAS上で、更新は sdkmanager --update
— close_yutori (@kimukou2628) 2017年3月3日
で更新する運用みたいですね。
たまに--channel も付けないと駄目な用ですが
あ、iOS も iOS で Xcode が必要とかあったし…
— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年3月3日
sdk tools r26 の状況(2017/03/29追記)
keicha_hrs さんの検証情報には何時もお世話になってます〜(謝辞
自分も後で調べてみよう・・・
SDK Toolsがr26になっているが、androidコマンドの機能を部分復活させてるな。混乱が大きすぎたから一時的な措置か?
— けいちゃ (@keicha_hrs) 2017年3月28日
tools/emulatorコマンドが相対パスで実体を探していたという大ポカは修正されたらしい
— けいちゃ (@keicha_hrs) 2017年3月28日
emulatorコマンドから立ち上げたavdを終了したときに、adbとの接続が削除されずに残ってしまうバグも修正された、と
— けいちゃ (@keicha_hrs) 2017年3月28日
adb connections are now more reliable. A running emulator is detected faster and doesn’t go into “offline” or “unauthorized” status anymore.
— けいちゃ (@keicha_hrs) 2017年3月28日
なんかLinux、WindowsともにAVDの動きがおかしいんだけど、r26以前に作成したAVDがうまく動かなくなってる?現象がまだよくわかっていないが
— けいちゃ (@keicha_hrs) 2017年4月2日
なんかTools r26.0.1でエンバグしてないかい?
— けいちゃ (@keicha_hrs) 2017年4月2日
直ったはずのバグが「復活」しちゃってるし。頼むよGoogle先生。
— けいちゃ (@keicha_hrs) 2017年4月2日
何度かPC再起動、HAXMの再インストール、AVDの再作成とかやってたら回復したんだけど、なぜ回復したのかもわからないという(苦笑)
— けいちゃ (@keicha_hrs) 2017年4月2日
2017/4/22 追記
日本語の Android Studio ダウンロードページは tools 25.2 リンクでしたが, 英語ページでは 26 になっていましたので, 日本語ページの 25 へのリンク消えるのも近そうです… gradle + CMake に移行していきたいと思います…
— Syoyo Fujita (@syoyo) 2017年4月22日
な状況で海外だともうリンクがないみたい。
近頃のG様の方針だと*2 日本語サイトでDLリンクがなくなった時点で削除されそうな感じですね〜(汗
munacky さんのコメントによる検証 (sdkmanager –update)
id:munacky さん情報ありがとうございます。
pecoと組み合わせれば ワンライナー pupdate.sh 書けそうなので書いてみました
- pupdate.sh
TARGET=`sdkmanager --list --verbose | grep -v Parsing | grep -v Description | grep -v Version | grep -v Installed | grep -v -e '^\s*#' -e '^\s*$' | peco --select-1 |awk '{print $1}'` if [$TARGET = '']; then exit fi echo "TARGET:"$TARGET sdkmanager "$TARGET"
たしかに多少は省力化ができそうですね。
因みに 下記のpecoですが、version上がって以前よりかなり安定しています。
ただ複数選択の方法がわかんないー><。誰か知っている方居たら教えてください
下記のページで教えてもらいました。Macだとデフォルトのキーバインドがぶつかっているというオチらしい
launch方法メモ追記(2016/5/11)
色々と調べたら
android sdk tools 25.3.0 以上ベースだと
- avdmanager list avd
- emurator -avd XXXX
- or
- emurator @XXXX
を組み合わせろ ということらしい。
$ avdmanager list avd Available Android Virtual Devices: Name: Android_Wear_Round_Chin_API_25 Device: wear_round_chin_320_290 (Google) Path: /Users/kimura/.android/avd/Android_Wear_Round_Chin_API_25.avd Target: Android Wear Based on: Android 7.1.1 (Nougat) Tag/ABI: android-wear/x86 Skin: AndroidWearRound Sdcard: 100M
な出力から、Name: XXX のXXX抽出なのでshell芸 頑張んないと駄目なケースorz
emurator に関しては、昔あったオプションとかなくなっているよう。明らかに劣化してるな・・
Firebase TestLab 使ってほしいから問題ない という認識なんだろうか・・(汗
一応Macベースでは書いてみた。
- pemu.sh
#!/bin/sh PLAYER=$ANDROID_SDK_ROOT/tools/emulator TARGET=`avdmanager list avd | grep -e Name | peco --select-1 |awk '{print substr($0,11) }'` if [$TARGET = '']; then exit fi echo "TARGET:"$TARGET $PLAYER -avd $TARGET &
adbに余計な修正が。。(2017/5/26追記)
peco 0.5.1
— close_yutori (@kimukou2628) 2017年5月26日
peco --select-1
が動かなくなってなにげに不便。
(-ω-)。なにが悪いんだろう?
adb devices -l で空行が入るようになったせいらしい。 下記を追加する必要があり
grep -v -e ‘^\s#’ -e ‘^\s$’
- 変更前
DEVICE=`adb devices -l |grep -v attached |grep -v daemon |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi
- 変更後
DEVICE=`adb devices -l |grep -v attached |grep -v daemon | grep -v -e '^\s*#' -e '^\s*$' |peco --select-1|awk '{print $1}'` if [$DEVICE = '']; then exit fi