Apakah ada cara untuk menjalankan Python di Android?


2093

Kami sedang mengerjakan versi S60 dan platform ini memiliki API Python yang bagus ..

Namun, tidak ada yang resmi tentang Python di Android, tetapi karena Jython ada, apakah ada cara untuk membiarkan ular dan robot bekerja bersama ??

Jawaban:


1061

Salah satu caranya adalah menggunakan Kivy :

Pustaka Python open source untuk pengembangan aplikasi yang cepat yang menggunakan antarmuka pengguna yang inovatif, seperti aplikasi multi-sentuh.

Kivy berjalan di Linux, Windows, OS X, Android dan iOS. Anda dapat menjalankan kode [python] yang sama di semua platform yang didukung.

Aplikasi Kivy Showcase


63
Jika Anda menggunakan Kivy, berikut adalah alat untuk membantu mengemas proyek Anda menjadi APK: github.com/kivy/python-for-android
gdw2

17
Saya telah bermain-main dengan Kivy minggu lalu mencoba menulis permainan. Pengembang utama mereka sangat cepat untuk menjawab pertanyaan di IRC namun jika Anda telah memprogram GUI sebelum Kivy akan membuat Anda mengatakan WTF sedikit. Beberapa contoh hal-hal yang tidak terdokumentasi yang aneh bagi saya: Semua widget mendapatkan setiap peristiwa on_touch_down bahkan jika acara tersebut terjadi di luar wilayah mereka, Tidak ada widget memiliki metode draw (), hampir semuanya terjadi melalui pola pengamat khusus pada Properti kustom yang mereka buat ( perhatikan ini berbagi nama dengan properti Python, tetapi tidak sama)
Trey Stout

7
@Trey: Bagaimana dengan hal-hal yang tidak terkait GUI? Apakah ada batasan terkait penggunaan modul Python? Bagaimana dengan akses ke fitur spesifik Android, seperti kemampuan membaca pesan, menambahkan pemberitahuan, bekerja di latar belakang, membuat foto, membaca daftar kontak, menentukan lokasi GPS dll.?
Tadeck

7
Dan sekarang ada dukungan iOS juga!
rubik

16
Sekarang, hampir setahun penuh kemudian, apakah dukungan lebih baik? Apakah di sini ada perbaikan penting?
TankorSmash

347

Ada juga proyek Android Scripting Environment (ASE / SL4A) yang baru. Ini terlihat luar biasa, dan memiliki beberapa integrasi dengan komponen Android asli.

Catatan: tidak lagi dalam "pengembangan aktif", tetapi beberapa garpu mungkin.


70
Benar, tetapi mereka harus memiliki ASE yang terinstal, itu bukan solusi yang memungkinkan Anda menulis aplikasi Android dengan python tanpa apa pun yang sudah terinstal (pengguna normal akan semua "wtf apakah ini ASE?)
Stuart Axon

20
Selanjutnya, ASE adalah lingkungan terbatas; Anda tidak dapat menulis aplikasi Android yang lengkap meskipun ASE sudah diinstal sebelumnya. Lihat stackoverflow.com/questions/2076381
Sridhar Ratnakumar

10
Saya pikir itu diganti namanya menjadi SL4A.
Vanuan

9
Anda dapat menulis aplikasi, mengemasnya, dan bahkan menjualnya di Play Store jika Anda suka, dengan SL4A sekarang. Itu datang dengan baik sejak komentar di atas diposting. Jika Anda ingin Python di Android, maka PY4A, yang berjalan pada SL4A mungkin merupakan pilihan terbaik.
Carl Smith

2
Saya konfirmasikan, SL4A sekarang mengizinkan untuk menulis paket aplikasi yang siap digunakan, saya coba dengan perl berfungsi
ubugnu

216

Iya! : Lingkungan Android Scripting

Contoh melalui Matt Cutts via SL4A - "inilah pemindai kode batang yang ditulis dalam enam baris kode Python:

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)

46
s / YES / meh. mungkin / ... ini sangat terbatas. apa saja grafis atau multi touch? NO besar.
gcb

