ついこの間 Galaxy S III にOSの更新の通知が来たので何も考えずにアップデートしたら、Androidのバージョンが4.1.1になった。
それはいいのだけれど、その後実機でのデバッグが出来なくなってしまった。
Galaxy S IIIをUSBでMacにつないだ状態でEclipseからアプリを実行しようとすると、「Failed to install ........ timed out. Launch canceled.」というエラーになってしまう。
検索してみた所では、このスレッドの最後(2012/10/24)に書かれているコメントが最も近いような気がする。
android - Unable to debug via eclipse on phone with Jelly Bean - Stack Overflow
『After inspecting my UMASK, I saw it's now 0000 (and it was 0077 on stock kernel), so I concluded that the wrong UMASK was the root cause of the error.
Still, as can be seen from numerous other threads on this issue out there, it's very wrong for the stock kernel to cause that problem.』
という事は Android 4.1.1自体のバグなのだろうか。
これは困った。。。
幸いな事に Android 4.1.2 の Nexus 7 の方は全く問題ないので、しばらくはそちらで開発するしかないかも知れない。
この機会にいっそGalaxy S IIIをRoot化してみるかな。^^
追記1:
下記にもある通り、Android 4.1 (Jelly Bean)からデフォルトの
umask値が000ではなく077になった事が関係している模様。
[Q] Jelly bean and apk. - xda-developers
Eclipse や adb installを使わずに手動でAPKファイルを端末にコピーしてからインストールすれば動かせるらしい。でもそんな面倒な事はやってられないな〜。
追記2:
試しに
adb install bin/[APPNAME].apk
を実行してみると、
Failure [INSTALL_FAILED_ALREADY_EXISTS]
というエラーになった。そこで
adb uninstall [PACKAGENAME]
をすると、Success になったので、その後もう一度、
adb install bin/[APPNAME].apk
を行うと Success というメッセージが表示されてアプリがインストール出来た!
ただやはりEclipseから実行した場合はエラーになってしまう。変更する度にuninstallとinstallをコマンドラインでやらないと行けないのは面倒過ぎるので、何とか早く直って欲しいものだ。