2012

私たちは取り組んでいますS60バージョンとこのプラットフォームは素晴らしいPython APIを持っています..

しかし、Android上のPythonについては公式なものは何もありませんが、Jython存在する、ヘビとロボットを一緒に動作させる方法はありますか?


  • Googleでランキングの高いSO投稿の更新の可能性についてJoelの理論を試してみましょう。下記またはこれを参照してください。google-opensource.blogspot.com/2009/06/… - unmounted
  • 私は反対を意味します。この記事の内容が少ないことを考えると、それがランク付けされているのであれば、それは大きな期待であるに違いありません。私はこのプロジェクトに最適であることを強く望みます。私は自分自身がJavaの人よりもpythonistaであること、そしてこの言語でAndroidをコーディングすることがプロトタイピング段階を急ぐことになるでしょう。 - e-satis
  • ああ、そうですね…質問を更新することは有用だとは思いませんが、受け入れられた回答者を変更することは確かにそうです。 - e-satis
  • @ e-あなたは正しいです。私はpythonとその技術に不慣れで、ImはC / C ++言語をコンパイルするのに慣れていました。しかしそれでも、仮想マシン内の仮想マシンがこれまでで最速のものになるわけではなく、おそらくコードを実行する最も遅い方法と競合する可能性があります。確かにその有用性があります。 PythonでもAndroidでも嫌いではありませんが... - user457015
  • @ user457015最新のJVMがどのように実装されているかについては、実際にお読みになる必要があると思います。どこにも「スクリプト作成」または「解釈」今までに。どちらかといえば、Javaは今よりもわずか10〜25%遅いだけです。よく/完璧に書かれてC / C ++コードそして、Javaで書くのをやめる場所が少ない... - TC1

25 답변


881

一つの方法は使うことです意気消沈した

アプリケーションを迅速に開発するためのオープンソースのPythonライブラリ   マルチタッチアプリなどの革新的なユーザーインターフェースを利用すること。

KivyはLinux、Windows、OS X、Android、そしてiOS上で動作します。サポートされているすべてのプラットフォームで同じ[python]コードを実行できます。

意気消沈したショーケースアプリ


  • Kivyを使用している場合は、プロジェクトをAPKにパッケージ化するのに役立つツールがあります。github.com/kivy/python-for-android - gdw2
  • @十分E-ました意気消沈したあなたのためにうまくいく?役に立ちましたか?私の中にあなたがKivyでのあなたの経験を投稿することができたら私は本当にありがたいです質問:) - juliomalegria
  • 私は先週、Kivyと一緒にゲームを作ろうとしていました。彼らの主要な開発者はIRCに関する質問に非常に迅速に答えました、しかし、あなたがKivyがあなたにWTFをかなり言わせる前にGUIをプログラムしたならば。私にとっては奇妙だった文書化されていないことのいくつかの例:イベントは彼らの領域外で発生した場合でもすべてのウィジェットはすべてのon_touch_downイベントを取得します、いいえウィジェットがdraw()メソッドを持っていません。これらはPythonのプロパティと名前を共有していますが、同じではありません) - Trey Stout
  • さて、ほぼ一年後、サポートはもっと良くなるのでしょうか?注目すべき改善点はありますか。 - TankorSmash
  • そしてもう1年、グーグル、彼らがウェブサイトを好むように思われるすべてのpythonで、アンドロイドのpythonに対する愛はありません。 - Dexter

318

新しいものもありますAndroidスクリプト環境(ASE / SL4A)プロジェクト。それは素晴らしく見えます、そしてそれはネイティブのAndroidコンポーネントとある程度統合されています。

注:もはや「アクティブ開発」の下にありませんが、いくつかのフォークはそうかもしれません。


  • 本当ですが、彼らはASEをインストールする必要があります、それはあなたがまだ何もインストールされていない状態でpythonでAndroidアプリを書くことを可能にする解決策ではありません。 - Stuart Axon
  • さらに、ASEは制限された環境です。 ASEがプレインストールされていても、本格的なAndroidアプリを書くことはできません。見るstackoverflow.com/questions/2076381 - Sridhar Ratnakumar
  • SL4Aに改名されたと思います。 - Vanuan
  • SL4Aを使えば、アプリを書いたり、パッケージ化したり、Playストアで販売したりすることもできます。上記のコメントが投稿されて以来、うまくいっています。 Android上でPythonを使用する場合は、SL4A上で動作するPY4Aがおそらく最善の選択です。 - Carl Smith
  • 私は、SL4Aが今すぐ使用できるアプリケーションのパッケージを書くことを許可することを確認し、私はそれが動作するperlで試しました - ubugnu

