2088

私たちはS60バージョンに取り組んでおり、このプラットフォームには優れた Python API があります。

ただ、AndroidでのPythonについては公式なものはありませんが、Jythonが存在する以上、ヘビとロボットを連携させる方法はありますか??

4

23 に答える 23

363

新しいAndroid Scripting Environment (ASE/SL4A) プロジェクトもあります。見栄えがよく、ネイティブの Android コンポーネントと統合されています。

注: 「アクティブな開発」ではなくなりましたが、いくつかのフォークがある可能性があります。

于 2009-06-10T05:24:29.237 に答える
229

はい!: Android スクリプト環境

SL4A経由の Matt Cuttsによる例-- 「6 行の Python コードで記述されたバーコード スキャナは次のとおりです。

import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)
于 2009-06-10T05:13:13.870 に答える
95

Android 用 Pygame サブセット

Pygameは、新しいプログラマーに人気のある Python (デスクトップ) 用の 2D ゲーム エンジンです。Android 用のPygame サブセットは、それ自体を次のように説明しています...

...Pygame 機能のサブセットの Android プラットフォームへの移植。このプロジェクトの目標は、Android 固有のゲームの作成を許可し、PC のようなプラットフォームから Android へのゲームの移植を容易にすることです。

例には、APK としてパッケージ化された完全なゲームが含まれており、これは非常に興味深いものです。

于 2011-01-28T12:18:47.870 に答える
91

Python愛好家で Android プログラマーとして、残念ながらこれは良い方法ではありません。2 つの問題があります。

問題の 1 つは、Android 開発ツールにはプログラミング言語以上のものがあることです。多くの Android グラフィックには、HTML と同様に、表示を構成するための XML ファイルが含まれます。組み込みの Java オブジェクトはこの XML レイアウトに統合されており、コードを記述してロジックからビットマップに移行するよりもはるかに簡単です。

もう 1 つの問題は、G1 (およびおそらく近い将来の他の Android デバイス) がそれほど高速ではないことです。200 MHz プロセッサと RAM は非常に限られています。Java であっても、アプリを完全にスムーズにするには、オブジェクトの作成を回避するためにかなりの量の書き換えを行う必要があります。Python は、まだモバイル デバイス上でしばらくの間、遅すぎるでしょう。

于 2008-11-01T20:29:44.703 に答える
84

クロスコンパイルとイグニフーガ

私のブログには、Android 用の Python 2.7.2 をクロス コンパイルするための手順とパッチがあります。

また、2D ゲーム エンジンであるIgnifugaもオープン ソース化しました。Python/SDL ベースで、Android 用にクロスコンパイルします。ゲームに使用しない場合でも、コードまたはビルダー ユーティリティ ( Tim にちなんでSchaferと名付けられた...誰だかわかります) から役立つアイデアを得ることができます。

于 2011-10-12T13:49:09.380 に答える
83

Android のスクリプティング レイヤー

SL4Aはあなたが望むことをします。サイトからデバイスに直接簡単にインストールでき、root は必要ありません。

さまざまな言語をサポートしています。Python は最も成熟しています。デフォルトでは Python 2.6 を使用しますが、代わりに使用できる3.2 ポートがあります。そのポートを Galaxy S2 のあらゆる種類のものに使用しましたが、問題なく動作しました。

API

SL4A は、androidサポートされている言語ごとにライブラリのポートを提供します。このライブラリは、単一のAndroidオブジェクトを介して、基になる Android API へのインターフェイスを提供します。

from android import Android

droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade

各言語にはほとんど同じ API があります。Web ビュー内で JavaScript API を使用することもできます。

let droid = new Android();
droid.ttsSpeak("hello from js");

ユーザー インターフェイス

ユーザー インターフェイスには、次の 3 つのオプションがあります。

  • API を介して、汎用のネイティブ ダイアログとメニューを簡単に使用できます。これは、確認ダイアログやその他の基本的なユーザー入力に適しています。
  • Python スクリプト内から Web ビューを開き、ユーザー インターフェイスに HTML5 を使用することもできます。Python から Web ビューを使用すると、Web ビューとそれを生成した Python プロセスの間でメッセージをやり取りできます。UI はネイティブではありませんが、それでも有効なオプションです。
  • ネイティブの Android ユーザー インターフェイスのサポートがいくつかありますが、それがどの程度うまく機能するかはわかりません。私はそれを使用したことがありません。

オプションを組み合わせることができるため、メイン インターフェイスの Web ビューを使用しながら、ネイティブ ダイアログを引き続き使用できます。

QPython

QPythonという名前のサードパーティ プロジェクトがあります。SL4A に基づいて構築されており、その他の便利な機能が組み込まれています。

QPython は、インストールを管理するためのより優れた UI を提供し、パッケージ管理用の小さなタッチスクリーン コード エディター、Python シェル、および PIP シェルを含みます。また、Python 3 ポートもあります。どちらのバージョンも Play ストアから無料で入手できます。QPython は、Kivy を含む Android プロジェクトの Python の束からのライブラリもバンドルしているため、単なる SL4A ではありません。

QPython はまだ SL4A のフォークを開発していることに注意してください (ただし、正直言ってあまり多くはありません)。メインの SL4A プロジェクト自体はほとんど死んでいます。

便利なリンク

于 2012-03-19T15:45:27.680 に答える
55

キビー

@JohnMudd が Kivy について書いたことに追加したいと思いました。彼が説明した状況から数年が経ち、Kivy は大幅に進化しました。

