回答:
1つの方法は、Kivyを使用することです。
マルチタッチアプリなどの革新的なユーザーインターフェイスを利用するアプリケーションを迅速に開発するためのオープンソースのPythonライブラリ。
KivyはLinux、Windows、OS X、Android、iOSで動作します。サポートされているすべてのプラットフォームで同じ[python]コードを実行できます。
新しいAndroid Scripting Environment(ASE / SL4A)プロジェクトもあります。見栄えが素晴らしく、ネイティブのAndroidコンポーネントとの統合がいくつかあります。
注:「開発中」ではなくなりましたが、いくつかの分岐が存在する可能性があります。
はい!: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)
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']))
PygameはPython(デスクトップ上)用の2Dゲームエンジンで、新しいプログラマーに人気があります。AndroidのPygameサブセットはそれ自体を...
... Pygame機能のサブセットのAndroidプラットフォームへの移植。プロジェクトの目標は、Android固有のゲームの作成を可能にし、PCのようなプラットフォームからAndroidへのゲームの移植を容易にすることです。
サンプルには、APKとしてパッケージ化された完全なゲームが含まれていますが、これはかなり興味深いものです。
私のブログには、Android用のPython 2.7.2をクロスコンパイルするための手順とパッチがあります。
また、2DゲームエンジンであるIgnifugaをオープンソースで使用しています。Python / SDLベースで、Android向けにクロスコンパイルされます。ゲームで使用しない場合でも、コードまたはビルダーユーティリティ(TimにちなんでSchaferという名前)から役立つアイデアが得られる可能性があります。
SL4Aはあなたがやりたいことをします。彼らのサイトから直接あなたのデバイスに簡単にインストールでき、ルートは必要ありません。
さまざまな言語をサポートしています。Pythonは最も成熟しています。デフォルトではPython 2.6 を使用しますが、代わりに使用できる3.2ポートがあります。私はそのポートをGalaxy S2のあらゆる種類のものに使用してきましたが、問題なく動作しました。
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つのオプションがあります。
オプションを混在させることができるので、メインインターフェースにWebビューを使用でき、ネイティブダイアログを引き続き使用できます。
QPythonという名前のサードパーティプロジェクトがあります。それはSL4Aに基づいて構築されており、他のいくつかの便利なものを投入しています。
QPythonは、インストールを管理するためのより優れたUIを提供し、小さなタッチスクリーンコードエディター、Pythonシェル、およびパッケージ管理用のPIPシェルが含まれています。彼らはまた、Python 3ポートを持っています。どちらのバージョンも、Playストアから無料で入手できます。QPythonはまた、Kivyを含むAndroidプロジェクト上の一連のPythonからのライブラリーをバンドルしているため、SL4Aだけではありません。
QPythonはSL4Aのフォークをまだ開発していることに注意してください(ただし、正直なところはそれほど多くありません)。SL4Aのメインプロジェクト自体はかなり死んでいます。
Pythonの恋人とAndroidプログラマ、私はこれは行くには良い方法ではありませんと言って悲しいです。2つの問題があります。
1つの問題は、Android開発ツールには単なるプログラミング言語以外にも多くの機能があることです。多くのAndroidグラフィックには、HTMLと同様に、表示を構成するためのXMLファイルが含まれています。組み込みのJavaオブジェクトはこのXMLレイアウトに統合されており、ロジックからビットマップに移行するコードを記述するよりもはるかに簡単です。
もう1つの問題は、G1(およびおそらく近い将来の他のAndroidデバイス)がそれほど速くないことです。200 MHzプロセッサとRAMは非常に制限されています。Javaでも、アプリを完全にスムーズにしたい場合は、オブジェクト作成を回避するために適切な量の書き換えを行う必要があります。まだモバイルデバイス上では、Pythonがしばらくの間遅くなるでしょう。
@JohnMuddがKivyについて書いたものに追加したかったのです。彼が述べた状況から数年が経ち、Kivyは大幅に進化しました。
私の意見では、Kivyの最大のセールスポイントは、クロスプラットフォームの互換性です。デスクトップ環境(Windows / * nixなど)を使用してすべてをコーディングおよびテストしてから、Android、iOS、MacOS、Windowsなど、さまざまなプラットフォーム用にアプリをパッケージ化できます(ただし、アプリには通常、ネイティブのルックアンドフィールがありません)。
Kivyの独自のKV言語を使用すると、GUIインターフェースを簡単にコーディングおよび構築できます(これはJava XMLと同じですが、TextViewなどではなく、KVはui.widgets
同様の翻訳用に独自のものを持っています)。
現在、Buildozerとpython-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の一部を制御できるようになります。
ScreenManager
、これを使用すると時間を大幅に節約できます。また、アドバイスの1つは、彼らのメーリングリストを読むことです。
Android用のPOSIX環境を提供するTermuxアプリを使用して、Pythonをインストールできます。
apt install python
TermuxにPython3をインストールすることに注意してください。Python2の場合、を使用する必要がありますapt install python2
。
SL4A(他の回答ですでに言及されている)を使用すると、本格的なweb2pyインスタンスを実行できます(他のpython Webフレームワークも候補になる可能性があります)。SL4Aは、ネイティブUIコンポーネント(ボタン、スクロールバー、など)を行うことはできませんが、それはサポートしWebViewsを。WebViewは基本的に、固定アドレスを指すストライプダウンされたWebブラウザーにすぎません。ネイティブのGmailアプリでは、通常のウィジェットのルートに行く代わりにWebViewを使用していると思います。
このルートにはいくつかの興味深い機能があります。
QPythonアプリを使用しています。これは無料で、コードエディター、インタラクティブインタープリター、パッケージマネージャーが含まれているため、デバイス上で直接Pythonプログラムを作成して実行できます。
Python for androidは、必要なモジュールを含む独自のPythonディストリビューションを作成し、python、libs、およびアプリケーションを含むapkを作成するプロジェクトです。
Chaquopyは、Android StudioのGradleベースのビルドシステム用のプラグインです。標準のAndroid開発ツールとの緊密な統合に焦点を当てています。
これは、PythonからJavaまたはJavaからPythonを呼び出す完全なAPIを提供し、開発者はアプリの各コンポーネントに最適な言語を使用できます。
PyPIパッケージを自動的にダウンロードして、NumPyなどの選択したネイティブパッケージを含むアプリにビルドできます。
ネイティブユーザーインターフェースツールキット(pure-Pythonアクティビティの例)を含む、PythonからすべてのAndroid APIへのフルアクセスを可能にします。
これは商用製品ですが、オープンソースでの使用は無料で、常にそのままです。
(私はこの製品の作成者です。)
さらに別の試み:https : //code.google.com/p/android-python27/
これは、アプリのAPKにPythonインタープリターを直接埋め込みます。
ここにいくつかのツールが公式のPythonウェブサイトにリストされています
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.
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.
QPythonを使用できます。
Pythonコンソール、エディター、およびパッケージ管理/インストーラーがあります。
これは、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
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ビットにすることもできます
この投稿はここには表示されませんでしたが、NecessitasのおかげでQtがAndroidで動作するようになったので、PysideとQtでそれを行うことができます。
現時点ではかなりのクラッジのようですが、最終的には実行可能なルートになる可能性があります...
もう1つのオプションは、ドキュメントを引用するpyqtdeployのようです:
Qtで提供される他のツールと組み合わせて、Python v2.7またはPython v3.3以降で記述されたPyQt4およびPyQt5アプリケーションのデプロイを可能にするツール。デスクトッププラットフォーム(Linux、WindowsおよびOS X)およびモバイルプラットフォーム(iOSおよびAndroid)への展開をサポートします。
pyqtdeployとQt5を介したPyQt5アプリケーションのAndroidへのデプロイによると、それは活発に開発されていますが、動作するAndroidアプリの例や、必要なすべてのライブラリをAndroidにクロスコンパイルする方法に関するチュートリアルを見つけるのは困難です。覚えておいても面白いプロジェクトです!
見てくださいBeeWareを。この質問に答える現時点では、まだ開発の初期段階です。Androidを含む、サポートされているすべてのオペレーティングシステム用のPythonを使用してネイティブアプリを作成できるようにすることを目的としています。
react-nativeの概念を採用してpythonに適用するenaml-nativeを確認してください。
これにより、ユーザーはネイティブAndroidウィジェットを使用してアプリを構築でき、PythonからAndroidおよびJavaライブラリーを使用するためのAPIを提供します。
また、android-studioと統合し、コードの再読み込みやリモートデバッグなどのいくつかのreactの素晴らしい開発機能を共有しています。