web-dev-qa-db-ja.com

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

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

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

2097
e-satis

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

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

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

Kivy Showcaseアプリ

959
JohnMudd

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

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

331
Heat Miser

はい! : Androidスクリプティング環境

によるMatt Cutts による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)
203
unmounted

SL4A もGoogleの従業員によって大きく書かれています。

84
Rab Ross

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

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

83
muriloq

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

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

73
gabomdq

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

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

QPython

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

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

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

便利なリンク

71
Carl Smith

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

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

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

64
lacker

キビー


私はこれを@ JohnMuddがすでに答えている(の拡張として投稿したいが、英語はそうではないので我慢してください」第一言語

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

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

現在、 Buildozer および python-for-Android は、アプリをビルド/パッケージ化するための最も推奨されるツールです。両方とも試してみましたが、AndroidアプリをPythonで簡単に構築できると断言できます。コンソール/端末/コマンドプロンプトに慣れているユーザーは問題なく使用でき、ガイドも十分に文書化されています。

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

言うまでもなく、Pythonに精通しているユーザーは、いくつかの簡単なアプリを構築するために、数日(数日ではないにしても)に基本を習得しても問題ありません。

また、言及する価値があるのは、Pythonモジュールをビルドにバンドル(ビルドレシピ)できるため、ユーザーが多くの既存のライブラリを実際に利用できるPythonが RequestsPIL など Kivyの拡張サポート .

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

最後になりましたが、より深刻な/商業的なプロジェクトにKivyを使用する場合、既存のモジュールでは満足できない可能性があります。ただし、Androidの場合は pyjnius 、および pyobjus の「進行中の作業」を使用した実行可能なソリューションがいくつかあります。ユーザーはこれらのモジュールを介してJava/Objective-Cクラスにアクセスして、ネイティブAPIの一部を制御できるようになりました。

Kivyでの私の経験は、ベテランのPythonプログラマーや、迅速な開発または単純なコードベースのメンテナンスを必要とする真剣なプログラマーに最適です。実際にはnative感覚ではありませんが、複数のプラットフォームでうまく動作します。

一部のPythonアプリプログラマーがこの情報を有用であると感じ、Kivyを調べ始めることを願っています。コミュニティから大きな関心がある場合にのみ、より良くなることができます(サポートが増え、ライブラリ/モジュールが移植されるにつれて)。

PS Kivyとは何の関係もありません。モバイル/クロスプラットフォーム開発にPythonコーディングの楽しさをもたらすというアイデアが本当に好きなプログラマーです。

41
Anzel

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

37
Ilya Kochetov

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

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

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

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

26
kyle k

Android用 Python サイトから:

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

23
gdw2

あなたは Termux アプリケーションを使うことができます。

Apt install pythonはpython 3をインストールします。python 2の場合は、apt install python 2と呼んでください。

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

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

23

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

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

18
e-satis

チャコピー

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

  • それは JavaからPython または PythonからJava を呼び出すための完全なAPIを提供します。

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

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

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

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

14
mhsmith

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

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

14
Hitul

おそらくmosyncを実行しているpython-on-a-chipもあります。 google group

14
fooba

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

プレイストアリンク

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

pkg install python

プレイストアリンク

アプリを開発したい場合は、 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.

13
pz64_

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
ode2k

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

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

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

10
radix07

あなたが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を実行するためにこれを使用しています。ビルドファイルに2、3の修正を加えることで、x86とarmeabiを64ビットにすることもできます。

10
GR Envoy

もう1つの選択肢は pyqtdeploy であると思われます。

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

によると PyqtdeployとQt5を介したAndroidへのPyQt5アプリケーションのデプロイ によると、それは活発に開発されています必要なすべてのライブラリをAndroidにクロスコンパイルします。ただし、覚えておくと面白いプロジェクトです。

8

enaml-native を調べてください。これは、反応ネイティブという概念を取り、それをpythonに適用します。

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

また、Android-studioと統合し、コードのリロードやリモートデバッグなど、反応的なNice devの機能をいくつか共有します。

4
frmdstryr

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

3
DrawT