AndroidでPythonを実行する方法はありますか?


2093

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

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

回答:


1061

1つの方法は、Kivyを使用することです。

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

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

Kivy Showcaseアプリ


63
Kivyを使用している場合は、プロジェクトをAPKにパッケージ化するのに役立つツールです:github.com/kivy/python-for-android
gdw2

17
私はこの1週間、ゲームを書こうと、Kivyで遊んでいます。彼らの主な開発者はIRCに関する質問に非常に迅速に答えましたが、KivyがWTFをかなり言う前にGUIをプログラミングした場合は、ドキュメントに記載されていない奇妙な例:すべてのウィジェットは、イベントがそのリージョン外で発生した場合でも、すべてのon_touch_downイベントを取得します。ウィジェットにはdraw()メソッドがありません。ほとんどすべてが、作成したカスタムプロパティのカスタムオブザーバーパターンを介して行われます(これらはPythonのプロパティと名前を共有していますが、同じではないことに注意してください)
Trey Stout

7
@トレイ:非GUI関連のものについてはどうですか?Pythonのモジュールの使用に関する制限はありますか?メッセージの読み取り、通知の追加、バックグラウンドでの作業、写真の作成、連絡先リストの読み取り、GPS位置の特定など、Android固有の機能へのアクセスについてはどうですか?
Tadeck 2012年

7
そして今、iOSのサポートもあります!
ルービック2012年

16
今、ほぼ一年後、サポートはもっと良いですか?ここで注目すべき改善はありますか?
TankorSmash

347

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

注:「開発中」ではなくなりましたが、いくつかの分岐が存在する可能性があります。


70
確かに、しかし彼らはASEをインストールする必要があります、それは何もインストールされていない状態でpythonでAndroidアプリを書くことを可能にするソリューションではありません(通常のユーザーはすべて「wtfはこのASEのものですか?」
Stuart Axon

20
さらに、ASEは制限された環境です。ASEがプリインストールされていても、本格的なAndroidアプリを作成することはできません。stackoverflow.com/questions/2076381を
Sridhar Ratnakumar

10
SL4Aに改名されたと思います。
Vanuan

9
SL4Aを使えば、アプリを作成してパッケージ化し、必要に応じてPlayストアで販売することもできます。上記のコメントが投稿されて以来、順調に進んでいます。AndroidでPythonが必要な場合は、SL4Aで実行されるPY4Aがおそらく最良の選択です。
カールスミス

2
私は確認しました、SL4Aはすぐに使用できるアプリケーションのパッケージを書くことを許可します。私はそれが機能するperlで試しました
ubugnu

216

はい!: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)

46
s /はい/まあ。多分/ ...それは非常に限られています。グラフィカルまたはマルチタッチの何か?大きなNO。
gcb 2010年

2
@gcb通常のAndroidウィジェットセットを使用することはできませんが、「webviews」を使用できます(これは、たとえばネイティブGmailアプリケーションが使用するものです)。
gdw2 2012年

28
ゴルフ: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

12
@ gdw2、確かにネイティブGmailアプリはWebViewsのみを使用してメールを解析しますが、実際のUIでは使用しません。そのため、比較は少しばかげています。
VeselinRomić14年

88

Android向けPygameサブセット

PygameはPython(デスクトップ上)用の2Dゲームエンジンで、新しいプログラマーに人気があります。AndroidPygameサブセットはそれ自体を...

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

サンプルには、APKとしてパッケージ化された完全なゲームが含まれていますが、これはかなり興味深いものです。


4
Droid Xではいくつかの側面(ボタン、またはタッチスクリーン、覚えられない)が壊れていたので、この方法をあまり使いませんでした。
gdw2

78

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

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

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


4
印象的です。+1。これでは一般向けに何も書くことができないため、受け入れられません。
e-satis、2011年

1
もちろん、それでグラフィックアプリを実行できないということであれば、もちろんできることは間違いなく、さらに多くの作業が必要です。私は実際にこのポートをSDL 1.3と組み合わせて使用​​しています。Pythonインタープリターからインタラクティブアプリに移行するのは簡単ではありませんが、それは可能です。
gabomdq 2010年

77

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

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

さまざまな言語をサポートしています。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からWebViewを使用する場合、WebViewとそれを生成したPythonプロセスの間でメッセージをやり取りできます。UIはネイティブではありませんが、それでも優れたオプションです。
  • ネイティブのAndroidユーザーインターフェイスのサポートはいくつかありますが、どれだけうまく機能するかはわかりません。私はそれを使用したことがありません。

オプションを混在させることができるので、メインインターフェースにWebビューを使用でき、ネイティブダイアログを引き続き使用できます。

