質問: CPythonインタプリタ(JythonやKivyなどではなくCで書かれたPythonの処理系(一般的なPython))をAndroidアプリに埋め込んでPythonのコードをアプリ上で実行することは可能ですか? Kivyなどの他の処理系を使うこともできますが、それをせず、CPythonを使うならどうすればいいのでしょうか? CPythonインタプリタとその依存関係(OpenSSL, xzなど)をAndroid NDK toolchainを使ってビルドしてAndroidアプリ内に埋め込みたいです。そしてCPythonのC bindingなどをJNIから呼び出したいです。このようなことは可能でしょうか? そもそもCPythonをAndroid NDK toolchain を使ってビルドできるのでしょうか? (Raspberry Piでは動くのでAArch64/Linuxではビルドできますが、Androidではどうなのでしょうか?)
回答: BeeWareについて追記 下記 teratail の記事には、BeeWareはAndroid側の変更のため現在はビルドできないとありましたが、このStackOverflow質問の翌日(2020/7/6)には出来るようになったとリリースされたようです。 Release the Android Bees! 実際には teratail 記事より以前の2019年11月には作業が開始され、パイソンソフトウェア財団から資金提供も受けて、2月末には動かせるようになるまで作業が進んていたようです。 We have a contractor for our Android contract! Python on Android: Its alive! JavaとPythonの間を取り持つライブラリ/パッケージは以下になるでしょう。 beeware/rubicon-java Docs » Rubicon Java ドキュメントの冒頭によると、JavaをPythonプログラムのランチャーやライブラリとして扱うやり方が主体のようですね。 こちらの記事に、仕組みに詳しいらしき人からの回答がありました。 質問はKotlinですが回答はJavaからの呼び出しですね。同様に可能でしょうとあります。 KotlinでPythonを呼び出すことはできますか? > > Androidアプリを作成する上で、KotlinでPythonを呼び出すことはできますか? > > > 下記のPython.orgのWiki記事を紹介していて、JavaからのPython呼び出しが出来るのはBeeWareとChaquopyらしいですね。 ただしBeeWareはAndroid側の変更のため現在はビルドできないとあります。 ChaquopyはJavaからの呼び出し方法が文書化されていると紹介されています。 Chaquopyは有償のようですが、調べてみてはどうでしょう? Python.org自身のWikiに資料のページがあったので、その抜粋と+αの情報を載せておきます。 要求に適うものが有るかは分かりません。許容できる範囲かどうかで判断する程度でしょうか。 詳細はリンク先を参照してください。 Android - Python Wiki 以下は抜粋 > > There are several ways to use Python on Android. The following table summarizes those projects which are currently active: > > > * BeeWare > > 概要: collection of tools for building native user interfaces. > > Python版数: 3.4+ > > Open-source: Yes > * Chaquopy > > 概要: plugin for Android Studio's Gradle-based build system. > > Python版数: 3.8 > > Open-source: No > * Kivy > > 概要: cross-platform OpenGL-based user interface toolkit. > > Python版数: 2.7, 3.5, 3.6 > > Open-source: Yes > * pyqtdeploy > > 概要: tool for deploying PyQt applications. > > Python版数: 3.6 > > Open-source: Yes > * QPython > > 概要: on-device script engine and development environment. > > Python版数: 2.7, 3.2, 3.6 > > Open-source: Yes > * Termux > > 概要: Linux distribution for Android that ships Python as well as a local build environment. > > Python版数: 2.7, 3.6 > > Open-source: Yes > > > Kivyプロジェクトと同じサイトではあるが、基盤技術として独立で使えそうなもの。 kivy/python-for-android / kivy/buildozer 4年前のまとめ記事。 2016年現在の「Python を android で使う」 アプリでは無いが、Pythonを使える環境を整備する記事。 AndroidでPythonの実行環境を整える