it-swarm-tr.com

Android'de Python'u çalıştırmanın bir yolu var mı?

Bir S60 sürümü üzerinde çalışıyoruz ve bu platformun bir Nice Python API'si var.

Ancak, Android'de Python hakkında resmi bir şey yok, ancak Jython var olduğundan, yılanla robotun birlikte çalışmasına izin verecek bir yol var mı?

2097
e-satis

Bir yolu kullanmak Kivy :

Çoklu dokunma uygulamaları gibi yenilikçi kullanıcı arayüzlerinden faydalanan uygulamaların hızlı bir şekilde geliştirilmesi için açık kaynaklı Python kütüphanesi.

Kivy Linux, Windows, OS X, Android ve iOS ile çalışır. Aynı [python] kodunu desteklenen tüm platformlarda çalıştırabilirsiniz.

Kivy Vitrin uygulaması

948
JohnMudd

Yeni Android Komut Dosyası Ortamı (ASE/SL4A) projesi de var. Harika görünüyor ve yerel Android bileşenleriyle bazı entegrasyonlara sahip.

Not: Artık "aktif geliştirme" altında değil, ancak bazı çatallar olabilir.

328
Heat Miser

Evet! : Android Komut Dosyası Ortamı

Örnek Matt Cutts ile SL4A ile - "İşte altı satır Python kodu ile yazılmış bir barkod tarayıcı:

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)
198
unmounted

Ayrıca SL4A , büyük ölçüde Google çalışanları tarafından yazılmıştır.

83
Rab Ross

" Android için Pygame Alt Kümesi , Android platformunda bir Pygame işlevselliği alt kümesinin limanıdır. Projenin amacı, Android'e özgü oyunların oluşturulmasına izin vermek ve oyunların taşınmasını kolaylaştırmaktır. PC benzeri platformlardan Android'e. "

Örnekler oldukça ilginç olan bir APK'de paketlenmiş eksiksiz bir oyun içerir.

82
muriloq

Android için Python 2.7.2'yi derlemek için talimatlar ve bir düzeltme ekledim, buradan blogumda bulabilirsiniz: http://mdqinc.com/blog/2011/09/cross-compiling-python-for -Android/

