Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Android- Maxima on Android 3.2 リリース計画Android

ヘルシンキ空港

 

これから秋のどこかの時点でMoA 3.2をリリースするべく、以下がその計画の内容です。今回は出来るだけソースコードをシンプルにして、今後の手間がかからないようにすることが目標です。そのために、古いバージョンのAndroid OSへのサポートを中止します。

  • Maximaを最新版(5.41.0)に上げる。
  • Android 4.4 Kitkat, API level=19以降のみサポート
    Manifest変更、build.gradle変更
  • MathJaxの古いWebViewへの対応の中止によるWebView内HTMLの一本化
  • 追加インストール手順の簡素化
  • SDカードへのインストールの廃止
  • apkサイズ100MB対応
  • Position independent codeのみサポート

すでに上記の作業は概ね終わっています。まもなくβテストを始められると思います。

上記作業に加えて、部品として使っている各種ソフトを最新版にあげました。

MathJax 2.1→2.7.5, JQueryMobile 1.3 → 1.4.5, Gnuplot 4.2 → 5.2.4

使用している環境も最新に近いものにしました。

Android Studio 3.1.4, Android SDK 28, Android NDK 14b

 

今回の作業で一番トラブったのは、Android PieでGnuplotのクロスコンパイルしたバイナリを起動するとすぐに死んでしまうことでした。adb shellで入ってバイナリを起動すると動作するのですが、JavaのProcessBuilderから呼び出すとsigusr2 (158番)というシグナルを受けて死ぬ、というかなり奇妙な症状でした。

色々と試したり調べた結果、これはAndroid Pieで強化されたSELinuxサンドボックスが原因だろうと見当をつけました。Gnuplotのmain()の最初の部分を読んで見るとseteuid()などuid関連のシステムコールを呼んでいます。MoAではこの辺は全部不要なはずなので#if 0〜#endifで外した結果、無事に動作するバイナリを作ることが出来ました。