191

はい!

マットカッツSL4A経由 - 「これが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)


  • s / YES /ああ。多分/ ...それは非常に限られています。何かグラフィックかマルチタッチ?大きなNO。 - gcb
  • @gcb通常のAndroidウィジェットセットは使用できませんが、"ウェブビュー"を使用することはできます。 (これは、たとえばネイティブのGmailアプリケーションで使用されているものです)。 - gdw2
  • ゴルフ:import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT'])) - Alex L
  • @ gdw2、確かにネイティブGmailアプリは実際のUIではなく、WebViewを使って電子メールを解析します。それは比較を少し不合理にする。 - Veselin Romić

80

またありますSL4AGoogleの従業員によって大きく書かれています。


79

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

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


  • 私のDroid Xではいくつかの面が壊れていた(ボタン、またはタッチスクリーン、覚えていない)ので、私はこの道のりをあまりよく理解できなかった。 - gdw2

69

私はAndroid用のPython 2.7.2をクロスコンパイルするための手順とパッチを投稿しました。あなたはそれをここの私のブログで手に入れることができます:http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

編集:私はオープンソース防火私の2DゲームエンジンはPython / SDLベースで、Android用のクロスコンパイルです。ゲームに使用しなくても、コードとBuilderユーティリティ(Schaferという名前で、Timにちなんで...だれが知っているか)から便利なアイデアを得ることができます。


  • 印象的です。これに対して+1。これを使って一般向けに何かを書くことはできないため、受け入れられません。 - e-satis
  • あなたがそれでグラフィックアプリをすることができないことを意味するならば、あなたは最も確実にそうすることができます、もちろん、もっと多くの仕事が必要です。私は実際にこのポートをSDL 1.3と組み合わせて使用しています。Pythonインタプリタから対話型アプリケーションに移行するのは簡単なことではありませんが、可能です。 - gabomdq

69

Android用スクリプトレイヤ

SL4Aあなたが欲しいものをします。あなたは彼らのサイトからあなたのデバイスに直接それを簡単にインストールすることができ、そしてrootを必要としません。

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

API

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

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ビューを開いてからHTML 5を使用することもできます。 ユーザーインターフェイス用。あなたがPythonからウェブビューを使うとき、あなたは渡すことができます WebビューとPythonプロセスの間でやり取りされるメッセージ それを生み出した。 UIはネイティブにはなりませんが、それでもなお良い選択肢です。 持ってる。
  • がある一部ネイティブのAndroidユーザーインターフェースをサポートしますが、私はそうではありません それがどれほどうまく機能するかを確かめる。私は今まで使ったことがない。

あなたはオプションを混在させることができるので、あなたはメインインターフェースのためにウェブビューを持つことができます、そしてそれでもネイティブの対話を使うことができます。

QPython

という名前のサードパーティプロジェクトがありますQPython。それはSL4A上に構築され、そして他のいくつかの有用なものを投入します。

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

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

便利なリンク


  • あなたは端末やタスカーからpythonスクリプトを実行するためにそれらのうちのどれかを使うことができますか?方法を見つけることができません:( - Pitto
  • TaskerからSL4Aスクリプトを起動できます。いくつかの例がありますこのページこれは、Taskerから起動されたPythonの断片です。それは本当に全く別の質問です。 - Carl Smith

61

としてPython恋人とAndroidのプログラマー、私はこれが本当に良い方法ではないと言って悲しいです。 2つ問題があります。

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

もう1つの問題は、G1(そしておそらく近い将来の他のAndroidデバイス)は本当にそれほど速くはないということです。 200 MHzのプロセッサ、およびRAMは非常に限られています。 Javaでさえも、あなたのアプリケーションを完璧に滑らかにしたいのであれば、かなりの量の、より多くのオブジェクトを避けるための書き換えをしなければなりません。 Pythonはまだモバイル機器ではしばらく遅すぎるでしょう。


  • Android携帯には1つのjava単語はありません。パッケージ化プロセス中にバイトコードにコンパイルされます。スピードは問題ではありません。Googleはpythonコードから正しいバイトコードを生成するツールを提供することができます(Jythonのように)。ところで、DalvikはJava VMではないので、これはJava VS Pythonに関するものではありません。 - e-satis
  • やあ。 200 MHz ... 4年後、今電話はクアッドコアプロセッサを持っています... LOL。 - Touzen
  • それでもJAVAバイトコードはJVMによって処理される必要があり、Java言語はとにかくガベージコレクタを必要とします。実際の速度はC ++からしか得られません。 - LtWorf
  • さらにもう2年後、Intel Atomプロセッサまたはオクタコアプロセッサを実行しています。 ;) - Rohan Kandwal
  • 2017と8GBのRAMは現実のものです。 - Pedro Paulo Amorim