2
@ gcb Anda tidak dapat menggunakan set widget Android normal, tetapi Anda dapat menggunakan "tampilan web" (yang digunakan oleh aplikasi gmail asli, misalnya).
gdw2

28
bermain golf: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

12
@ gdw2, pastinya aplikasi Gmail asli hanya menggunakan WebViews untuk mem-parsing email, bukan untuk UI sebenarnya. Itu membuat perbandingan agak tidak masuk akal.
Veselin Romić

88

Subset Pygame untuk Android

Pygame adalah mesin gim 2D untuk Python (di desktop) yang populer di kalangan programmer baru. The Pygame Subset untuk Android menggambarkan dirinya sebagai ...

... port dari sebagian fungsi Pygame ke platform Android. Tujuan dari proyek ini adalah untuk memungkinkan pembuatan game khusus Android, dan untuk memudahkan porting game dari platform seperti PC ke Android.

Contohnya termasuk permainan lengkap yang dikemas sebagai APK, yang cukup menarik.


4
Beberapa aspek rusak pada Droid X saya (tombol, atau layar sentuh, tidak ingat), jadi saya tidak terlalu jauh dengan rute ini.
gdw2

78

Kompilasi Lintas & Ignifuga

Blog saya memiliki instruksi dan tambalan untuk kompilasi silang Python 2.7.2 untuk Android.

Saya juga membuka Ignifuga yang bersumber , Mesin Game 2D saya. Ini berbasis Python / SDL, dan kompilasi silang untuk Android. Bahkan jika Anda tidak menggunakannya untuk game, Anda mungkin mendapatkan ide yang berguna dari kode atau utilitas pembangun (bernama Schafer , setelah Tim ... Anda tahu siapa).


4
Impresif. +1 untuk ini. Tidak diterima karena Anda tidak mungkin menulis apa pun untuk umum dengan ini.
e-satis

1
Jika Anda bermaksud tidak dapat melakukan aplikasi grafis dengannya, Anda pasti dapat, tentu saja, lebih banyak pekerjaan yang diperlukan. Saya benar-benar menggunakan port ini dikombinasikan dengan SDL 1.3, itu tidak sepele untuk beralih dari penerjemah python ke aplikasi interaktif, tetapi itu bisa dilakukan.
gabomdq

77

Layer Scripting untuk Android

SL4A melakukan apa yang Anda inginkan. Anda dapat dengan mudah menginstalnya langsung ke perangkat Anda dari situs mereka, dan tidak perlu root.

Ini mendukung berbagai bahasa. Python adalah yang paling dewasa. Secara default, ia menggunakan Python 2.6, tetapi ada port 3.2 yang dapat Anda gunakan sebagai gantinya. Saya telah menggunakan port itu untuk semua jenis hal pada Galaxy S2 dan itu berfungsi dengan baik.

API

SL4A menyediakan port androidperpustakaan mereka untuk setiap bahasa yang didukung. Perpustakaan menyediakan antarmuka ke API Android yang mendasarinya melalui satu Androidobjek.

from android import Android

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

Setiap bahasa memiliki API yang hampir sama. Anda bahkan dapat menggunakan API JavaScript di dalam tampilan web.

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

Antarmuka pengguna

Untuk antarmuka pengguna, Anda memiliki tiga opsi:

  • Anda dapat dengan mudah menggunakan generik, dialog dan menu asli melalui API. Ini bagus untuk dialog konfirmasi dan input pengguna dasar lainnya.
  • Anda juga dapat membuka tampilan web dari dalam skrip Python, lalu menggunakan HTML5 untuk antarmuka pengguna. Saat Anda menggunakan tampilan web dari Python, Anda bisa meneruskan pesan bolak-balik, antara tampilan web dan proses Python yang memunculkannya. UI tidak akan asli, tetapi masih merupakan opsi yang baik untuk dimiliki.
  • Ada beberapa dukungan untuk antarmuka pengguna Android asli, tetapi saya tidak yakin seberapa baik kerjanya; Saya belum pernah menggunakannya.

Anda dapat mencampur opsi, sehingga Anda dapat memiliki tampilan web untuk antarmuka utama, dan masih menggunakan dialog asli.

