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


Üzerinde çalışıyoruz S60 sürüm ve bu platformda güzel bir Python API'si var.

Ancak, Android'de Python hakkında resmi bir şey yok, ancak Jython Var, yılan ve robotun birlikte çalışmasına izin vermenin bir yolu var mı?


1892
2017-09-19 13:21


Menşei


Joel'in, Google'ın sıralandığı SO yayınları için güncellemeler yapma olasılığı hakkındaki teorisini test edelim. Aşağıya bakın ya da bu: google-opensource.blogspot.com/2009/06/... - unmounted
Aksini kastediyorum. Bu yazının küçük içeriği göz önüne alındığında, iyi sıralanırsa, büyük bir beklenti olmalı. Bu proje için en iyisini umuyorum, kendimi bir Java adamından daha çok bir pythonistalıyorum ve Android'i bu dille kodlayan prototip aşaması gökyüzü kayağı olacaktır. - e-satis
Oh, doğru ... Sorunun güncellenmesinin yararlı olduğunu düşünmüyorum, ama kabul edilen cevabı değiştirmek kesinlikle. - e-satis
@ e-size haklısın. Python ve onun teknikliği için yeniyim, C / C ++ dillerini derledim. Ancak, sanal bir makinenin içindeki sanal bir makine, şimdiye kadarki en hızlı şey olmayacak ve muhtemelen kodu yürütmenin en yavaş yolu olacak şekilde rekabet edebilir. Elbette onun faydası vardır. Python'dan ve Android'den nefret etmiyorum, ama ... - user457015
@ user457015 Bence, modern JVM'lerin nasıl uygulandığını gerçekten okumalısınız. hiçbir yere yakın Şimdiye kadar "komut dosyası" veya "yorumlama" yapmak. Bir şey varsa, Java şimdi sadece ~% 10-25 daha yavaş iyi / mükemmel yazılı C / C ++ kodu. Ve Java’da yazı yazmak için daha az yer var ... - TC1


Cevaplar:


Bir yolu kullanmaktır Kivy:

Uygulamaların hızlı gelişimi için açık kaynak Python kütüphanesi   Bu, çoklu dokunma uygulamaları gibi yenilikçi kullanıcı arayüzlerinden yararlanır.

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

Kivy Vitrini uygulaması 


820
2017-11-18 21:49



Kivy'yi kullanırsanız, projenizi bir APK haline getirmeye yardımcı olacak bir araç aşağıdadır: github.com/kivy/python-for-android - gdw2
@ e-satis yaptım Kivy Senin için çalıştın mı? kullanışlı mıydı? Deneyimlerinizi Kivy'yle paylaşırsanız gerçekten müteşekkir olurum. soru :) - juliomalegria
Geçtiğimiz hafta Kivy ile bir oyun yazmaya çalışıyorum. Onların ana geliştiricileri IRC ile ilgili soruları cevaplamakta çok hızlılardı, ancak eğer Kivy WTF'yi biraz söylemek zorunda kalmadan önce bir GUI programladıysanız. Benim için garip olan bazı belgelenmemiş şeyler örnekleri: Tüm widget'lar kendi bölgeleri dışında bir olay meydana gelse bile her on_touch_down etkinliğini alırlar. Hiçbir widget bir draw () yöntemine sahip değildir, hemen hemen her şey, oluşturdukları özel Özelliklerdeki özel bir gözlemci deseni ile olur. Not, bu adı Python'un mülkü ile paylaşır, ancak aynı değildir. - Trey Stout
Şimdi, neredeyse tam bir yıl sonra, daha iyi destekliyor mu? Burada kayda değer gelişmeler oldu mu? - TankorSmash
Ve başka bir yıl, lanet Google, web sitelerinde sevdikleri tüm python ile, Android'de python için bir aşk yoktur. - Dexter


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

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


303
2018-06-10 05:24