35

現時点ではないので、Jythonをすぐに機能させることができて幸運です。今すぐ開発を開始する予定の場合は、当面はJavaにこだわることをお勧めします。


34

SL4A(これは他の回答ですでに言及されています)を使うと走る本格的なweb2pyインスタンス(その他Python Webフレームワークおそらく同様に候補者です)。 SL4Aでは、ネイティブのUIコンポーネント(ボタン、スクロールバーなど)を使用することはできませんが、サポートしています。Webビュー。 WebViewは基本的に、固定アドレスを指定したストライプWebブラウザにすぎません。ネイティブのGmailアプリは、通常のウィジェットルートではなくWebViewを使用すると思います。

この経路はいくつかの興味深い特徴を持つでしょう。

  • ほとんどのPython Webフレームワークの場合、AndroidデバイスやAndroidエミュレータを使用せずに実際に開発してテストすることができます。
  • あなたが電話用に書いてしまったPythonコードがどんなものであっても、(もしあれば)ほとんど変更を加えずに公共のWebサーバーに置くこともできます。
  • クエリ、HTML 5、CSS 3など、あらゆるクレイジーなWebコンテンツを利用できます。


  • Cherrypyはws4py websocketをサポートしているのでうまくいきます。 SL4Aでもボトルは大丈夫です。 - Carl Smith

34

意気消沈した