QPython

Ada proyek pihak ketiga bernama QPython . Itu dibangun di atas SL4A, dan melempar beberapa hal berguna lainnya.

QPython memberi Anda UI yang lebih bagus untuk mengelola instalasi Anda, dan termasuk sedikit, editor kode layar sentuh, shell Python, dan shell PIP untuk manajemen paket. Mereka juga memiliki port Python 3. Kedua versi tersedia dari Play Store, gratis. QPython juga menggabungkan pustaka dari sekelompok Python di proyek Android, termasuk Kivy, jadi bukan hanya SL4A.

Perhatikan bahwa QPython masih mengembangkan garpu SL4A mereka (meskipun, tidak banyak yang jujur). Proyek utama SL4A sendiri sudah hampir mati.

Tautan yang Berguna


1
Bisakah Anda menggunakan salah satu dari itu untuk menjalankan skrip python dari terminal atau tasker? Saya tidak dapat menemukan cara :(
Pitto

1
Anda dapat meluncurkan skrip SL4A dari Tasker. Ada beberapa contoh di halaman ini yang memiliki cuplikan Python diluncurkan dari Tasker. Ini benar-benar pertanyaan yang sangat berbeda.
Carl Smith 15

77

Sebagai pecinta Python dan programmer Android, saya sedih mengatakan ini bukan cara yang baik untuk pergi. Ada dua masalah:

Satu masalah adalah bahwa ada lebih dari sekedar bahasa pemrograman untuk alat pengembangan Android. Banyak grafik Android melibatkan file XML untuk mengonfigurasi tampilan, mirip dengan HTML. Objek java bawaan terintegrasi dengan tata letak XML ini, dan jauh lebih mudah daripada menulis kode Anda dari logika ke bitmap.

Masalah lainnya adalah bahwa G1 (dan mungkin perangkat Android lainnya untuk waktu dekat) tidak secepat itu. Prosesor 200 MHz dan RAM sangat terbatas. Bahkan di Jawa, Anda harus melakukan penulisan ulang yang memadai untuk menghindari lebih banyak objek-objek jika Anda ingin membuat aplikasi Anda menjadi sangat lancar. Python akan menjadi terlalu lambat untuk sementara waktu masih di perangkat seluler.


48
Tidak ada satu kata java di ponsel Android, itu dikompilasi ke kode byte selama proses pengemasan. Kecepatan bukan masalah: Google dapat menyediakan alat yang menghasilkan kode byte yang tepat dari kode python (seperti untuk Jython). BTW, Dalvik bukan Java VM jadi ini bukan tentang Java VS Python.
e-satis

6
Bytecode JAVA masih perlu diproses oleh JVM, dan bahasa Jawa tetap membutuhkan pengumpul sampah. Kecepatan aktual hanya bisa datang dari C ++.
LtWorf

19
@Touzen 2 tahun kemudian, kami menjalankan prosesor Intel Atom atau prosesor octa-core sekarang. ;)
Rohan Kandwal

2
Karena perbedaan dalam kekuatan yang mereka dapat menggambar, ponsel akan selalu menjadi urutan lebih lambat dari desktop. Namun, jangan menyerah pada Python untuk perangkat seluler, karena biasanya hanya sebagian kecil dari kode yang bertanggung jawab untuk pekerjaan yang intensif prosesor, dan fraksi ini dapat dioptimalkan dengan menulis ulang dalam bahasa lain.
Evgeni Sergeev

2
Ngomong-ngomong, Google mendorong Kotlin akhir-akhir ini - yang merupakan bahasa yang tidak dikenal oleh sebagian besar pengguna - jelas bahwa mungkin untuk mendukung bahasa lain selain Jawa (saya penggemar Java dan penggemar Python). Jadi saya pikir jawabannya lebih bersifat politis daripada jawaban praktis.
Alex

49

Kivy

Saya ingin menambahkan apa yang telah ditulis oleh @JohnMudd tentang Kivy. Sudah bertahun-tahun sejak situasi yang dia gambarkan, dan Kivy telah berevolusi secara substansial.

