Android uygulaması tamamen python'da nasıl yapılır? [kapalı]


112

Play Store üzerinden dağıtılacak (oldukça basit) bir android uygulaması geliştirmek istiyorum. Bunu tamamen python'da yapmak isterim. Bununla birlikte, çevrimiçi araştırma beni pek aydınlatmadı: yorumların çoğu ya modası geçmiş (> 1 yaşında ve o zamandan beri python'un daha iyi entegrasyonunun olabileceğini düşünüyorum) ya da android'de python çalıştırma hakkında konuşuyorlar (örneğin burada ).

Bu nedenle sorularla ilgili bilgi arıyorum:

  • Tamamen python'da bir Uygulama geliştirmek mümkün müdür ve bunu yapmak için araçlar nelerdir? (Örneğin Kivy tavsiye edilebilir mi?)
  • öyleyse: bunu uygulamak için en iyi yazılım ortamları hangileridir? (Başarısız bir şekilde Android Studio'yu kullanmayı denedim, ancak orada python kodunu çalıştırmanın bir yolunu bulamadım.)

Uygulama geliştirmede oldukça yeniyim ve bunu henüz bilmediğim Jave vb. Yerine python'da yapmanın tüm ipuçlarını çok takdir ediyorum.

Şimdiden yardım ettiğiniz için çok teşekkürler.


1
geçmişte kivy ve onların buildozer programını kullandım. burada belgeler var kivy.org/docs/guide/packaging-android.html
es

Doğal olarak Java veya Kotlin kullanmanız gerekir, ancak diğerlerinin de belirttiği gibi PyMob veya Kivy gibi python ile kullanabileceğiniz 3. taraf "uygulama oluşturucular" veya çerçeveler vardır.
Dominik Schmidt

8
Kivy kullanarak tamamen Python'da geliştirilmiş bir Android oyunu yarattım. CoinTex olarak adlandırılır ve burada Google Play'de mevcuttur: play.google.com/store/apps/details?id=coin.tex.cointexreactfast . Oyunun kaynak kodu GitHub'da mevcuttur: github.com/ahmedfgad/CoinTex . Ayrıca Python kullanarak Android uygulamaları oluşturmak için bu yıl yayınlanacak bir kitap da yazdım. "Android Studio ile Kivy'yi Kullanarak Python'da Android Uygulamaları Oluşturmak: Pyjnius, Plyer ve Buildozer Ahmed Fawzy Gad ile" başlığını burada Amazon: amazon.com/dp/1484250303 adresinde bulabilirsiniz .
Ahmed Gad

1
Bir yanıt gönderilemez, ancak burada bir çözüm var gibi görünüyor : Necessitas Qt portunu kullanan PySide tabanlı QML GUI'leri ve Android'in WebKit ve yeniden yapılandırmasıyla birleştirilebilen Py4A / SL4A tabanlı yaklaşım dahil olmak üzere farklı teknolojiler gösterilecek. -Python web çerçevelerini kullanın.
2019

Bu sorunun neden kapatıldığını anlamıyorum. Yeniden açılmalı.
cknoll

Yanıtlar:


118

İlk sorunuza cevap vermek gerekirse: evet, saf python'da bir android uygulaması geliştirmek mümkün , bunu başarmak için , birlikte çok iyi çalışan ve geliştirmenizi sağlayan bir python araçları paketi olan BeeWare'i kullanmanızı öneririm. python'da platform yerel uygulamaları.

Kasaya Bu videoyu mükemmel açıklar ve 's uygulamayı gösteren BeeWare yaratıcısı

Nasıl çalışır

Android'in tercih edilen uygulama dili Java'dır - bu nedenle, Python'da bir Android uygulaması yazmak istiyorsanız, Python kodunuzu bir Java Sanal Makinesi üzerinde çalıştırmanın bir yolunu bulmanız gerekir. Bu ne VOC yapar. VOC bir aktarıcıdır - Python kaynak kodunu alır, bunu CPython Bytecode olarak derler ve sonra bu bayt kodunu Java uyumlu bayt koduna aktarır. Sonuç olarak, Python kaynak kodu dosyalarınız doğrudan bir Android uygulamasında paketlenebilen bir Java .class dosyasına derlenir.

VOC ayrıca yerel Java nesnelerine Python nesneleri gibi erişmenize, Python sınıflarıyla Java arabirimlerini uygulamanıza ve Python sınıflarıyla alt sınıf Java sınıflarına erişmenize olanak tanır. Bunu kullanarak, doğrudan yerel Android API'lerine karşı bir Android uygulaması yazabilirsiniz.

Yerel Android uygulamanızı yazdıktan sonra , Python kodunuzu bir Android uygulaması olarak paketlemek için Evrak Çantası'nı kullanabilirsiniz .

Evrak çantası , bir Python projesini bağımsız bir yerel uygulamaya dönüştürmek için bir araçtır. Projeleri şunlar için paketleyebilirsiniz:

  • Mac
  • pencereler
  • Linux
  • iPhoneiPad
  • Android
  • AppleTV
  • tvOS.

BeeWare paketini kullanarak Python ile yazılmış bu yerel Android Tic Tac Toe uygulamasını kontrol edebilirsiniz . GitHub'da

BeeWare araçlarına ek olarak, uygulamanızı test etmek için bir JDK ve Android SDK yüklemeniz gerekir.

ve ikinci sorunuza cevap vermek gerekirse: iyi bir ortam rahat edebileceğiniz herhangi bir şey olabilir, bir metin editörü ve bir komut satırı veya bir IDE, iyi bir python IDE arıyorsanız , Pycharm'ı denemenizi öneririm , ücretsiz bir topluluk sürümü ve aynı şirket tarafından yapılmış olması nedeniyle android stüdyosu ile benzer bir ortama sahip.

Umarım bu yardımcı olmuştur


2
Sadece ben miyim yoksa VOC terk mi edildi?
Fund Monica'nın Davası

2
bu bir çıkmaz (En son kontrol ettiğimde: Aralık 2018). Bu aşırı karmaşık çözümdeki bir veya daha fazla bileşen artık çalışmıyor veya kendisini güncel tutamıyor.
Berry Tsakala

2
Sadece 2019 için buna bir güncelleme, ancak Kotlin artık Android geliştirme için tercih edilen dil.
DaveTheMinion

3
@Basj Beeware'in bir süreliğine kesinlikle buralarda olacağını söylemek isterim, çünkü sadece GitHub hesabına bakarak aktif olarak geliştirildiğini göreceksiniz ve Gitter kanalına geçerseniz, her zaman tüm ekibe, özellikle de yaratıcısı Dr Russell'a (ucube çocuk) ulaşın ve topluluk oldukça arkadaş canlısı ve ayrıca resmi hesaplarından Python'dan bir eğitim bursu aldıklarını duyuran çok yeni bir tweet (26 Eylül 2019) geldi. yazılım temeli. Özellikle
python'u

1
BeeWare, bu aşamada hiçbir durumda Android'i (Java) desteklemiyor gibi görünüyor.
Mark Anderson

15

BeeWare'i web sitelerinde açıklandığı gibi deneyebilirsiniz :

Uygulamalarınızı Python'da yazın ve zengin, yerel kullanıcı arayüzlerini kullanarak iOS, Android, Windows, MacOS, Linux, Web ve tvOS üzerinde yayınlayın. Bir kod tabanı. Birden çok uygulama.

Şimdi Python'da Android Uygulamaları yazmak istemenizi istediğinizi verir ve ayrıca, listelenen diğer platformlardan birinde bir şeyler yapmak istemeniz durumunda, gelecekte başka bir çerçeve öğrenmenize gerek kalmaması avantajına sahiptir.

İşte Android Uygulamaları için Eğitim .


5
BeeWare ile kendiniz bir uygulama oluşturdunuz mu?
Berry Tsakala

12

Android'de python uygulamaları için iki ana yarışmacı var

Chaquopy

https://chaquo.com/chaquopy/

Bu, Android yapı sistemi ile bütünleşir, tüm android özellikleri için bir Python API sağlar. Siteden alıntı yapmak gerekirse, "Tam Android API ve kullanıcı arayüzü araç seti doğrudan hizmetinizdedir."

Beeware (Toga widget araç seti)

https://pybee.org/

Bu, çok hedefli bir aktarıcı sağlar, Android ve iOS gibi birçok hedefi destekler. Ana bilgisayar arabirim çağrılarıyla eşleşen genel bir pencere öğesi araç seti (toga) kullanır.

Hangisi?

Her ikisi de aktif projelerdir ve github hesapları önemli miktarda yeni etkinlik gösterir.

Tüm pencere öğesi kitaplıkları gibi Toga da temel bilgileri birden fazla platforma taşımak için iyidir. Temel tasarımlarınız varsa ve diğer platformlara yayılma arzunuz varsa, bu sizin için iyi sonuç vermelidir.

Öte yandan Chaquopy, python API'sini Android ile eşleştirmede çok daha kesin. Ayrıca, diğer kaynaklardaki mevcut kodu kullanmak istiyorsanız, Java ile karıştırmanıza da olanak tanır. Katı tasarım hedefleriniz varsa ve ağırlıklı olarak Android'i hedeflemek istiyorsanız, bu çok daha iyi bir kaynaktır.


11

Android, Python!

Sorunuzda bu iki anahtar kelimeyi bir arada gördüğümde aklıma ilk gelen Kivy'dir .

Kivy logosu

Android Studio kullanarak Java'da yerel Android geliştirmeye gelmeden önce Kivy'yi denemiştim . Bu harika. İşte bulabileceğim birkaç avantaj.


Kullanımı kolay

Bir python temelleri ile onu öğrenmekte zorlanmayacaksınız.


İyi topluluk

İyi belgelenmiş ve harika, aktif bir topluluğa sahip.


Çapraz platform.

Bu tek çerçeve ile Android, iOS, Windows, Linux ve hatta Raspberry Pi için bir şeyler geliştirebilirsiniz. Açık kaynak.


Ücretsiz bir yazılımdır

En azından (Çapraz platform) rakiplerinden birkaçı, ticari bir lisans istiyorsanız bir ücret ödemenizi istiyor.


Hızlandırılmış grafik desteği

Kivy'nin OpenGL ES 2 üzerine kurulu grafik motoru, onu oyunlar gibi hızlı grafik oluşturma gerektiren yazılımlar için uygun hale getirir.



Şimdi sorunun bir sonraki kısmına gelince, Kivy için Android Studio IDE'yi kullanamazsınız. İşte geliştirme ortamını kurmak için ayrıntılı bir kılavuz.


6
Windows desteği, üretim standartlarının (hatta hobi standardının) gerisinde kalıyor. Artı, dünyanın yarısı RTL desteği olmadığı için onu kullanamıyor.
Berry Tsakala

Neden Kivy'den ayrıldınız ve onu yerel geliştirme araçlarına dönüştürdünüz? Bazı dezavantajları olduğunu söylüyorsunuz.
igoemon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.