Ushbu maqolada men Android uchun to'liq huquqli Python dasturini qanday yaratish haqida gapirmoqchiman. Yo'q, bu sl4a uchun skript yaratish bo'yicha boshqa qo'llanma emas, bu UI bilan to'liq huquqli dastur yaratish, apk yaratish va uni Android Marketga joylashtirish uchun qo'llanma. Shu bilan birga, google.play’dagi birinchi ilovam bilan maqtanmoqchiman, bu salom dunyosi emas, balki juda ixtisoslashgan bo‘lsada, fotograflar uchun foydali dastur.

Ehtimol, men hikoyani ilovaning o'zidan boshlayman va uning qanday yaratilgani haqidagi hikoyalar bilan yakunlayman.

isortViewer

Fotosuratchi sifatida men fotosuratlarni saralash va tanlash uchun ko'p vaqt sarflashim kerak. Qo'lingizda noutbuk, smartfon yoki planshet bo'lsa, har doim ish kompyuteringizda o'tirishni xohlamaysiz, lekin u erda o'nlab gigabaytlik xom yoki jpeg fayllarni nusxalash va keyin ularni ish kompyuteringiz bilan sinxronlashtirish shubhali zavqdir. Shuning uchun men isortManager va isortViewer dasturlarini yaratdim, bu mening rasmlarni saralash va tanlash ishimni ancha osonlashtirdi. Endi men plyajdagi divanda yotganimda yoki tirbandlikda zerikkanimda fotosuratlarni tanlashim va saralashim mumkin :)

Tavsif va bir nechta skrinshotlarni nusxalash va joylashtirish:
isortViewer - bu fotosuratchilar uchun dastur bo'lib, Android smartfon va planshetlarida suratga olish jarayonida minglab fotosuratlarni (xom yoki jpg) osongina va tez tanlash va saralash imkonini beradi. Shu bilan birga, qurilmaga o'nlab gigabayt jpg yoki xom fayllarni nusxalashning hojati yo'q. Faqat isortManager bepul ish stoli dasturidan foydalaning, u hamma narsani bitta kichik loyiha faylida saqlaydi:
1. Rasmiy veb-saytdan isortManager-ni yuklab oling va ishga tushiring;
2. Loyiha yarating va foto papkalarni qo'shing. Qo'llab-quvvatlanadigan formatlar: jpg va raw (cr2, nef, orf va boshqalar). Natijada, siz kichik loyiha fayliga ega bo'lasiz (bir necha ming fotosuratlar uchun taxminan 150 MB, u jpg yoki xom formatda);
3. Loyiha faylini Android qurilmangizga nusxalang va uni isortViewer-da oching. Siz fotosuratlarni "o'chirish uchun" belgilashingiz, shuningdek, 1 dan 5 yulduzgacha baho berishingiz mumkin;
4. Shundan so'ng, loyiha faylini qaytadan nusxa ko'chiring va o'zgarishlarni isortManager-ga qo'llang. Tanlangan fotosuratlarni o'chirishdan tashqari, siz teglangan fotosuratlarni nusxalashingiz yoki ko'chirishingiz mumkin. Misol uchun, "5 yulduzli" fotosuratlar "ustalar" jildiga ko'chirilishi mumkin, "1 yulduz" esa "axlat qutisi" jildiga ko'chirilishi mumkin.

Ilova mutlaqo bepul va google.play saytida mavjud, ammo xayr-ehsonlar qabul qilinadi.

Manbalar rasmiy veb-saytda mavjud!

Bu qanday amalga oshirildi

Python dunyodagi eng yaxshi dasturlash tili bo'lgani uchun men pythondan boshqa hech narsani bilmayman, python tilida dastur yozishga qaror qilindi.

isortManager