Nilai jual terbesar Kivy, menurut saya, adalah kompatibilitas lintas platformnya. Anda dapat membuat kode dan menguji semuanya menggunakan lingkungan desktop apa pun (Windows / * nix dll.), Lalu kemas aplikasi Anda untuk berbagai platform yang berbeda, termasuk Android, iOS, MacOS dan Windows (meskipun aplikasi sering kali tidak memiliki tampilan dan nuansa asli).

Dengan bahasa KV milik Kivy , Anda dapat membuat kode dan membangun antarmuka GUI dengan mudah (seperti Java XML, tetapi alih-alih TextView dll., KV memiliki sendiriui.widgets yang serupa), yang menurut saya cukup mudah untuk diadopsi.

Saat ini Buildozer dan python-untuk-android adalah alat yang paling direkomendasikan untuk membangun dan mengemas aplikasi Anda. Saya sudah mencoba keduanya dan dengan tegas mengatakan bahwa mereka membuat pembangunan aplikasi Android dengan Python sangat mudah. Panduan mereka juga didokumentasikan dengan baik.

iOS adalah nilai jual besar Kivy lainnya. Anda dapat menggunakan basis kode yang sama dengan beberapa perubahan yang diperlukan melalui alat Homebrew kivy-ios , meskipun Xcode diperlukan untuk build, sebelum berjalan di perangkat mereka (AFAIK iOS Simulator di Xcode saat ini tidak berfungsi untuk build arsitektur x86) . Ada juga beberapa masalah ketergantungan yang harus dikompilasi dan dikotak-kotakkan secara manual di Xcode untuk membangun yang sukses, tetapi mereka tidak akan terlalu sulit untuk diselesaikan dan orang-orang di Kivy Google Group juga sangat membantu.

Dengan semua yang dikatakan, pengguna dengan pengetahuan Python yang baik seharusnya tidak memiliki masalah mengambil dasar-dasar dengan cepat.

Jika Anda menggunakan Kivy untuk proyek yang lebih serius, Anda mungkin menemukan modul yang ada tidak memuaskan. Ada beberapa solusi yang bisa diterapkan. Dengan pyjnius (yang sedang dalam proses) untuk Android, dan pyobjus , pengguna sekarang dapat mengakses kelas Java / Objective-C untuk mengontrol beberapa API asli.


Saya baru saja mengunduh Kivy dari situsnya. Memperlihatkan dukungan untuk Python 3.4 32 dan 64-bit, dan demo input sentuh berfungsi.
codeReview

1
@codeReview, saya hanya menggunakan Kivy dengan Python2 dan tidak punya pengalaman dengan Python3, apakah semuanya berjalan lancar?
Anzel

Saya akan memberi tahu Anda semoga segera. Tapi saya tidak punya pengalaman dengan Python di luar file perintah .py shell perintah CPython 3.4 untuk dengan cepat memecahkan masalah komputasi atau algoritma. Ini akan menjadi aplikasi pertama saya dengan GUI. Saya perlu membaca lebih banyak dokumentasi, untuk memahami bahasa Kivy, dan untuk mengikuti langkah-langkah instalasi, jadi saya tahu cara menginstal Kivi ke IDE Python pilihan saya dan mengemas APK untuk mendorong ke Android. Ini adalah proses banyak langkah, jadi mungkin tidak terlalu cepat ketika saya bisa mengatakannya.
codeReview

1
@codeReview, semoga sukses untuk perjalanan Anda. Jika ini adalah aplikasi pertama Anda, saya sangat menyarankan untuk menggunakan .kv sebagai file tata letak. Ini seperti yaml atau hanya file pohon untuk mendefinisikan widget tata letak. Jika aplikasi Anda multi-layar / tata letak, gunakan ScreenManagerkarena ini akan menghemat banyak waktu. Juga sebuah saran adalah membaca milis mereka, sekelompok orang berpengetahuan di sana yang bersedia membantu Anda.
Anzel

