
Dalam artikel
Python kemarin
dalam pengembangan Mobile , yang berbicara tentang perpustakaan
KivyMD (kumpulan widget gaya Desain Bahan untuk digunakan dalam kerangka kerja lintas platform Kivy), saya diminta dalam komentar untuk berbicara tentang proses membangun paket untuk platform Android. Bagi banyak orang, proses ini, sayangnya, adalah dan tetap menjadi semacam rangkaian perdukunan magis dan bukan perselingkuhan bagi pemula. Baiklah, mari kita cari tahu, apakah semuanya benar-benar rumit dan apakah saya benar-benar seorang penyihir dan penyihir ...

Tentu saja dia bisa! Jadi, Anda menulis kode dengan Python dan Kivy. Apa yang diperlukan untuk menjalankannya di perangkat Android? Buka repositori KivyMD dan Anda akan melihat bahwa
instruksi ini telah lama menjelaskan langkah-langkah yang memungkinkan Anda untuk mengumpulkan paket APK:
- Unduh XUbuntu 18.04
Instal Kotak Virtual di komputer Anda.
Buat mesin virtual baru berdasarkan gambar XUbuntu yang diunduh
Mulai mesin virtual XUbuntu, buka terminal dan jalankan perintah berikut:
wget https://github.com/HeaTTheatR/KivyMD-data/raw/master/install-kivy-buildozer-dependencies.sh
chmod +x install-kivy-buildozer-dependencies.sh
./install-kivy-buildozer-dependencies.sh
Itu saja! Anda sekarang memiliki mesin virtual untuk membangun paket APK untuk aplikasi Kivy! Apa selanjutnya Mari kita benar-benar membangun aplikasi ujian. Buat direktori TestKivyMD di direktori home mesin virtual Anda dengan file main.py kosong:

Selanjutnya, buka file main.py dan tulis kode untuk aplikasi pengujian kami yang akan menggunakan pustaka KivyMD:
from kivy.lang import Builder from kivymd.app import MDApp KV = """ Screen: MDToolbar: title: "My firt app" elevation: 10 md_bg_color: app.theme_cls.primary_color left_action_items: [["menu", lambda x: x]] pos_hint: {"top": 1} MDRaisedButton: text: "Hello World" pos_hint: {"center_x": .5, "center_y": .5} """ class HelloWorld(MDApp): def build(self): return Builder.load_string(KV) HelloWorld().run()
Simpan, buka terminal dalam direktori dengan file main.py dan instal perpustakaan KivyMD:
sudo pip3 install kivymd
Setelah instalasi, Anda dapat menguji kode kami:
python3 main.py
Hasil skrip akan menjadi layar dengan Bilah Alat dan satu tombol "Hello World":

Selanjutnya, kita perlu membuat file spesifikasi buildozer.spec, yang seharusnya berada di direktori yang sama dengan file main.py:

Jika Anda tidak menutup terminal (jika terminal ditutup, buka di direktori TestKivyMD), masukkan perintah:
buildozer init
Perintah ini akan membuat file spesifikasi default. Buka dan edit:
[app]
Semuanya jelas di sini, oleh karena itu, komentar tambahan tidak diperlukan. Baca dengan hati-hati spesifikasi default, di dalamnya Anda dapat menentukan jalur ke ikon, flash ketika memuat aplikasi dan banyak lagi. Saya hanya meninggalkan apa yang sekarang kita butuhkan untuk membangun paket pengujian kami. Dan, pada kenyataannya, kita memulai proses pembangunan dengan perintah di terminal:
buildozer android debug
Anda dapat dengan aman pergi ke dapur dan membuat kopi, karena untuk pertama kalinya proses memuat dan menyusun perpustakaan akan memakan waktu yang sangat lama. Semua majelis berikutnya membutuhkan waktu 10-20 detik.
Kopi dalam keadaan mabuk dan saatnya untuk melihat ke terminal:

Voila! Aplikasi kami dibangun! Saatnya untuk menjatuhkannya di smartphone Anda dan menjalankan:

Semuanya bekerja! Dan ternyata tidak semuanya serumit kelihatannya.
Mereka juga bertanya kepada saya:

Baik Flutter maupun React Native tidak memiliki keunggulan dibandingkan bahasa markup Bahasa Kivy, yang memungkinkan Anda membuat dan memposisikan tata letak dan widget langsung. Bagi saya, cara UI dibangun di Flutter adalah penyimpangan nyata. Hanya orang sakit yang bisa memikirkan ini. Agar tidak berdasar, mari kita lihat kode Flutter dan kode Kivy dari aplikasi sederhana yang sama ... Ini akan terlihat seperti ini:

Di bawah ini saya berikan kode dari artikel
About Flutter, secara singkat: Dasar-dasar :
import 'package:flutter/widgets.dart'; main() => runApp( Directionality( textDirection: TextDirection.ltr, child: Container( color: Color(0xFFFFFFFF), child: App(), ), ), ); class App extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: GestureDetector(
Dan di sini persis sama, tetapi menggunakan Kivy dan KivyMD:
from kivy.lang import Builder from kivymd.app import MDApp KV = """ #:import get_color_from_hex kivy.utils.get_color_from_hex Screen: MDCard: MDLabel: value: 0 text: str(self.value) halign: "center" on_touch_down: self.value += 1 canvas.before: Color: rgba: get_color_from_hex("#4eaabe") Ellipse: pos: self.center[0] - dp(25), self.center[1] - dp(25) size: dp(50), dp(50) """ class HelloWorld(MDApp): def build(self): return Builder.load_string(KV) HelloWorld().run()
Menurut pendapat saya, kesimpulannya jelas dan tidak perlu komentar saya ...
Saya harap ini bermanfaat bagi Anda. Saya meninggalkan polling dengan topik "Apakah Anda berhasil membangun aplikasi untuk Android".