ここはどこ?
いよいよ、Android 5.0の配布が本格化してきたようです。いつも使っているNexus 7 (2012)にもシステムアップデートが降ってきました。実はこの瞬間を楽しみにしていました。
というのも最近配布したMaxima on Android 2.7ではKitkat→Lollipopのシステムアップデートの際にスムーズに移行できるように少し仕掛けを入れておいたのです。
以前の記事に書いたようにLollipopからはnativeプログラムの形式がPIE形式でないと、実行されないように変更されました。MoAの主要な部分であるMaximaの処理系はnativeプログラムとして組み込んでいますから、この影響を受けます。具体的にはLollipopより前のOS向けとLollipop(以降)のOS向けとで2つのMaximaバイナリを持ち、インストール仕分ける、というロジックをMoA2.6で組み込みました。
MoA2.6を出した後、忘れ物に気がつきました。Kitkat→Lollipopとシステムアップデートが起こった場合です。アップデート後にMoAを起動すると、PIEでないMaximaを起動しようとしてMoA2.6はハングしてしまうのです。そこでMoA2.7をリリースする際に、毎回実行時にOSバージョンを見て必要なバイナリがインストールされているかチェックするロジックを組み込みました。
ところが、、、OSアップデートの際に動くロジックってOSアップデートをしないとテストできないわけです、、、orz。結局この部分は本当の意味でのテストは出来ないままMoA2.7をリリースしました。
というわけで、ようやく実機で本物のアップデートで実行して、、、、上手く動きましたよ。年末からお正月にかけてやった実装の確認がようやくできたわけで、ほっとしましたよ。ほっ!