見出し画像

Android StudioでPythonの処理を実行する時のポイント

前々回くらいの続き、
以前の内容を踏襲しつつ改めて、

とりあえず、Android Studioのバージョンは更新して、
空のアクティビティとして新規プロジェクトを開きます。
(個人的に、少し古くて対応してなくて若干躓きました)

build.gradeにプラグインを追加します。

  • plugins{  }内に下のコードを追加

id 'com.chaquo.python' version '14.0.2' apply false
実際の画面例

build.grade(app)にライブラリを追加します。

  • plugins{  }内に下のコードを追加

    id 'com.chaquo.python'
  • defaultConfig{  }内に下のコードを追加
    ここでの注意点は、
    Windwosに導入されているpython.exeが、
    バージョン3.12以降だと未対応で後でエラーになる点。
    (2023年12月初旬時点では、3.11ならとりあえず動く)

        //Pythonのライブラリを使うために必要
        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        }

        python {
            //Pythonのパスを指定 (python.exeは ver3.11)
            buildPython "実際のパス/python.exe"
            pip {
                //Pythonのライブラリをインストールする。
                install "numpy"
            }
        }
実際の画面例

※ライブラリを追加する場合は、
 上のpip{ }内、install "ライブラリ名" の記述を追加。

加えて、
前回はこれ以下が理解不足でしたが、
ライブラリを使う場合は以下も必要。

settings.gradeにurlを追加します。

  • repositories {  }内に下のコードを追加

        // Chaquopyのライブラリを使う場合に必要
        maven { url "https://chaquo.com/maven" }
実際の画面例

Manifestにも記述を追加します。

  • <application 内に下のコードを追加

        android:name="com.chaquo.python.android.PyApplication"
実際の画面例

後は、Activity等に処理を書くと、
Pythonの処理が呼び出せます。

  • MainActivityに追加した処理例(Java)

        //Pythonのインスタンスを取得
        Python py = Python.getInstance();
        PyObject pyobj = null;

        try {
            //Pythonのモジュールを取得
            pyobj = py.getModule("test");
        }catch (PyException e) {
            String s =  e.toString();
            if (!Python.isStarted()) {
                Python.start(new AndroidPlatform(this));
            }
        }

        String s = "pyobj is null";
        if (pyobj != null) {
            try{
                //Pythonの関数を取得
                PyObject obj = pyobj.callAttr("get_msg", "test");

                //Pythonの関数の引数を取得
                PyObject val = pyobj.get("val");

                //Pythonの関数の戻り値を取得し表示用文字列にセット
                s = "msg = " + obj.toString() + ", val = " + val.toString();

            }catch (PyException e) {
                s =  e.toString();
            }

        }
        //TextViewに表示
        TextView tv = findViewById(R.id.tv_01);
        tv.setText(s);

上のコード内で、py.getModule("test")と、
モジュール名を指定したため、
プロジェクト内のpythonフォルダには、
"test.py"というファイルを追加します。

  • test.pyの中の記述例(python)

val = 1234567890

def get_msg(msg):
    return msg + " OK."

こんな感じでAndroid Studioでも、
Pythonの処理を利用したり、
ライブラリを利用したりできるようです。

ここで使用しているプラグインの公式サイト
Gradle plugin - Chaquopy 14.0

ここで利用したpythonのバージョンはこちら
Python Release Python 3.11.6 | Python.org

-この記事は、アプリ開発経験はあるけどPython未経験という非ITエンジニアが、Android Studio環境でPythonプログラミングを始めるためのステップを紹介します。書き手自身の経験や学びから、Android Studioの具体例を交えて紹介します。

この記事が気に入ったらサポートをしてみませんか?