Android Studio で Python を使う
この前、Android StudioでC++を使う方法について書きましたが、今回はPythonも使えるということを紹介していきます(Pythonでの処理をJavaで書き直すのは少々難しかったためPythonでそのままやってしまいました)
PythonをAndroid Studioで使うには
Chaquopyというライブラリを使いましょう(これ以外にいいのがあったらそちらを使ってください)(公式のドキュメントはここにあります)
ライブラリを使えるようにするには、プロジェクト名/build.gradleのpluginsに
id 'com.chaquo.python' version '12.0.1' apply false
を追加し、appディレクトリにあるbuild.gradleのpluginsに
id 'com.chaquo.python'
を追加してください
次に、Pythonのソースコードを置くディレクトリをapp/src/mainに作りましょう
ディレクトリの名前はpythonとしてください(デフォルトではapp/src/main/pythonにあるpythonファイルを見にいくようになっています)
利用したいPythonのコードの部分は関数にしてください
pythonのライブラリが必要で「pip install」を使う必要がある場合は、app/build.gradleに以下のように追加してください(.......の部分にはデフォルトで書いてあるものや自分で追加したものが入ります)(installの後の部分は自分の欲しいライブラリなどに置き換えてください)
android {
..........
defaultConfig {
.........
python {
pip {
// A requirement specifier, with or without a version number:
install "scipy"
install "requests==2.24.0"
// An sdist or wheel filename, relative to the project directory:
install "MyPackage-1.2.3-py2.py3-none-any.whl"
// A directory containing a setup.py, relative to the project
// directory (must contain at least one slash):
install "./MyPackage"
// "-r"` followed by a requirements filename, relative to the
// project directory:
install "-r", "requirements.txt"
}
}
}
}
次にJava側でPythonを利用できるようにします
Pythonのコードを常に使う場合にはAndroidManifest.xmlの<application>に以下を追加します
android:name="com.chaquo.python.android.PyApplication"
たまにしか利用しない場合には、Javaのコード内でPythonのコードを利用する直前に以下を追加します
import com.chaquo.python.*; //これだといらないものまでimportしてるので適切に
//Pythonが利用できる状態じゃなければ利用できるようにする
if (!Python.isStarted()) {
//thisの部分はJavaのソースファイルが一つの場合はこのままいでけるはずです
Python.start(new AndroidPlatform(this));
}
ここまでこれば、あとはPythonのインスタンスを取得したりモジュールを取得したりすればPythonのコードを使えるようになります(何言ってるかわかりませんよね...)(今回はhoge.pyのfugaという関数を使うことにします)
import com.chaquo.python.*; //これだといらないものまでimportしてるので適切に
//Pythonのインスタンスを取得
Python py = Python.getInstance();
//hoge.pyのモジュールを取得
//hogeの部分は自分の使いたいPythonコードのあるファイル名の.py以前にしてください
PyObject module = py.getModule("hoge");
//ここでやっと関数が使えます
//Pythonから返り値があればちゃんと返ってきます
module.callAttr("fuga");
//返り値はPythonのものなのでJavaに合わせる必要があります
//(https://chaquo.com/chaquopy/doc/current/java/com/chaquo/python/PyObject.html)
//ここにいろいろ書いてあるので確認してください
//引数が必要な場合はこんな感じ(strという変数を引数にする場合)
module.callAttr("fuga", str);
こんな感じでやっていけばAndroid StudioでPythonを利用できるはずです
まとめ
これでPythonを使ってAndroidアプリを作れるようになったと思います
前回も言いましたが、アプリを作る際にはAndroidのアーキテクチャに注意してライブラリのビルドやアプリの作成をしてください(build.gradleに対象とするアーキテクチャを書くことでそのアーキテクチャのみのアプリを作ることもできます)