1
@codeReview, juga, alih-alih belajar dari aplikasi demo Kivy, Anda dapat memperoleh lebih banyak wawasan dengan mencari beberapa aplikasi kivy yang ada dan melihat bagaimana orang mengelola "widget" dan panggilan balik dalam skenario dunia nyata. Kivy tidak sulit untuk belajar sama sekali, saya akan mengatakan lebih mudah dalam hal kurva belajar daripada mengatakan, di Jawa + Android atau objektif-C + iOS
Anzel

40

Termux

Anda dapat menggunakan aplikasi Termux , yang menyediakan lingkungan POSIX untuk Android, untuk menginstal Python.

Catatan yang apt install pythonakan menginstal Python3 pada Termux. Untuk Python2, Anda perlu menggunakan apt install python2.


5
+1 untuk Termux. Lingkungan yang benar-benar luar biasa untuk bekerja. Pilihan paket yang luar biasa dalam repo, pintasan tombol volume yang praktis. Ini adalah hal yang paling dekat dengan Debian di telepon yang pernah saya temukan.
James

39

Tidak saat ini dan Anda akan beruntung mendapatkan Jython segera bekerja. Jika Anda berencana untuk memulai pengembangan Anda sekarang Anda akan lebih baik hanya dengan tetap berpegang pada Java untuk saat ini.


39

Menggunakan SL4A (yang telah disebutkan dengan sendirinya dalam jawaban yang lain) Anda dapat menjalankan sebuah full-blown web2py contoh (lainnya kerangka python web adalah kandidat kemungkinan juga). SL4A tidak memungkinkan Anda melakukan komponen UI asli (tombol, bilah gulir, dan sejenisnya), tetapi ia mendukung WebViews . WebView pada dasarnya tidak lebih dari browser web bergaris menunjuk alamat tetap. Saya percaya aplikasi Gmail asli menggunakan WebView alih-alih menggunakan rute widget biasa.

Rute ini akan memiliki beberapa fitur menarik:

  • Dalam kasus kebanyakan kerangka kerja web python, Anda sebenarnya bisa mengembangkan dan menguji tanpa menggunakan perangkat android atau emulator android.
  • Apapun kode Python Anda akhirnya menulis untuk telepon juga bisa diletakkan di server web publik dengan sangat sedikit (jika ada) modifikasi.
  • Anda dapat memanfaatkan semua hal web yang gila di luar sana: kueri, HTML5, CSS3, dll.

2
Cherrypy bekerja dengan baik, dengan dukungan ws4py websocket. Botol juga baik-baik saja di SL4A.
Carl Smith

33

QPython

Saya menggunakan aplikasi QPython . Ini gratis dan termasuk editor kode, juru bahasa interaktif dan manajer paket, memungkinkan Anda untuk membuat dan menjalankan program Python langsung di perangkat Anda.


2
Sekarang qpython menambahkan dukungan Django! Hanya itu yang saya butuhkan! Luar biasa!
swdev

27

Dari Python untuk situs android :

Python untuk android adalah proyek untuk membuat distribusi Python Anda sendiri termasuk modul yang Anda inginkan, dan membuat apk termasuk python, libs, dan aplikasi Anda.


1
@ e-satis: Terima kasih atas komentar Anda. Saya tidak melihat jawaban mana yang saya duplikat. Saya hanya bisa menebak bahwa Anda berpikir PFA sama dengan Kivy. Meskipun di-host di bawah proyek Kivy, Anda bahkan tidak perlu menggunakan Kivy untuk menggunakan PFA.
gdw2

Periksa @ tito jawaban yang dihapus di titik bawah ke PFA. Plus, ada sedikit minat menjalankan PFA tanpa kivy karena itu satu-satunya toolkit yang Anda punya.
e-satis

Itu bukan karena kivy saat ini satu-satunya toolkit yang tersedia (beberapa orang bekerja untuk mengintegrasikan orang lain) daripada itu duplikat. Harap pertimbangkan opsi lain apa adanya, dan tidak menggabungkan semua menjadi satu posting: |
tito

21

Chaquopy