QPython

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

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

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

役立つリンク

  • SL4Aプロジェクト(現在はGitHubにあります):https : //github.com/damonkohler/sl4a
  • SL4A Python 3ポート:https ://code.google.com/p/python-for-android/wiki/Python3
  • QPythonプロジェクト:http://qpython.com
  • SL4A(Tutorialspoint)を学ぶ:https ://www.tutorialspoint.com/sl4a/index.htm

1
それらのいずれかを使用して、ターミナルまたはタスカーからPythonスクリプトを実行できますか?私は方法を見つけることができません:(
Pitto

1
SL4AスクリプトはTaskerから起動できます。このページには、PythonのスニペットがTaskerから起動されている例がいくつかあります。しかし、それはまったく別の問題です。
カールスミス

77

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

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

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


48
Androidフォンには単一のJavaワードはありません。パッケージ化プロセス中にバイトコードにコンパイルされます。速度は問題ではありません。Googleは、Pythonコード(Jythonなど)から適切なバイトコードを生成するツールを提供できます。ところで、DalvikはJava VMではないため、これはJava VS Pythonに関するものではありません。
e-satis

6
JAVAバイトコードは引き続きJVMで処理する必要があり、Java言語ではとにかくガベージコレクタが必要です。実際の速度はC ++からのみ取得できます。
LtWorf 2014

19
@Touzen 2年後、現在Intel Atomプロセッサまたはオクタコアプロセッサを実行しています。;)
Rohan Kandwal 2015

2
消費できる電力の違いにより、電話は常にデスクトップよりも桁違いに遅くなります。ただし、モバイルデバイス用のPythonをあきらめないでください。通常、コードのほんの一部のみがプロセッサ集中型の作業の原因であり、この一部は別の言語で書き直すことによって最適化できます。
Evgeni Sergeev

2
ちなみに、最近GoogleはKotlinをプッシュしています。これはほとんどのユーザーにとってはかなり未知の言語ですが、Java以外の言語(私はJava開発者でPythonのファンです)をサポートできることは明らかです。ですから、答えは実際的なものというよりむしろ政治的なものだと思います。
Alex

49

キビー

@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-architectureビルドでは機能しません)。 。ビルドを成功させるには、手動でコンパイルしてXcodeでいじる必要のある依存関係の問題もいくつかありますが、それらを解決するのはそれほど難しくなく、Kivy Googleグループの人々も本当に役に立ちます。

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

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


そのサイトからKivyをダウンロードしました。Python 3.4 32および64ビットのサポートと、タッチ入力動作のデモを示します。
codeReview、2015

1
@ codeReview、Python2でのみKivyを使用していて、Python3での経験はありません。すべてがスムーズに実行されていますか?
Anzel、2015

うまくいけばすぐにお知らせします。しかし、計算やアルゴリズムの問​​題をすばやく解決するためのCPython 3.4コマンドシェル.pyファイル以外のPythonの経験はありません。これはGUIを備えた私の最初のアプリになります。さらにドキュメントを読み、Kivy言語を理解し、インストール手順を注意深く実行する必要があるので、選択したPython IDEに Kiviをインストールし、APKをパッケージしてAndroidにプッシュする方法を知っています。これは多段階のプロセスなので、私が言えるのは信じられないほど早くないかもしれません。
codeReview

1
@codeReview、あなたの旅に頑張ってください。これが初めてのアプリの場合、.kvをレイアウトファイルとして使用することを強くお勧めします。これは、レイアウトウィジェットを定義するためのyamlまたは単にツリーファイルのようなものです。アプリがマルチスクリーン/レイアウトの場合ScreenManager、これを使用すると時間を大幅に節約できます。また、アドバイスの1つは、彼らのメーリングリストを読むことです。
Anzel、2015

1
@codeReviewはまた、Kivyのデモアプリから学ぶ代わりに、既存のKivyアプリを検索するより多くの洞察を得て、人々が実際のシナリオで「ウィジェット」とコールバックをどのように管理するかを確認できます。Kivyはまったく学ぶのが難しくありません。Java+ AndroidまたはObjective-C + iOSで言うよりも、学習曲線の点ではるかに簡単です
Anzel

40

テルマックス

Android用のPOSIX環境を提供するTermuxアプリを使用して、Pythonをインストールできます。

apt install pythonTermuxにPython3をインストールすることに注意してください。Python2の場合、を使用する必要がありますapt install python2


5
Termuxの場合は+1。作業に絶対に素晴らしい環境。リポジトリでの素晴らしいパッケージ選択、便利なボリュームボタンショートカット。これは、私が見つけた電話でDebianに最も近いものです。
ジェームズ

39