これを何の拡張として投稿したい@JohnMuddすでに回答しています(英語は私の第一言語ではないので、私と一緒にしてください

それから何年も経ちましたが、Kivyはv1.9-devに進化しました。私の考えでは、Kivyの最大のセールスポイントはそのクロスプラットフォーム互換性です。ローカル環境(Windows / * nixなど)でコードを作成してテストしたり、Android / iOS / Mac / Windowsデバイスで実行するようにアプリをビルド、デバッグ、およびパッケージ化することもできます。

Kivy自身とKV言語、GUIインターフェイスのコーディングと構築は簡単です(これはJava XMLに似ていますが、TextViewなどとは異なり、KVには独自のものがあります)。ui.widgets私の意見では、これは採用が非常に簡単です。

現在Buildozerそしてアンドロイド用のpythonアプリをビルド/パッケージ化するための最も推奨されるツールです。私は両方とも試してみましたが、彼らはPythonを使ったAndroidアプリの構築を非常に簡単にしていると言えます。 console / terminal / commandプロンプトで快適に感じることができるユーザーはそれらを使っても問題ないはずです、そして彼らのガイドもよく文書化されています。

さらに、iOSもKivyのもう1つの大きなセールスポイントです。ただし、iOSデバイスでテストを実行するのに必要な変更はほとんどなく、同じコードベースを使用できます。意気消沈したイオス自作ツール、ただしデバイス上で実行する前にXcodeがビルドに必要です(XcodeのiOS Simulatorは、現在のところx86アーキテクチャービルドでは機能しません)。ビルドを成功させるには、Xcodeで手動でコンパイルして混乱させる必要がある依存関係の問題もいくつかありますが、それらを解決するのはそれほど難しくはありません。意気消沈したGoogleグループ本当に参考になります。

言うまでもありませんが、Pythonの知識が豊富なユーザーは、簡単なアプリケーションを構築するのに数週間(数日ではないにしても)で基本を理解しても問題ないはずです。

また、Pythonモジュールをビルドにバンドル(ビルドレシピ)して、ユーザーが実際にPythonで提供される多数の既存ライブラリを利用できるようにすることもできます。リクエスト&PILなどを通じてKivyの拡張サポート

場合によっては、アプリケーションにはそれ以上の機能が必要です。   Kivyが提供できるものの範囲。そのような場合には、   外部ソフトウェアライブラリに頼る。の豊かさを考える   Pythonエコシステム、すでにたくさんのソフトウェアがあります   インポートしてすぐに使用できるライブラリ

大事なことを言い忘れていましたが、Kivyをもっと深刻な/商業的なプロジェクトに使用するつもりなら、既存のモジュールは満足できないかもしれません。しかし、いくつかの実行可能な解決策があります。PyjoniaiAndroidの場合ピオブジュス。ユーザーはこれらのモジュールを介してJava / Objective-Cのクラスにアクセスし、いくつかのネイティブAPIを制御できます。

私がKivyで経験したことは、熟練したPythonプログラマーや、素早い開発や単純なコードベースの保守を望む真面目なプログラマーに最適だということです。実際にはそうではありませんが、複数のプラットフォームでうまく動作します。ネイティブ感じ。

私は何人かのPythonアプリプログラマーがこの情報が有用であると思って、Kivyを見始めることを望みます。コミュニティから大きな関心が寄せられている場合にのみ良くなります(より多くのサポートがあり、ライブラリやモジュールが移植されるにつれて)。

P.S私はKivyとは何の関係もありません。私は、Pythonコーディングをモバイル/クロスプラットフォーム開発に面白くするという考えが本当に好きなプログラマーです。


  • 私はちょうどそのサイトからKivyをダウンロードしました。 Python 3.4 32および64ビットのサポート、およびタッチ入力機能のデモを示します。 - codeReview
  • @ codeReview、私はKivyをPython 2でのみ使用してきましたが、Python 3では経験がありません。すべてが順調に実行されていますか。 - Anzel
  • 近いうちにあなたに知らせます。しかし、私は計算やアルゴリズムの問題を素早く解決するためのCPython 3.4コマンドシェルの.pyファイル以外のPythonの経験はありません。これが私の最初のGUI付きアプリになるでしょう。 Kivyの言語を理解し、インストール手順を慎重に実行するには、もっとドキュメントを読む必要があるので、Kiviを自分の環境にインストールする方法を知っています。最適なPython IDEAndroidにプッシュするためのAPKのパッケージ化。これは多段階のプロセスなので、すぐには言えないかもしれません。 - codeReview
  • @ codeReview、あなたの旅のために頑張ってください。これがあなたの最初のアプリであるならば、私は強く使うことを勧めます.kvレイアウトファイルとして。レイアウトウィジェットを定義するのは、yamlまたは単なるツリーファイルのようなものです。アプリがマルチスクリーン/レイアウトの場合は、ScreenManagerこれにより時間が節約されます。また、彼らのメーリングリスト、あなたを助けることを望んでいるそこに知識豊富な人々の束を読むことも助言の一部です。 - Anzel
  • また、@ codeReviewでは、Kivyのデモアプリケーションから学ぶのではなく、既存のkivyアプリケーションを検索して人々がどのように"ウィジェット"を管理しているのかを調べることができます。実世界のシナリオでのコールバックKivyはまったく習得が難しいことではありません。学習曲線の観点から言うと、Java + AndroidやObjective-C + iOSの場合よりもはるかに簡単に言えます - Anzel

23

QPythonアプリケーションを使います。エディタ、コンソールがあり、あなたはそれを使ってあなたのPythonプログラムを実行することができます。アプリケーションは無料で、リンクはhttp://qpython.com/


  • qpythonがDjangoのサポートを追加しました。必要なのはこれだけです。すごい! - swdev

21

からAndroid用Pythonサイト:

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


  • @ e-満足:あなたのコメントをありがとう。どちらの回答が重複しているのかわかりません。私はあなたがPFAがKivyと同じであると思うことを推測できるだけです。これはKivyプロジェクトでホストされていますが、PFAを使用するためにKivyを使用する必要はありません。 - gdw2
  • PFAの最下位にある@ titoの削除された回答を確認してください。さらに、PFAが唯一のツールキットなので、KFAYなしでPFAを実行することにはほとんど関心がありません。 - e-satis
  • それは、kivyが現在利用可能な唯一のツールキットである(一部の人々が他の人々を内部統制しようと努力している)からではなく、それは複製ではありません。他のオプションはそのままで、すべてを1つの投稿にまとめないでください。 - tito

19

あなたが使用することができますTermux応用:

apt install pythonはpython 3をインストールすることに注意してください。 python 2では、apt install python2と呼んでください。

ここにいくつかのデモ:https://www.youtube.com/watch?v=fqqsl72mASE

そしてまたgithubページ:https://github.com/termux


  • Termuxでは+1。作業するための絶対に素晴らしい環境。リポジトリ内の素晴らしいパッケージ選択、便利なボリュームボタンショートカット。これは私が今まで見たことのない電話でDebianに一番近いものです。 - James

17

もう一つの試み:https://code.google.com/p/android-python27/

これはあなたのアプリapkに直接Pythonインタプリタを埋め込むものです。


12

あなたのPythonコードを実行することができます:sl4a。 sl4aはPythonをサポートしています、PerlJRuby取ります、BeanShell、JavaScript、Tclシェルスクリプト

sl4aを学ぶことができますPythonの例


12

おそらくmosyncを実行しているpython-on-a-chipもあります。グーグルグループ


12

チャコピー

チャコピーAndroid StudioのGradleベースのビルドシステム用のプラグインです。それは焦点を当てます密接な統合標準のAndroid開発ツールを使って。

  • それは呼び出すための完全なAPIを提供しますPythonからのJavaまたはJavaからのPython開発者がアプリの各コンポーネントに最適な言語を使用できるようにする。

  • 自動的にダウンロードできますPyPIパッケージそしてNumPyのような選択されたネイティブパッケージを含むアプリにそれらを構築します。

  • ネイティブユーザーインターフェースツールキットを含む、PythonからすべてのAndroid APIへのフルアクセスを可能にします。純粋なPythonのアクティビティの例

これは商用製品ですが、オープンソースでの使用は無料であり、常にそのままになります。

(私はこの商品の制作者です。)


10

あなたが使用することができますQPython

Pythonコンソール、エディタ、そしてパッケージ管理/インストーラがあります。

http://qpython.com/

Python 2とPython 3の両方の実装を持つオープンソースプロジェクトです。ソースとAndroidの.apkファイルはgithubから直接ダウンロードできます。

QPython 2:https://github.com/qpython-android/qpython/releases

QPython 3:https://github.com/qpython-android/qpython3/releases


9

playstoreにQPython3というアプリがあり、pythonスクリプトの編集と実行の両方に使用できます。

プレイストアリンク

あなたがコマンドを使用してpythonをインストールすることができるTermuxと呼ばれるもう一つのアプリ

pkg install python

プレイストアリンク


  • Termuxを使ってpython 2をインストールすることもできます$ apt install python2 - M.Hefny

8

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

現時点ではかなりの問題だと思われますが、最終的には実行可能な方法になる可能性があります。

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


8

あなたが3.4.2または3.5.1を探しているならば、もう一つの選択肢はGitHub上のこのアーカイブです。

Python3-Android 3.4.2またはPython3-Android 3.5.1

現在、Python 3.4.2または3.5.1と10dバージョンのNDKをサポートしています。それはまた3.3および9c、11cおよび12を支えることができます

単純にダウンロードしてmakeを実行すれば、.soまたは.aが手に入ります。

私は現在、Androidデバイス上で生のPythonを実行するためにこれを使用しています。ビルドファイルにいくつか修正を加えれば、x86とarmeabi 64ビットを作ることもできます。


6

もう1つの選択肢があるようですpyqtdeployドキュメントを引用しているものは:

Qtと共に提供される他のツールと連携して、有効にするツール   Pythonで書かれたPyQt4およびPyQt5アプリケーションの配置   v2.7またはPython v3.3以降。デスクトップへの搭載にも対応   プラットフォーム(Linux、Windows、OS X)とモバイルプラットフォーム(iOS、   アンドロイド)。

によるpyqtdeployとQt5を介してPyQt5アプリケーションをAndroidにデプロイするそれは活発に開発されていますが、動作するAndroidアプリの例や必要なすべてのライブラリをAndroidにクロスコンパイルする方法に関するチュートリアルを見つけることは困難です。ただし、覚えておくのは面白いプロジェクトです。


3

を見てみましょうビーウェア。この質問に答える現在、それはまだ初期の開発段階にあります。その目的は、Androidを含む、サポートされているすべてのオペレーティングシステム用のPythonでネイティブアプリケーションを作成できるようにすることです。


3

チェックアウトenamlネイティブこれは反応固有の概念を取り、それをpythonに適用します。

それはユーザーがネイティブのAndroidウィジェットでアプリを構築することを可能にし、そしてpythonからのandroidとjavaライブラリを使用するためのAPIを提供します。

それはまたアンドロイドスタジオと統合し、コードのリロードやリモートデバッグのような反応の素晴らしい開発機能のいくつかを共有します。

リンクされた質問


関連する質問

最近の質問