OTAが降ってこない端末も世の中には沢山ありますが、訳あってOTAが降ってきてほしくない場合もありますよね?例えばフレームワークをゴニョゴニョしてたりとかカーネルを弄ってたりとか。
世の中同じように困っている人は居る訳で、そのような先人の知恵を真似していたのですが本日新たな方法を発見したので投稿しておきます。
今までは、こちらの記事を参考にして無効化していました。
「nexus7の4.2へのアップデートのうざい通知を止める方法まとめ」
最初は、こちらの記事の「ファイルをリネーム」で対処したつもりでしたが、それでも色々やっているうちにOTAが降ってきたので「Google サービス フレームワーク」を無効化することで対処していました。 しかし、この方法だとWiFi経由の位置情報が取得できないのです。「Google Now」は使えなくても別にいいわーいらんわーと思っていましたが、それはちょっと困っておりました。
ということで、別の方法を探していたら、「Cyanogenmod」のソースがヒットしまして、あちらさんでは”otablock”という名前通りのスクリプトを用意してそれを「init.local.rc」で叩いておりました。
「Use Package Manager to disable stock OTA」
でotablockの中身ではこんなコマンドを叩いておりました
pm disable com.google.android.gsf/com.google.android.gsf.update.SystemUpdateActivity pm disable com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService pm disable com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService\$Receiver
pmコマンドを使って、gsf(Google サービス フレームワーク)配下のSystemUpdate関連を無効化しているということですね。すぱらしいピンポイントです。ということで早速「Google サービス フレームワーク」を有効化し、OTAアイコンがでてきてからこちらのコマンドを叩き込んでみたところ、OTAのアイコンが消えました!まあ当たり前といえば当たり前なんですけども。
もちろん「Google サービス フレームワーク」は有効なのでWiFiアイコンは色付きでGoogleMapアプリでWiFiによる位置情報も取れました。めでたしめでたし。
*1 実験したのはNexus7 2012(JDQ39)です。
*2 このコマンドをroot以外で実行すると「Killed」と失敗したので要rootedと記載してます。
*3 コマンドのシンタックスや挙動は機種やOSバージョンで異なるかもしれません。