Doğru, ancak ASE'nin yüklü olması gerekiyor, python'da zaten yüklü bir şey olmadan bir Android uygulaması yazmanıza izin veren bir çözüm değil (normal kullanıcı her şey "wtf bu ASE işidir") - Stuart Axon
Ayrıca, ASE kısıtlı bir ortamdır; ASE önceden yüklenmiş olsa bile, tam gelişmiş Android uygulamaları yazamazsınız. Görmek stackoverflow.com/questions/2076381 - Sridhar Ratnakumar
SL4A olarak yeniden adlandırıldığını düşünüyorum. - Vanuan
İsterseniz SL4A günlerinde, uygulamalar yazabilir, paketleyebilir ve hatta isterseniz bunları Play Store'da satabilirsiniz. Yukarıdaki yorumlar yayınlandığından beri iyi geliyor. Eğer Android'de Python istiyorsanız, SL4A'da çalışan PY4A muhtemelen en iyi seçimdir. - Carl Smith
Ben konfirme, SL4A şimdi kullanıma hazır paketleri yazmayı sağlar, ben çalışıyorum perl ile çalıştı - ubugnu


EVET!

Bir örnek Matt Cutts ile SL4A aracılığıyla - "burada altı satırlık Python kodunda yazılan 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)

180
2018-06-10 05:13



s / EVET / meh. belki / ... bu son derece sınırlıdır. grafiksel veya çoklu dokunma büyük bir hayır. - gcb
@gcb normal android widget setini kullanamazsınız, ancak "webviews" (örneğin, native gmail uygulamasının kullandığı şey) kullanabilirsiniz. - gdw2
golfed: 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, elbette yerel Gmail uygulaması, gerçek kullanıcı arayüzü için değil, yalnızca e-postaları ayrıştırmak için WebViews kullanır. Bu, karşılaştırmayı biraz saçma yapar. - Veselin Romić


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


73
2018-05-26 09:21





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

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


71
2018-01-28 12:18



Droid X'imde (düğmeler ya da dokunmatik ekran, hatırlayamıyorum) bazı yönlerim kırıldı, bu yüzden bu rotada çok uzağa gitmedim. - gdw2


Android için Python 2.7.2 çapraz derleme için talimatlar ve bir yama gönderdim, burada blogumdan alabilirsiniz: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