現時点ではありません。Jythonをすぐに動作させることができれば幸いです。今すぐ開発を開始することを計画している場合は、とりあえずJavaを使用するほうがよいでしょう。


39

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

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

  • ほとんどのpythonウェブフレームワークの場合、実際にAndroidデバイスやAndroidエミュレーターを使用せずに開発およびテストできます。
  • 最終的に電話用に作成するPythonコードが何であれ、ごくわずかな変更(ある場合)でパブリックWebサーバーに配置することもできます。
  • クエリ、HTML5、CSS3など、クレイジーなWebのすべてを利用できます。

2
Cherrypyはws4py websocketをサポートしており、うまく機能します。ボトルもSL4Aで結構です。
カールスミス

33

QPython

QPythonアプリを使用しています。これは無料で、コードエディター、インタラクティブインタープリター、パッケージマネージャーが含まれているため、デバイス上で直接Pythonプログラムを作成して実行できます。


2
qpythonにDjangoサポートが追加されました!それだけで十分です!すごい!
swdev 2013年

27

アンドロイドのためのPythonのサイト:

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


1
@ e-satis:コメントありがとうございます。重複している回答がわかりません。PFAはKivyと同じだと思います。Kivyプロジェクトでホストされていますが、PFAを使用するためにKivyを使用する必要はありません。
gdw2 2012年

@titoの削除された回答を下部のPFAで確認します。さらに、入手した唯一のツールキットであるため、kivyなしでPFAを実行することにほとんど関心がありません。
e-satis 2012年

これは、複製であるよりも、現在利用できるツールキットがkivyだけである(一部の人が他の人との統合に取り組んでいる)ためではありません。他のオプションはそのまま考慮してください。すべてを1つの投稿にマージしないでください。
tito 2012年

21

チャコピー

Chaquopyは、Android StudioのGradleベースのビルドシステム用のプラグインです。標準のAndroid開発ツールとの緊密な統合に焦点を当てています。

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

  • PyPIパッケージを自動的にダウンロードして、NumPyなどの選択したネイティブパッケージを含むアプリにビルドできます。

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

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

(私はこの製品の作成者です。)



20

ここにいくつかのツールが公式のPythonウェブサイトにリストされています


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

Playstoreリンク


コマンドを使用してpythonをインストールできるTermuxと呼ばれる別のアプリ

pkg install python

Playstore Link


アプリを開発したい場合は、Python Android Scripting Layer(SL4A)があります。

The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.


PySide for Androidを確認することもできます。これは実際にはQt 4のPythonバインディングです。


アプリを純粋にPythonで記述できるPyMobと呼ばれるプラットフォームがあり、コンパイラーツールフロー(PyMob)はそれらをさまざまなプラットフォームのネイティブソースコードに変換します。


python-for-androidも確認してください

python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.


試す Android用 Chaquopy A Python SDKを


Anddd ... BeeWare

BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.


2
Termuxを使用すると、python 2もインストールできます$ apt install python2
M.Hefny


13

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


12

3.4.2または3.5.1を探している場合の別のオプションは、GitHubのこのアーカイブです。

Python3-Android 3.4.2またはPython3-Android 3.5.1

現在、Python 3.4.2または3.5.1とNDKの10dバージョンをサポートしています。3.3と9c、11cと12もサ​​ポートします

ダウンロードしてmakeを実行するだけで.soまたは.aを取得できるので便利です。

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


11

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

現時点ではかなりのクラッジのようですが、最終的には実行可能なルートになる可能性があります...

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


9

もう1つのオプションは、ドキュメントを引用するpyqtdeployのようです:

Qtで提供される他のツールと組み合わせて、Python v2.7またはPython v3.3以降で記述されたPyQt4およびPyQt5アプリケーションのデプロイを可能にするツール。デスクトッププラットフォーム(Linux、WindowsおよびOS X)およびモバイルプラットフォーム(iOSおよびAndroid)への展開をサポートします。

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


6

見てくださいBeeWareを。この質問に答える現時点では、まだ開発の初期段階です。Androidを含む、サポートされているすべてのオペレーティングシステム用のPythonを使用してネイティブアプリを作成できるようにすることを目的としています。


toi Kivyはどう違いますか?安定したポータブルPythonのGUIベース
Carsten Thielepape

5

react-nativeの概念を採用してpythonに適用するenaml-nativeを確認してください。

これにより、ユーザーはネイティブAndroidウィジェットを使用してアプリを構築でき、PythonからAndroidおよびJavaライブラリーを使用するためのAPIを提供します。

また、android-studioと統合し、コードの再読み込みやリモートデバッグなどのいくつかのreactの素晴らしい開発機能を共有しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.