私の意見では、Kivy の最大のセールス ポイントは、クロスプラットフォームの互換性です。任意のデスクトップ環境 (Windows/*nix など) を使用してすべてをコーディングしてテストし、Android、iOS、MacOS、Windows などのさまざまなプラットフォーム用にアプリをパッケージ化できます (ただし、アプリにはネイティブのルック アンド フィールがないことがよくあります)。

Kivy 独自のKV言語を使用すると、GUI インターフェイスを簡単にコーディングして構築できます (Java XML と同じですが、TextView などではなく、KV にはui.widgets同様の翻訳用の独自の言語があります)。

現在、 Buildozerpython-for-androidは、アプリをビルドしてパッケージ化するための最も推奨されるツールです。私は両方を試してみましたが、Python で Android アプリを簡単に作成できると断言できます。彼らのガイドも十分に文書化されています。

iOS は、Kivy のもう 1 つの大きなセールス ポイントです。デバイスで実行する前にビルドに Xcode が必要ですが、 kivy-ios Homebrew ツールを介して必要な変更をほとんど加えずに同じコード ベースを使用できます (現在、Xcode の iOS シミュレーターは x86 アーキテクチャ ビルドでは機能しません)。 . ビルドを成功させるには、Xcode で手動でコンパイルしていじる必要があるいくつかの依存関係の問題もありますが、解決するのはそれほど難しくなく、Kivy Google グループの人々も非常に役に立ちます。

以上のことから、Python の知識が豊富なユーザーであれば、基本をすぐに習得できます。

より深刻なプロジェクトに Kivy を使用している場合、既存のモジュールが不十分であることに気付くかもしれません。ただし、実行可能な解決策がいくつかあります。(開発中の) Android 用の pyjnius とpyobjus使用すると、ユーザーは Java/Objective-C クラスにアクセスしてネイティブ API の一部を制御できるようになりました。

于 2015-01-13T02:08:57.633 に答える
42

現時点ではありませんが、Jython がすぐに機能するようになるのは幸運なことです。今すぐ開発を開始する予定がある場合は、今のところ Java に固執する方がよいでしょう。

于 2008-09-19T13:26:53.043 に答える
42

SL4A(他の回答ですでに言及されています)を使用すると、本格的なweb2pyインスタンスを実行できます(他のpython Webフレームワークも候補になる可能性があります)。SL4A では、ネイティブ UI コンポーネント (ボタン、スクロール バーなど) を使用できませんが、 WebViews はサポートされています。WebView は基本的に、固定アドレスを指し示すストライプ化された Web ブラウザーにすぎません。ネイティブの Gmail アプリは、通常のウィジェット ルートではなく、WebView を使用していると思います。

このルートには、いくつかの興味深い機能があります。

  • ほとんどの Python Web フレームワークの場合、Android デバイスや Android エミュレーターを使用しなくても、実際に開発およびテストを行うことができます。
  • 電話用に作成した Python コードは、(もしあれば) ほとんど変更せずに公開 Web サーバーに配置することもできます。
  • クエリ、HTML5、CSS3 など、クレイジーな Web のすべてを利用できます。
于 2012-01-06T14:34:25.123 に答える
39

QPython

QPython アプリを使用します。これは無料で、コード エディター、対話型インタープリター、およびパッケージ マネージャーが含まれており、デバイス上で直接 Python プログラムを作成および実行できます。

于 2013-06-12T19:46:35.943 に答える
30

Python for Androidサイトから:

Python for android は、必要なモジュールを含む独自の Python ディストリビューションを作成し、python、libs、およびアプリケーションを含む apk を作成するプロジェクトです。

于 2012-01-09T04:46:53.783 に答える
22

さらに別の試み: https://code.google.com/p/android-python27/

これは、アプリ apk に Python インタープリターを直接埋め込みます。

于 2012-05-09T15:44:49.157 に答える
18

sl4aを使用して Python コードを実行できます。sl4a は、Python、PerlJRubyLua、BeanShell、JavaScript、Tcl、およびシェル スクリプトをサポートしています。

sl4a Python Examplesを学ぶことができます。

于 2013-03-11T09:36:58.517 に答える
14

3.4.2 以降 (この記事の執筆時点では 3.9.6) を探している場合の別のオプションは、GitHub のこのアーカイブです。

Python3-Android 3.4.2またはPython3-Android 3.9.6

元のアーカイブは Python 3.4.2、最新の GRRedwings ブランチ サポート 3.9.6、および NDK の 22b バージョンをサポートしていると思います。古いブランチは他のバージョンをサポートしますが、docker でコンパイルするのは簡単ではありません。

古いバージョンでは、アーカイブのクローンを作成し、make を実行するだけで、.so または .a を取得できます

新しいバージョンは ReadMe に従いますが、一貫したビルドのために docker を使用します。

現在、これを使用して、Android デバイスで生の Python を実行しています。ビルド ファイルにいくつかの変更を加えることで、x86 および armeabi 64 ビットも作成できます。

于 2015-02-25T13:04:47.927 に答える
12

これがここに投稿されているのを見ませんでしたが、Necessitas のおかげで Qt が Android で動作するようになったため、Pyside と Qt でそれを行うことができます。

現時点では非常に厄介なように思えますが、最終的には実行可能なルートになる可能性があります...

http://qt-project.org/wiki/PySide_for_Android_guide

于 2014-10-06T14:59:14.867 に答える