Chaquopy adalah sebuah plugin untuk sistem build Gradle berbasis Android Studio. Ini berfokus pada integrasi erat dengan alat pengembangan Android standar.

  • Ini menyediakan API lengkap untuk memanggil Java dari Python atau Python dari Java , memungkinkan pengembang untuk menggunakan bahasa apa pun yang terbaik untuk setiap komponen aplikasi mereka.

  • Itu dapat secara otomatis mengunduh paket PyPI dan membuatnya menjadi sebuah aplikasi, termasuk paket asli yang dipilih seperti NumPy.

  • Ini memungkinkan akses penuh ke semua API Android dari Python, termasuk toolkit antarmuka pengguna asli ( contoh aktivitas murni-Python ).

Ini adalah produk komersial, tetapi gratis untuk penggunaan sumber terbuka dan akan tetap seperti itu.

(Saya pencipta produk ini.)



20

Berikut adalah beberapa alat yang terdaftar di situs python resmi


Ada sebuah aplikasi bernama QPython3 di playstore yang dapat digunakan untuk mengedit dan menjalankan skrip python.

Tautan playstore


Aplikasi lain bernama Termux di mana Anda dapat menginstal python menggunakan perintah

pkg install python

Tautan Playstore


Jika Anda ingin mengembangkan aplikasi, ada Python Android Scripting Layer ( SL4A ) .

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.


Anda juga dapat memeriksa PySide untuk Android , yang sebenarnya adalah binding Python untuk Qt 4.


Ada platform yang disebut PyMob di mana aplikasi dapat ditulis murni dalam Python dan compiler tool-flow (PyMob) mengonversinya dalam kode sumber asli untuk berbagai platform.


Juga periksa python-untuk-android

python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.


Coba Chaquopy A Python SDK untuk Android


Anddd ... BeeWare

BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.


2
menggunakan Termux Anda dapat menginstal python 2 dan juga $ apt install python2
M.Hefny



12

Opsi lain jika Anda mencari 3.4.2 atau 3.5.1 adalah arsip ini di GitHub.

Python3-Android 3.4.2 atau Python3-Android 3.5.1

Saat ini mendukung Python 3.4.2 atau 3.5.1 dan versi 10d dari NDK. Itu juga dapat mendukung 3.3 dan 9c, 11c dan 12

Sangat menyenangkan karena Anda cukup mengunduhnya, menjalankan make dan Anda mendapatkan .so atau .a

Saat ini saya menggunakan ini untuk menjalankan Python mentah pada perangkat android. Dengan beberapa modifikasi pada file build, Anda juga dapat membuat x86 dan armeabi 64 bit



9

Satu lagi pilihan tampaknya adalah pyqtdeploy yang mengutip dokumen adalah:

alat yang, bersama dengan alat lain yang disediakan dengan Qt, memungkinkan penyebaran aplikasi PyQt4 dan PyQt5 yang ditulis dengan Python v2.7 atau Python v3.3 atau lebih baru. Ini mendukung penyebaran ke platform desktop (Linux, Windows dan OS X) dan ke platform seluler (iOS dan Android).

Menurut Deploying aplikasi PyQt5 ke Android melalui pyqtdeploy dan Qt5, aplikasi ini dikembangkan secara aktif, meskipun sulit untuk menemukan contoh aplikasi Android yang berfungsi atau tutorial tentang cara mengkompilasi silang semua perpustakaan yang diperlukan ke Android. Ini adalah proyek yang menarik untuk diingat!


6

Lihatlah BeeWare . Saat ini menjawab pertanyaan ini masih dalam pengembangan awal. Tujuannya adalah untuk dapat membuat aplikasi asli dengan Python untuk semua sistem operasi yang didukung, termasuk Android.


Apa bedanya toi Kivy? Ini adalah python portabel yang stabil berbasis Gui
Carsten Thielepape

5

Lihatlah enaml-native yang mengambil konsep react-native dan menerapkannya pada python.

Ini memungkinkan pengguna membuat aplikasi dengan widget Android asli dan menyediakan API untuk menggunakan perpustakaan android dan java dari python.

Ini juga terintegrasi dengan android-studio dan berbagi beberapa fitur dev bagus yang bereaksi seperti pemuatan kode dan debugging jarak jauh.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.