DÜZENLEME: Kaynak açtım Ignifuga, benim 2D Oyun Motorum, bu Python / SDL tabanlı ve Android için derler çapraz. Oyun için kullanmasanız bile, koddan ve oluşturucu yardımcı programından (Tim'den sonra Schafer, ... kim olduğunu biliyorsunuz) yararlı fikirler alabilirsiniz.


63
2017-10-12 13:49



Etkileyici. Bunun için +1. Kabul edilmedi, çünkü bu konuda halk için bir şey yazamazsın. - e-satis
Bununla grafik uygulamaları yapamayacağınız anlamına gelirseniz, elbette, daha fazla işe ihtiyaç duyulur. Ben aslında bu portu SDL 1.3 ile birlikte kullanıyorum, python yorumlayıcısından etkileşimli bir uygulamaya geçmek çok da önemli değil, ama yapılabilir. - gabomdq


Android için Komut Dosyası Katmanı

SL4A istediğini yapar. Doğrudan cihazınıza kendi sitesinden kolayca yükleyebilir ve root'a ihtiyacınız yoktur.

Bir dizi dili desteklemektedir. Python en olgun olanıdır. Varsayılan olarak, Python 2.6 kullanır, ancak bir 3.2 bağlantı noktası bunun yerine kullanabilirsiniz. Bir Galaxy S2 üzerinde her türlü şey için bu limanı kullandım ve iyi çalıştı.

API

SL4A onların bir portu sağlar android Desteklenen her dil için kütüphane. Kütüphane, bir temelde Android API'ya bir arayüz sağlar. Android nesne.

from android import Android

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

Her dil hemen hemen aynı API'ye sahiptir. JavaScript API'sini web görüntülemelerinde 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:

  • Genel, yerel diyalogları ve menüleri API. Bu onay diyalogları ve diğer temel kullanıcı girişleri için iyidir.
  • Ayrıca bir Python komut dosyasının içinden bir web görünümü açabilir, ardından HTML5'i kullanabilirsiniz. kullanıcı arayüzü için. Python'dan web görüntülemelerini kullandığınızda Webview ve Python işlemi arasında ileri ve geri onu doğurdu. UI yerel olmayacak, ancak yine de iyi bir seçenek var.
  • Var bazı yerel Android kullanıcı arayüzleri için destek, ancak ben değilim emin ne kadar iyi çalışır; Daha önce 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

Adlı bir üçüncü parti projesi var QPython. Bu SL4A üzerinde inşa ve diğer bazı yararlı şeyler atıyor.

QPython, kurulumunuzu yönetmek için daha güzel bir kullanıcı arayüzü sunar ve küçük, dokunmatik bir kod düzenleyicisi, bir Python kabuğu ve paket yönetimi için 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 dahil olmak üzere Android projelerinde bir grup Python'dan kütüphaneleri bir araya getirmektedir, bu yüzden sadece SL4A değildir.

QPython'un hala SL4A çatalını geliştirdiğini (ancak dürüst olmamak için) unutmayın. Ana SL4A projesinin kendisi oldukça ölü.

kullanışlı bağlantılar


57
2018-03-19 15:45



Terminal veya tasker'dan python betiğini çalıştırmak için bunlardan herhangi birini kullanabilir misiniz? Bir yol bulamıyorum :( - Pitto
Tasker'dan bir SL4A betiği başlatabilirsiniz. Bazı örnekler var bu sayfa Tasker'den başlatılan Python snippet'leri var. Gerçi gerçekten farklı bir soru. - Carl Smith


Olarak piton sevgili ve Android programcı, bu gerçekten gitmek için iyi bir yol olmadığını söylemek üzücü. İki problem var.

Bir problem, Android geliştirme araçlarına sadece bir programlama dilinden çok daha fazlası olmasıdır. Android grafikleri, ekranı HTML'ye benzer şekilde yapılandırmak için XML dosyalarını içerir. Yerleşik java nesneleri bu XML düzeniyle gerçekten bütünleşir ve mantıktan bitmap'e gitmek için kendi kodunuzu yazmaktan çok daha kolaydır.

Diğer bir problem de G1'in (ve yakın gelecekte muhtemelen diğer Android cihazların) gerçekten bu kadar hızlı olmaması. 200 MHz işlemci ve RAM çok sınırlıdır. Uygulamanızı mükemmel bir şekilde pürüzsüz hale getirmek istiyorsanız, Java'da bile, iyi bir şekilde yeniden yazmak için kaçınılması gereken daha fazla nesne oluşturma işlemi yapmanız gerekir. Python hala mobil cihazlarda bir süre için çok yavaş olacak.


56
2017-11-01 20:29



Bir Android telefonda tek bir java kelimesi yok, paketleme işlemi sırasında bayt kodu derleniyor. Hız sorun değil: Google, doğru bayt kodunu python kodundan üreten araçlar sağlayabilir (Jython için olduğu gibi). BTW, Dalvik, Java VM değil, bu Java VS Python ile ilgili değil. - e-satis
Hehe. 200 MHz ... 4 yıl sonra ve şimdi telefonlar dört çekirdekli işlemcilere sahip ... LOL. - Touzen
JAVA bayt kodunun hala bir JVM tarafından işlenmesi gerekir ve Java dili bir çöp toplayıcısına ihtiyaç duyar. Gerçek hız sadece C ++ 'dan gelebilir. - LtWorf
@Touzen 2 yıl sonra, şimdi Intel Atom işlemci veya octa-core işlemcileri kullanıyoruz. ;) - Rohan Kandwal
Çizebildikleri güç farkı nedeniyle, telefonlar her zaman masaüstü bilgisayarlardan daha yavaş bir büyüklük sırası olacaktır. Bununla birlikte, mobil cihaz için Python'dan vazgeçmeyin, çünkü genellikle işlemcinin yoğun çalışmasından kodun sadece bir kısmı sorumludur ve bu bölüm başka bir dilde yeniden yazarak en iyi duruma getirilebilir. - Evgeni Sergeev


Şu an değil ve Jython’un yakında çalışması için şanslı olursun. Şimdi geliştirmeye başlamayı planlıyorsanız, şu an için Java'ya bağlı kalmaktan daha iyi bir sonuç elde edersiniz.


32
2017-09-19 13:26