Kompyuter uchun isortManager bilan hech qanday muammo yo'q edi, Windows uchun GUI yig'ilishini yaratish uzoq vaqtdan beri sinovdan o'tgan va u juda oddiy ishlaydi: dcraw yordamida u xom fayllardan jpg oldindan ko'rishlarni olib tashlaydi, PIL yordamida ularning hajmini o'zgartiradi va ularni bir faylga joylashtiradi. oddiy tuzilish. U fotosuratlar va metama'lumotlarni saqlash uchun konteyner bilan o'zining vaznli velosipedini ixtiro qildi (fotosuratning to'liq yo'li, "o'chirilishi kerak" belgisi va reyting belgisi), chunki, masalan, zip yoki tar formati arxivdagi bitta faylni o'zgartira olmaydi. (metadata), barcha fayllarni qayta o'rashni talab qiladi. Fayllar oddiygina ketma-ket yoziladi va metama'lumotlar blokida (Python lug'atining odatiy repr) oxirida fayllarning boshidagi ofsetlar saqlanadi, shuningdek, metama'lumotlar blokining hajmi yoziladi. faylning oxiri. GUI Tkinter-da yozilgan (men uni yozish tezligi va yakuniy yig'ilishning kichik o'lchami uchun yaxshi ko'raman), bu erda haqiqiy skrinshot:

Ha, bularning barchasi Linuxda ishlaydi va hatto Windows-dan ham tezroq)

Android uchun isortViewer

Umuman olganda, men python ilovasini Android-da to'liq huquqli dastur sifatida ishlashning ikkita usulini topdim, bu Android uchun pygame va kivy loyihasi.
Pygame pastroq, barcha UI qo'lda chizilgan bo'lishi kerak edi, bu juda ko'p vaqtni oladi, shuning uchun kivy ramkasi tanlangan. Shunday qilib:

Bu Windows, Linux, MacOS, Android va iOS uchun ilovalar yozish uchun ajoyib ramka. Multi-touch qo'llab-quvvatlanadi, UI OpenGL orqali chiziladi, ya'ni apparat tezlashuvi ishlashi kerak. Kivy Showcase demo ilovasini oʻrnatish orqali vidjetlarni amalda koʻrishingiz mumkin. Android modulidan foydalanib, ba'zi platformaga xos funktsiyalardan, masalan, tebranish yoki akselerometrdan foydalanish mumkin.

Salom Dunyo quyidagicha ko'rinadi:

Kivy kivy.require("1.0.6") import # joriy kivy versiyangiz bilan almashtiring! kivy.app dan import Ilova kivy.uix.button dan import Tugma sinf MyApp(Ilova): def build(self): return Button(text="Salom Dunyo") agar __name__ == "__main__": MyApp().run(). )

Bundan tashqari, ushbu kod barcha e'lon qilingan platformalarda ishlaydi. Ilovani emulyatorda sinab ko'rishning hojati yo'q. Skriptni sevimli IDE-da ishga tushirish va natijani kompilyatsiya qilish, emulyatorni ishga tushirish va hokazolarni kechiktirmasdan kompyuter ekranida ko'rish kifoya. Agar siz hali ham uning to'g'ridan-to'g'ri qurilmada qanday ko'rinishini ko'rishni istasangiz, shunchaki Kivy Launcher-ni o'rnating. , loyiha fayllarini karta xotirasiga nusxalash va ishga tushirish. Buni adb logcat yordamida tuzatishingiz mumkin.
Agar siz kompyuterda bo'lmagan android kutubxonasidan foydalanayotgan bo'lsangiz, lekin dasturni nafaqat androidda ishga tushirishni istasangiz, ushbu dizayndan foydalaning:
sinab ko'ring: ImportErrordan tashqari androidni import qiling: android=Yo'q ... agar android: android.vibrate(0.05)