EDIT: Ben kaynaklı Ignifuga , 2D Oyun Motorum, Python/SDL tabanlı ve Android için çapraz derleme açtım. Oyunlar için kullanmasanız bile, koddan ve oluşturucu hizmet programından (Schafer adında, Tim'den sonra ... kim olduğunu biliyorsunuz) faydalı fikirler edinebilirsiniz.

72
gabomdq

Android için Komut Dosyası Katmanı

SL4A istediğinizi yapar. Doğrudan cihazınıza sitelerinden kolayca yükleyebilirsiniz ve root kullanmanıza gerek yoktur.

Bir dizi dili destekliyor. Python en olgun olanıdır. Varsayılan olarak, Python 2.6 kullanır, ancak bunun yerine kullanabileceğiniz bir 3.2 port vardır. Galaxy S2'deki her türlü şey için bu bağlantı noktasını kullandım ve iyi çalıştı.

API

SL4A, desteklenen her dil için Android kitaplığının bir bağlantı noktasını sağlar. Kütüphane, tek bir Android nesnesi üzerinden temel Android API'sine bir arayüz sağlar.

from Android import Android

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

Her dilin hemen hemen aynı API'si vardır. JavaScript API'sini web görünümlerinde bile kullanabilirsiniz.

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

Kullanıcı arayüzleri

Kullanıcı arayüzleri için üç seçeneğiniz vardır:

  • API üzerinden genel, yerel diyalogları ve menüleri kolayca kullanabilirsiniz. Onay diyalogları ve diğer temel kullanıcı girişleri için bu iyidir.
  • Ayrıca bir Python betiğinin içinden bir web görünümü açabilir, ardından kullanıcı arayüzü için HTML5 kullanabilirsiniz. Python'dan web görünümleri kullandığınızda, web görünümüyle onu oluşturan Python işlemi arasında mesajları ileri ve geri iletebilirsiniz. Kullanıcı Arayüzü yerel olmayacak, ancak yine de sahip olmak için iyi bir seçenek.
  • Yerel Android kullanıcı arabirimleri için some desteği var, ancak ne kadar iyi çalıştığından emin değilim; Sadece hiç kullanmadım.

Seçenekleri karıştırabilirsiniz, böylece ana arayüz için bir web görünümüne sahip olabilir ve yine de yerel diyaloglar kullanabilirsiniz.

QPython

QPython adlı üçüncü taraf bir proje var. SL4A üzerine kuruludur ve başka bazı faydalı şeylere atar.

QPython, kurulumunuzu yönetmeniz için size daha iyi bir UI sağlar ve paket yönetimi için küçük bir dokunmatik ekran kod editörü, bir Python Kabuğu ve bir PIP Kabuğu içerir. Ayrıca bir Python 3 portu var. Her iki sürüm de ücretsiz olarak Play Store'dan edinilebilir. QPython ayrıca Kivy de dahil olmak üzere Android projelerindeki bir grup Python kütüphanesini de beraberinde getiriyor, bu yüzden sadece SL4A değil.

QPython'un hala SL4A çatalını geliştirdiğine dikkat edin (dürüst olmak gerekirse). Ana SL4A projesinin kendisi hemen hemen ölü.

Kullanışlı bağlantılar

70
Carl Smith

Bir Python lover ve Android programcısı olarak, bunun gerçekten iyi bir yol olmadığını söyleyebilirim. İki problem var.

Bir problem, Android geliştirme araçlarına göre bir programlama dilinden çok daha fazlasıdır. Android grafiklerinin çoğu, HTML'ye benzer şekilde ekranı yapılandırmak için XML dosyaları içerir. Yerleşik Java nesneleri bu XML mizanpajı ile gerçekten bütünleştirilmiştir ve mantıktan bitmap'e gitmek için kendi kodunuzu yazmaktan çok daha kolaydır.

Diğer sorun G1'in (ve yakın gelecekte muhtemelen diğer Android cihazlarının) gerçekten de bu kadar hızlı olmaması. 200 MHz işlemci ve RAM çok sınırlıdır. Uygulamanızın kusursuz şekilde pürüzsüz olmasını istiyorsanız, Java'da bile, daha fazla nesne oluşturmadan kaçınmak için makul miktarda yeniden yazma yapmanız gerekir. Python bir süredir hala mobil cihazlarda çok yavaş olacak.

63
lacker

Kivy


Bunu neyin @ JohnMudd zaten yanıtladığı ( bir uzantısı olarak göndermek istiyorum ancak lütfen ingilizce olduğu gibi bana katlanın. t ilk dilim )

O zamandan beri yıllar geçti ve Kivy, v1.9-dev'e gelişti. Kivy'nin en büyük satış noktası bence çapraz platform uyumluluğu. Yerel ortamınız altında kodlayabilir ve test edebilirsiniz (Windows/* nix vb.), Ayrıca Android/iOS/Mac/Windows cihazlarınızda çalışacak şekilde uygulamanızı derleyebilir, hata ayıklayabilir ve paketleyebilirsiniz.

Kivy'nin kendi KV dili ile GUI arayüzünü kolayca kodlayabilir ve oluşturabilirsiniz (tıpkı Java XML gibidir, ancak TextView vb. Yerine, KV benzerleri için kendi ui.widgets'larına sahiptir. Çeviri), bence kabul etmek oldukça kolaydır.

Şu anda Buildozer ve Android için python-for , uygulamalarınızı oluşturmak/paketlemek için en çok tavsiye edilen araçlardır. İkisini de denedim ve kesinlikle Android ile Python uygulamaları oluşturmayı bir esinti haline getirdiklerini söyleyebilirim. Konsol/terminal/komut isteminde kendilerini rahat hisseden kullanıcılar, bunları kullanırken hiçbir sorun yaşamamalı ve kılavuzları da iyi belgelendirilmelidir.

Dahası, iOS cihazınızda test etmek için gereken küçük değişikliklerle aynı kod tabanını kullanabilmeniz koşuluyla, iOS, KOS'un başka bir büyük satış noktasıdır; Xcode olmasına rağmen kivy-ios Homebrew araçları kullanarak cihazlarında çalıştırmadan önce derleme için gerekli (AFAIK, Xcode'daki iOS Simulator şu anda x86 mimarisi derlemesi için çalışmıyor). Başarılı bir yapı elde etmek için Xcode'da elle derlenmesi ve çevrilmesi gereken bazı bağımlılık sorunları da var, ancak çözülmesi çok zor olmayacak ve Kivy Google Group içindeki insanlar da gerçekten çok yardımcı olacaktır. .

Tüm söylendiği gibi, iyi Python bilgisine sahip kullanıcılar, basit uygulamalar oluşturmak için temelleri haftalar içinde (günler olmasa da) toplama konusunda hiçbir sorun yaşamamalıdır.

Ayrıca, Python modüllerinizi derleme ile paketleyebileceğiniz (tarifler oluşturabileceğiniz) ve kullanıcıların gerçekten varolan kütüphanelerden gerçekten faydalanabilecekleri Python bize getirdiği gibi İstekler & PIL vb. --- Kivy'nin uzantı desteği .

Bazen uygulamanız, Kivy'nin sağlayabileceklerinin kapsamı dışında bir işlevsellik gerektirir. Bu durumlarda, harici yazılım kütüphanelerine başvurmak gerekir. Python ekosistemin zenginliği göz önüne alındığında, hemen kolayca içe aktarabileceğiniz ve kullanabileceğiniz birçok yazılım kütüphanesi bulunmaktadır.

Sonuncusu ama en önemlisi, Kivy'yi daha ciddi/ticari projeler için kullanacaksanız, mevcut modülleri tatmin edici bulmazsınız. Yine de bazı uygulanabilir çözümler var, pyjnius ve Android için pyobjus . Kullanıcılar artık yerel API'lerin bazılarını kontrol etmek için bu modüllerle Java/Objective-C sınıflarına erişebilirler.

Kivy'deki tecrübem, tecrübeli Python programcıları ve hızlı gelişim veya basit kod tabanı bakımı isteyen bazı ciddi programcılar ile en iyi şekilde oturması gerektiğidir. Gerçekten de native duygusuyla olmasa da, çoklu platformlarda iyi çalışır.

Bazı Python uygulama programcılarının bu bilgileri faydalı bulduklarını ve Kivy’e bakmaya başladıklarını umuyorum. Topluluk daha fazla ilgi görürse sadece daha iyi olabilir (daha fazla destek ve kütüphaneler/modüller aktarılırken).

P.S.. Ne olursa olsun Kivy ile ilişkim yok, yalnızca Python kodlamayı, mobil/platformlar arası geliştirmeye eğlenceli hale getirme fikrini gerçekten seven bir programcıyım.

41
Anzel

Şu anda değil ve Jython'u yakında işe alması için şanslısınız. Şimdi gelişiminize başlamayı planlıyorsanız, şimdilik yalnızca Java'ya bağlı kalmanız daha iyi olacaktır.

36
Ilya Kochetov

SL4A'yı kullanarak (daha önce başka cevaplarda bahsedilen), bir tam gelişmiş web2py example (diğer python web çerçeveleri / muhtemelen aday olabilir) kullanabilirsiniz. SL4A yerel kullanıcı arayüzü bileşenlerini (düğmeler, kaydırma çubukları ve benzeri) yapmanıza izin vermez, ancak WebViews işlevini destekler. Bir WebView temelde çizgili bir web tarayıcısının sabit bir adrese işaret etmesinden başka bir şey değildir. Yerel Gmail uygulamasının normal widget rotasına gitmek yerine WebView kullandığını düşünüyorum.

Bu rota bazı ilginç özelliklere sahip olacak:

  • Çoğu python web çerçevesi durumunda, bir Android cihazı veya Android öykünücüsünü kullanmadan geliştirebilir ve test edebilirsiniz.
  • Telefon için yazdığınız son Python kodu, çok az (varsa) değişiklikle birlikte halka açık bir web sunucusuna da yerleştirilebilir.
  • Sorgu, HTML5, CSS3 vb. Gibi çılgın web sayfalarından yararlanabilirsiniz.
35
gdw2

QPython uygulamasını kullanıyorum. Bir editörü, konsolu vardır ve Python programlarınızı onunla çalıştırabilirsiniz. Uygulama ücretsiz ve bağlantı http://qpython.com/ .

25
kyle k

Android için Python sitesinden:

Android için Python, istediğiniz modülleri içeren kendi Python dağıtımınızı oluşturabileceğiniz ve python, libs ve uygulamanız dahil bir apk oluşturabileceğiniz bir projedir.

22
gdw2

Termux application uygulamasını kullanabilirsiniz:

Apt kurulum python kurulum python 3 olduğunu unutmayın. Python 2 için uygun bir çağrı çağırmalısınız.

Burada bazı demolar: https://www.youtube.com/watch?v=fqqsl72mASE

Ve ayrıca github sayfası: https://github.com/termux

22

Yine bir başka girişim: https://code.google.com/p/Android-python27/

Bu bir doğrudan uygulamanıza apk Python yorumlayıcı gömün.

17
e-satis

Chaquopy

Chaquopy Android Studio'nun Gradle tabanlı derleme sistemi için bir eklentidir. Standart Android geliştirme araçlarıyla close Integration 'a odaklanır.

Bu ticari bir üründür, ancak açık kaynak kullanımı için ücretsizdir ve her zaman bu şekilde kalacaktır.

(Bu ürünün yaratıcısı benim.)

13
mhsmith

Python kodunuzu sl4a ile çalıştırabilirsiniz. sl4a, Python, Perl , JRuby , Lua , BeanShell, JavaScript ve Tcl ve Shell komut dosyasını destekler.

Sl4a Python Örneklerini öğrenebilirsiniz.

13
Hitul

Muhtemelen çalışan mosync çalışan bir python-on-a-chip de var: google group

13
fooba

QPython 'ı kullanabilirsiniz.

Bir Python Konsolu, Editör ve ayrıca Paket Yönetimi/Yükleyicileri vardır.

http://qpython.com/

Hem Python 2 hem de Python 3 uygulamaları ile açık kaynak kodlu bir proje. Kaynağı ve Android .apk dosyalarını doğrudan github'dan indirebilirsiniz.

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

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

11
ode2k

Play Store'da QPython3 adlı, python betiğini düzenlemek ve çalıştırmak için kullanılabilecek bir uygulama var.

Playstore bağlantısı

Komutu kullanarak python yükleyebileceğiniz Termux adlı başka bir uygulama

pkg install python

Playstore Bağlantısı

Uygulamalar geliştirmek istiyorsanız, Python Android Scripting Layer (SL4A) vardır.

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.

11
pz64_

Bunun burada yayınlandığını görmedim, ancak Puntide ve Qt ile bunu yapabilirsiniz, çünkü Qt, Necessitas sayesinde Android'de çalışıyor.

Şu anda oldukça çamur gibi görünüyor ama sonunda uygun bir rota olabilir ...

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

9
radix07

3.4.2 veya 3.5.1 arıyorsanız başka bir seçenek GitHub'daki bu arşivdir.

Python3-Android 3.4.2 veya Python3-Android 3.5.1

Halen Python 3.4.2 veya 3.5.1'i ve NDK'nın 10d versiyonunu desteklemektedir. Ayrıca 3.3 ve 9c, 11c ve 12'yi destekleyebilir.

Basitçe indirmek, koşmak make ve .so ya da .a almanız güzel.

Bunu şu anda Android cihazlarda ham Python'u çalıştırmak için kullanıyorum. Derleme dosyalarında yapılan birkaç değişiklikle, x86 ve armeabi 64 bit işlemlerini de yapabilirsiniz.

9
GR Envoy

Bir seçenek daha, pyqtdeploy gibi görünüyor;

qt ile sağlanan diğer araçlarla birlikte, Python v2.7 veya Python v3.3 veya üstü ile yazılmış PyQt4 ve PyQt5 uygulamalarının dağıtımını sağlayan bir araç. Masaüstü platformlarına (Linux, Windows ve OS X) ve mobil platformlara (iOS ve Android) dağıtımı destekler.

PyQt5 uygulamasının Pyqtdeploy ve Qt5 üzerinden Android'e dağıtılması aktif olarak geliştirilmiştir, ancak gerekli tüm kitaplıkların Android ile nasıl derlenmesi gerektiği konusunda çalışan Android uygulamaları veya öğretici örnekleri bulmak zor olsa da. Akılda tutulması gereken ilginç bir proje!

7
Andrzej Pronobis

enaml-native reaksiyonunu içeren - doğal olan kavramı alır ve python'a uygular.

Kullanıcıların yerel Android widget'larıyla uygulamalar oluşturmasına olanak tanır ve python'dan Android ve Java kitaplıklarını kullanmak için API'ler sağlar.

Aynı zamanda Android stüdyosuyla bütünleşir ve kod yeniden yükleme ve uzaktan hata ayıklama gibi bazı reaksiyonların Nice dev özelliklerini paylaşır.

3
frmdstryr

BeeWare 'a bakın. Bu soruya cevap verme anında hala erken gelişme içerisindedir. Amaç, Android de dahil olmak üzere tüm desteklenen işletim sistemleri için Python ile yerel uygulamalar oluşturabilmektir.

3
DrawT