4

SL4A または ASE を使用して Android に既存の Python スクリプトを移植できますか? 私が具体的にやりたいことは、通常の UI 要素を持つ Android アプリケーションを作成し、アプリケーション自体から Python スクリプトを実行し、出力を取得して表示することです。これは可能ですか?

4

4 に答える 4

2

個人的に私はあなたが暗黙のうちに3つのポイントを求めていると思います:

互換性デスクトップ/モバイル

1つ目は、電話のPythonライブラリとコンピューターのPythonライブラリの互換性です。サードパーティのライブラリを使用せず、sl4aによって提供される追加のPythonライブラリを必ず含める場合は、通常は問題ありません。

包装

2つ目のポイントは、Android用のPythonアプリをパッケージ化する方法についてです。sl4aのWebサイトで説明されているように、ラッパーを使用して簡単に実行できます。実際、彼らはそれを行う方法を説明するSL4Aに関する本の章のコピーを配布しています。これは可能ですが、Pythonをまだインストールしていない場合は、ユーザーがPythonをインストールする必要があることに注意してください(これは、アプリの起動時の一種のアラートです)

UI

3つ目の注意点は、sl4aで使用できるウィジェット/レイアウトに関して100%無料ではないということです。つまり、JavaやScalaでできることは何でもできません。そのため、「モバイルルックアンドフィール」を取得するために、UIを変更し、代わりに(Pythonとやり取りできる)Webビューをフレームワークで実行する必要がある場合があります。

お役に立てれば。

于 2011-11-03T13:04:43.580 に答える
0

ウェブインターフェースが通常のUIの場合は、このディスカッションhttp://groups.google.com/group/android-scripting/browse_thread/thread/f86812549d2686e2/f828f916411d7a95をご覧ください。Python、webView、HTML5、JavaScriptを使用できます

于 2011-11-03T13:03:31.713 に答える
0

あなたがしたいことは、python解釈とスクリプトコードを含む独立したapkファイルを作成することだと思います。

これがAndroidでできるかどうかはわかりません。私が知っている唯一の方法は、Android Scripting Environment からスクリプトを実行することです。

于 2011-11-03T12:59:00.267 に答える
0

私は同様の問題を抱えていましたが、java.lang.ProcessBuilder を使用して作成されたサブプロセスで SL4A インストールから Python-4-Android バイナリを実行する Java で小さなシングルトン クラスを作成することで最終的に解決しました。そのため、SL4A メカニズム (トリガー、アップコールなど) はまったく使用せず、Python を借りているだけです。

これは、SL4A を介して Python プロセスを開始して接続しようとするよりもきれいに見えます。

これは Python 2.7.1 で、Mac OS X Snow Leopard の拡張機能をクロスコンパイルしています。私の Python モジュールは、テキストの入出力のみを行っており、ソケット接続などを受け入れています。Android API とのやり取りはありません。Java ストリームを Python 入力に書き込み、Java ストリームを読み取って Python 出力を取得します。C 拡張機能は、P4A 命令を使用して構築されます。(Android は、追加するまで .so dynalibs を見つけることができませんでした

[build_ext]
inplace=1

ビルド中に setup.cfg に。これは、Android では setup 'install' が呼び出されないためだと思います。私はちょうどadbでプッシュしています。

アクティビティのライフサイクル状態はすべて機能しているように見えますが、メイン プロセスが停止状態のときにサブプロセスが自動的に中断されるかどうかはまだわかりません。

興味があれば、数週間でコードを投稿できます。(休暇で出発するだけです。)

私のパッケージ化の計画は、Python コードの ZIP アーカイブを /assets に配置し、最初の onCreate でアプリを解凍することです。これはまだ実装していませんが、問題はないと思います。

于 2012-06-03T18:34:48.673 に答える