Apk-ni yaratish juda oddiy va bu sahifada tasvirlangan. Chiqarishni yaratgandan so'ng, siz qilishingiz kerak bo'lgan yagona narsa arizangizni imzolash (men ushbu qo'llanmadan foydalanganman) va uni Google Play-ga yuklash.

Kivyning afzalliklari:

  • Kodni deyarli o'zgartirmasdan, turli platformalar uchun tezkor rivojlanish.
  • Vidjetlarning keng tanlovi mavjud
  • Yuqori tezlik. Barcha resurs talab qiladiganlar C modullariga o'tkaziladi. Python tarjimonining o'zi Androidda ishlaydi.
  • Ramka animatsiya, keshlash va boshqalar kabi ko'plab vositalarni o'z ichiga oladi.
  • yangilash: Kamera, clipboard, mikrofonga kirish. Siz o'zingizning video pleeringizni tom ma'noda 20 qatorda yozishingiz mumkin.

Kivyning kamchiliklari:

  • Katta apk fayl hajmi. 300 kb resursga ega loyiha (skriptlar, grafikalar) 7 mb apkga yig'iladi. Garchi, menimcha, buni qandaydir tarzda optimallashtirish imkoniyati mavjud.
  • Minimallashtirishdan keyin ishni tiklashning iloji yo'qligi (hali) - dastur yopiladi

Keyingi maqolamda men kodning har bir satridan o'tib, noldan ariza yozish jarayoni haqida batafsilroq gaplashaman.

Men "faqat java android uchun, python kerak emas" mavzusida xolivarlarni darhol to'xtatmoqchiman. Ishonamanki, qanday texnologiyalar "qopqoq ostida" bo'lishi muhim emas, asosiysi dastur yuqori sifatli.
Kivy ko'lami juda katta bo'lishi mumkin. Endi menda buyurtma berish uchun yozilgan bir nechta ilovalar bor, bu erda kivy ramkali python o'zini yaxshi ko'rsatdi. Misol uchun, roppa-rosa bir soat ichida xizmat ko'rsatish markazlari tarmog'iga ariza yozildi. Ilova kiosk rejimida ishlaydi va qabulxonada osilgan arzon Xitoy planshetlariga o'rnatiladi. Mijoz buyurtma raqamini teradi, keyin planshet WiFi orqali serverga ulanadi va buyurtma holati haqida xabar beradi.

Teglar: teglar qo'shish

Ushbu nom ostida siz Google Play-da uchta yaxshi dasturni topishingiz mumkin (umuman, ko'proq bor, lekin boshqalarni o'rnatish uchun vaqtni ham sarflamasligingiz kerak). Ulardan eng asosiysi SoloLearn jamoasi tomonidan Android ilovasi formatida paketlangan Python 2.x bo'yicha Udemy kursidir. U ikki darajaga bo'lingan darslarni o'z ichiga oladi: asosiy va ilg'or. Ichkarida matn yoki PDF formatidagi qisqacha ma'lumotnoma mavjud. Shaxsiy darslar uchun ishchi kod misollari mavjud. Tarmoq ulanishini talab qilmaydi.

Python-ni o'rganing

Ushbu dastur foydalanuvchilarni tilning uchinchi versiyasini o'rganishga taklif qiladi va ancha kengroq funksiyalarga ega. Asosiy ekran kursning alohida bosqichlarini va shaxsiy natijalarni ko'rsatish uchun ajratilgan. Menyuda siz Python-da bepul ijodkorlik bo'limini topishingiz, boshqa dasturlash tillari uchun kurslarni yuklab olishingiz, shuningdek ma'lumotnoma ma'lumotlarini o'rganishingiz mumkin. Ilova qiziqarli xususiyatga ega: kursni tugatgan va muammolarni hal qilgan har bir kishi ball oladi. Ularning umumiy sonini alohida yorliqda topish mumkin. Bu kimnidir chuqurroq o'rganishga undaydigan qo'shimcha o'yin komponentini yaratadi. Kurs yakunida dasturlash tilini egallaganlik sertifikatini olishingiz mumkin.

Python dasturlashni o'rganing

Phoenix App Labs tomonidan ishlab chiqilgan uchinchi dastur eng keng funksionallik va rang-barang interfeysga ega. Bu erda nafaqat yangi boshlanuvchilar va tilni o'rganganlar uchun darslar, balki tayyor Python loyihalarini to'g'ridan-to'g'ri ilovadan yuklab olish imkoniyati, o'rganganlaringizning batafsil statistikasi, o'z dasturlaringizga oson kirish uchun alohida yorliq mavjud. , va skorbord bilan onlayn kodlash chempionati shaklida ijtimoiy raqobat elementi. Kursni muvaffaqiyatli tugatgandan so'ng, har bir foydalanuvchi sertifikat oladi.

QPython

Android qurilmalari uchun to'liq Python dasturlash muhiti. Python tarjimoni, konsoli, muharriri va SL4A kutubxonasini o'z ichiga oladi, bu sizga skriptlarni to'g'ridan-to'g'ri gadjetda yaratish va ishga tushirish imkonini beradi (smartfonlar va planshetlar bilan ishlash qo'llab-quvvatlanadi, chunki tarmoq interfeyslari va GPS bilan ishlash uchun kutubxonalar mavjud). Shunday qilib, siz ushbu ilovada to'liq huquqli loyihalarni kodlashingiz va yaratishingiz mumkin. Agar sizda yaxshi Python o'quv qo'llanmasi va tayyor loyihalaringiz bo'lsa, o'rnatilgan o'quv xususiyatlarining yo'qligiga qaramay, QPython tanlashga arziydi.

Python hujjatlari

Ingliz tilida Python 3.5 uchun hujjatlar bilan zamonaviy dastur. Oflayn rejimda ishlash imkoniyati. Dasturning asosiy maqsadi tilning asosiy tamoyillarini o'zlashtirganlar uchun batafsil yordam bo'lsa-da, tayyor kod misollari bo'lgan bo'lim mavjud. U juda qulay qidiruv va oddiy navigatsiyaga ega.

Viktorina va Python-ni o'rganing

Ushbu ilova Python dasturlash asoslarini hamda kod yozishning juda aniq va kutilmagan usullarini qamrab oluvchi qisqa savollar ko'rinishida mavjud Python 2.7 dasturlash ko'nikmalaringizni o'rgatish uchun mo'ljallangan. Quiz&Learn Python sizning javoblaringiz tezligiga asoslangan statistikani yuritadi. Taraqqiyotingizga qarab, savollar qiyinlashishi mumkin. Siz ularni o'tkazib yuborishingiz mumkin (bu taraqqiyotga ta'sir qiladi: dastur oddiyroq savollarni beradi). Bundan tashqari, o'rnatilgan tuzatuvchidan foydalanib, siz savol yozishingiz va javobni amalda tekshirishingiz mumkin.

Python Challenge

Dasturlash asoslarini allaqachon o'rgangan va bilimini kengaytirmoqchi bo'lganlar uchun yana bir ilova. Python Challenge - bu savol-javob o'yini. Har bir turda bajariladigan kodni o'z ichiga olgan 20 ta savol mavjud. Ularga javob berish uchun ma'lum vaqt ajratiladi. Mavzu bo'yicha guruhlangan bir xil savollarni o'z ichiga olgan bo'lim mavjud bo'lib, ularga vaqt chegarasisiz javob berish mumkin.

Python mashqlari

Matn darslari va misollar bilan qulay dastur. Python mashqlarida juda batafsil toifalar, asosiy mavzularni har tomonlama yoritish va oddiy interfeys mavjud. Afsuski, bu erda kod yozishning iloji yo'q, shuning uchun sizga boshqa dastur yoki ikkinchi qurilma kerak bo'ladi.

Kivy loyihasini ishlab chiquvchisi Aleksandr Teylor tomonidan hikoya qilingan

So'nggi paytlarda Android uchun Python dasturini ishlab chiqishda ko'plab resurslar paydo bo'ldi. Ushbu vazifa uchun ishlab chiqilgan Kivy ramkasi (va uning filiallari) tobora ko'proq tilga olinmoqda, chunki u ushbu sohadagi eng vaqt sinovidan o'tgan va ishonchli loyihalardan biridir. Biroq, bir muhim tafsilot adolatsiz e'tibordan chetda qolmoqda - Python qurilmada ishlay boshlagandan keyin nima qilishimiz mumkin? Har qanday cheklovlar bormi? Barcha kutubxonalarni kiritish mumkinmi? Java-da dastur yozishda qila oladigan hamma narsani qilish mumkinmi? Bu savollar ko'pchilikni qiziqtiradi va ular Kivy loyihasi doirasida ko'rib chiqiladi va hal qilinadi. Ushbu maqolada men eng qiziqarli va muhim tafsilotlarni ko'rib chiqishga harakat qilaman.

Android uchun Python

Avvalo, Python-ni Android-da nima qilishini ko'rib chiqamiz - bu vosita, g'alati darajada, python-for-android. Uning asosiy vazifasi tarqatish - ilovangizni ishga tushirish uchun zarur bo'lgan barcha narsalarni o'z ichiga olgan loyiha papkasini yaratishdir. To'g'rirog'i, tarjimonning o'zi, Kivi va u bog'liq bo'lgan kutubxonalar: Pygame, SDL va boshqalar. Tarqatish shuningdek, OpenGL-ni ko'rsatadigan va Kivy va operatsion tizim o'rtasida vositachi bo'lgan Java yuklagichini o'z ichiga oladi. Keyin bularning barchasiga skriptlaringizni, belgi va nom kabi sozlamalarni qo'shasiz, Android NDK va voila yordamida kompilyatsiya qilasiz - ilovangiz bilan APK tayyor!

Va bu faqat asosiy protsedura, aslida yaratilgan ommaviy ish fayli ko'p narsalarni o'z ichiga olishi mumkin (va qiladi). Boshqa hamma narsa bilan bir qatorda, standart kutubxonaning ko'p qismi APK-da pishiriladi va Python-da yozilgan har qanday uchinchi tomon modulini osongina qo'shish mumkin - xuddi ish stoli ilovalarini ishlab chiqishda bo'lgani kabi. Kompilyatsiya qilingan komponentlar bilan modullarni qo'shish ham oson, siz ularni qanday yig'ish kerakligini belgilashingiz kerak. Qoida tariqasida, bu qiyin emas, lekin kamdan-kam hollarda qo'shimcha qadamlar talab qilinishi mumkin bo'lsa-da, qurilish jarayonini boshlashdan oldin bir nechta katakchalarni tekshirishingiz kerak. Python-for-android allaqachon mashhur modullarni kompilyatsiya qilish bo'yicha ko'rsatmalarni o'z ichiga oladi, masalan: numpy, sqlite3, twisted va hatto django!

Yuqorida tavsiflangan tamoyillar faqat umumiy ma'noda Android uchun python qanday ishlashini tushuntiradi. Kivy hujjatlarini ko'rib, istalgan vaqtda ushbu mavzu bo'yicha qo'shimcha ma'lumot olishingiz mumkin. Men Android uchun python qo'shimchasi bo'lgan Buildozerni tavsiya qilaman, u foydalanuvchilarga qulay interfeys va ba'zi bog'liqliklarni avtomatik hal qilishni ta'minlaydi. Biz yuqorida yozilgan harakatlar zanjiri nafaqat Kivyda, balki boshqa loyihalarda ham qo'llanilishiga ishonch hosil qilishga harakat qilmoqdamiz. Asosiy qurish jarayoni bir xil bo'lib qoladi, lekin Java yuklagichiga ehtiyoj qolmaydi, chunki u faqat ramkaning ayrim maxsus ehtiyojlarini qo'llab-quvvatlash uchun kerak.

PyJNIus bilan Android API-ga qo'ng'iroq qilish

Android API bilan ishlash: sensorlardan ma'lumot olish, bildirishnomalar yaratish, tebranish, to'xtatib turish va qayta ishga tushirish, nima bo'lishidan qat'iy nazar - ilovangizning muhim qismidir. Kivi siz uchun ko'p narsalarni hal qiladi, lekin siz ko'p narsalarni o'zingiz boshqarishni xohlaysiz. Shu maqsadda PyJNIus yaratilgan - Java kodini Python interfeysida avtomatik ravishda o'rab oladigan vosita.

Oddiy misol sifatida, telefonni 10 soniya davomida tebranadigan dastur:

jnius import avtoklassidan # Birinchidan, # ilovasi ishlayotgan Java Faoliyatiga havola kerak, u Kivy PythonActivity yuklagichida saqlanadi PythonActivity = autoclass("org.renpy.android.PythonActivity") faollik = PythonActivity.mActivity Kontekst = autoclass("android.content.Context") vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE) vibrator.vibrate(10000) # argument millisekundlarda

Agar siz Android API bilan tanish bo'lsangiz, yuqoridagi kod Java kodiga juda o'xshashligini ko'rasiz - PyJNIus bizga bir xil API-ga kirish imkonini beradi, lekin to'g'ridan-to'g'ri Python-dan. Android API-ning ko'pchiligi shu tarzda chaqirilishi mumkin, bu sizga Java-ni ishlab chiqishda bo'lgani kabi bir xil funksiyalarga erishish imkonini beradi.

PyJNIus ning asosiy kamchiligi shundaki, u Android API strukturasini yaxshi tushunishni talab qiladi va kod juda og'ir, garchi uning Java ekvivalenti aynan bir xil ko'rinadi. Ushbu muammoni hal qilish uchun Kivy Plyerni o'z ichiga oladi.

Plyer: platformaga xos vazifalar uchun platformalararo API

Dasturchilar uchun maslahat: agar siz Huawei Honor Cup tanlovida ro'yxatdan o'tsangiz, ishtirokchilar uchun onlayn maktabga bepul kirish huquqiga ega bo'lasiz. Siz o'z mahoratingizni oshirib, tanlovning o'zida sovrinlarni yutib olishingiz mumkin. .

Ushbu maqola quyidagi tillarda ham mavjud: tay

  • Keyingisi

    Maqoladagi juda foydali ma'lumotlar uchun sizga katta RAHMAT. Hamma narsa juda aniq ko'rsatilgan. EBay do'konining faoliyatini tahlil qilish uchun juda ko'p ish qilingandek tuyuladi

    • Sizga va mening blogimning boshqa doimiy o'quvchilariga rahmat. Sizsiz men ushbu saytni saqlashga ko'p vaqt ajratishga undovchi bo'lmas edim. Mening miyam shunday tuzilgan: men chuqur qazishni, tarqoq ma'lumotlarni tizimlashtirishni, ilgari hech kim qilmagan yoki bu burchakdan qaramagan narsalarni sinab ko'rishni yaxshi ko'raman. Rossiyadagi inqiroz tufayli yurtdoshlarimiz eBay’da xarid qilishga vaqtlari yo‘qligi achinarli. Ular Xitoydan Aliexpress-dan sotib olishadi, chunki u erda tovarlar ancha arzon (ko'pincha sifat hisobiga). Ammo eBay, Amazon, ETSY onlayn auktsionlari xitoyliklarga markali buyumlar, vintage buyumlar, qo'lda ishlangan buyumlar va turli etnik mahsulotlar assortimentida osonlikcha boshlanish imkonini beradi.

      • Keyingisi

        Maqolalaringizda qimmatli narsa sizning shaxsiy munosabatingiz va mavzuni tahlil qilishdir. Bu blogdan voz kechmang, men bu erga tez-tez kelaman. Bizda shunday ko'p bo'lishi kerak. Menga elektron pochta xabarini yuboring Yaqinda menga Amazon va eBay-da savdo qilishni o'rgatish taklifi bilan elektron xat oldim. Va bu savdolar haqidagi batafsil maqolalaringizni esladim. hudud Men hamma narsani qayta o'qib chiqdim va kurslar firibgarlik degan xulosaga keldim. Men hali eBay-da hech narsa sotib olmaganman. Men Rossiyadan emas, Qozog'istondan (Olmaota)man. Lekin biz hali hech qanday ortiqcha xarajatlarga muhtoj emasmiz. Sizga omad tilayman va Osiyoda xavfsiz bo'ling.

  • Shuningdek, eBay’ning Rossiya va MDH mamlakatlari foydalanuvchilari uchun interfeysni ruslashtirishga urinishlari o‘z samarasini bera boshlagani ma’qul. Axir, sobiq SSSR mamlakatlari fuqarolarining aksariyati xorijiy tillarni yaxshi bilishmaydi. Aholining 5% dan ko'pi ingliz tilini bilmaydi. Yoshlar orasida ko'proq. Shuning uchun, hech bo'lmaganda interfeys rus tilida - bu ushbu savdo maydonchasida onlayn xarid qilish uchun katta yordamdir. eBay o'zining xitoylik hamkasbi Aliexpress yo'lidan bormadi, bu erda mahsulot tavsiflarini tarjima qilish mashinasi (juda noqulay va tushunarsiz, ba'zan kulgiga sabab bo'ladi). Umid qilamanki, sun'iy intellekt rivojlanishining yanada ilg'or bosqichida bir necha soniya ichida istalgan tildan istalgan tilga yuqori sifatli mashina tarjimasi haqiqatga aylanadi. Hozircha bizda shunday (eBay-da ruscha interfeysga ega sotuvchilardan birining profili, ammo inglizcha tavsifi):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png