スキップしてメイン コンテンツに移動

Androidスマートウォッチにインストールされているアプリのバージョンの確認

Runkeeperのサポートに不具合(NullpointerException)直してとTwitterで言ったら、次のバージョンで修正したよと言われたので試してみたらアプリが落ちたので、直ってねーじゃねーかと言うためにスマートウォッチにインストールされてるRunkeeperのバージョンを調べました。

※ちなみに、上記リンクでRunkeeper Support氏の言ってるv5.12はスマホアプリ側のバージョンです。

スマホの場合、アプリのバージョン(Version Name)は、アプリ自体にある設定画面に記載されているか、下図のようにOSの設定に記載されています。

スマートウォッチ(ro.build.version.release=5.1.1)では、このようなアプリ一覧がありません(たぶん)
下記のコマンドの手順でバージョンを取得します。大まかに言うとapkファイルのAndroidManifest.xmlを調べます。

環境

  • PCのOS:Windows 7
  • 対象のデバイス:Sony Smart Watch 3
  • ADB(Android Debug Bridge) version : 1.0.32
ここではスマートウォッチのRunkeeperを例に、Sony Smart Watch 3とPCをUSB接続して動作を確認しています。

コマンドで取得する手順

別にスマートウォッチに限った話ではなくて、スマホと同じ手順です。

1.apkファイル名を調べる

以下のコマンドで調べます
adb shell pm list packages -f
これだとたくさん表示されるので、以下のように記述すると絞れます

> adb shell pm list packages -f run
package:/data/app/com.fitnesskeeper.runkeeper.pro-2/base.apk=com.fitnesskeeper.runkeeper.pro

/data/~.apkまでがファイル名です

2.apkファイルを取得する

以下のコマンドで取得できます。
> adb pull /data/app/com.fitnesskeeper.runkeeper.pro-2/base.apk

カレントディレクトリにbase.apkが保存されます。

3.apkからバージョン情報を表示

AndroidSDKディレクトリ配下のbuild-tools内のaapt.exeを使います。ここでは、(AndroidSDKディレクトリ)/build-tools/23.0.1/aapt.exeを利用しました。コマンドは以下のように。

> aapt dump badging base.apk
package: name='com.fitnesskeeper.runkeeper.pro' versionCode='12' versionName='2.2.1' platformBuildVersionName='5.0.1-1624448'
sdkVersion:'20'
targetSdkVersion:'22'
uses-permission: name='android.permission.RECORD_AUDIO'
uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
uses-permission: name='android.permission.WAKE_LOCK'
application-label:'Runkeeper'
application-label-ca:'Runkeeper'
application-label-da:'Runkeeper'
・・・

これでversionName=2.2.1だということがわかりました。

2015/12/24:追記

Runkeeprがメージャーバージョンアップしたようです。
フィットネスアプリ「Runkeeper」がv6.0にバージョンアップ、アイコンやUIが刷新 | juggly.cn
http://juggly.cn/archives/169871.html

上記手順でスマートウォッチ側のバージョンを確認したところ


versionName変わってない.....

一応、アプリが落ちることを確認しようと走ってみたら、不具合修正されてるっぽい!
まだ1回しか走ってないので完全に修正されたのか不明ですが、挙動も少し変わってました。そうなると、ここでのversionNameとはあまり当てにならないものなのでしょうか...?

コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。