Python là một ngôn ngữ lập trình rất phổ biến do một số tính năng mong muốn mà nó có như dễ đọc, dễ học, linh hoạt, v.v.
Do đó, nó đã được áp dụng rộng rãi trong các lĩnh vực hoặc khía cạnh khác nhau của lập trình máy tính như viết kịch bản, phát triển web, an ninh mạng và học máy.
Python có nhiều thư viện và khung giúp nó thích ứng với việc sử dụng trong các lĩnh vực khác nhau này, ví dụ: Django và Flask là các khung Python được sử dụng trong phát triển web; Pandas, Numpy, Scikit-learn, PyTorch, v.v., được sử dụng trong máy học, trong khi các thư viện Python như Scapy, Beautiful Soup và Cryptography được sử dụng trong an ninh mạng.
Một lĩnh vực lập trình mà Python thực sự không được sử dụng rộng rãi là phát triển di động.
Điều này là do thực tế là Python thực thi tương đối chậm (do đó, các ứng dụng Python có thể gặp khó khăn trên các thiết bị di động có thông số kỹ thuật thấp) và cũng do thực tế là Python, một ngôn ngữ cấp cao được thông dịch, còn lâu mới có thể không hoạt động tốt với ngôn ngữ mẹ đẻ của hệ điều hành di động (tức là Java dành cho Android và Objective-c/Swift dành cho iOS), thường là các ngôn ngữ cấp trung được biên dịch.
Tuy nhiên, thiếu sót này của Python trong phát triển di động là một vấn đề đối với nhiều lập trình viên vì Python về cơ bản là ngôn ngữ đầu tiên phổ biến nhất cho người mới bắt đầu lập trình và họ có thể muốn nghiên cứu sâu hơn về phát triển di động. thiết bị đang được sử dụng trên toàn thế giới.
Ngoài ra, các chuyên gia về Python đã sử dụng ngôn ngữ này để phát triển web, trí tuệ nhân tạo hoặc an ninh mạng cũng có thể muốn chuyển đổi phần mềm của họ sang ứng dụng dành cho thiết bị di động vì lý do này hay lý do khác.
Đó chắc chắn là một vấn đề tôi gặp phải sau khi học Python và quyết định tạo ứng dụng dành cho thiết bị di động để lấy một số tập lệnh mà tôi đã viết cho những người dùng có thể thấy chúng hữu ích.
Tuy nhiên, mặc dù việc sử dụng Python để phát triển di động không phổ biến, nhưng không phải là không thể. Trên thực tế, có một vài khung và thư viện dành cho phát triển di động với Python và một số có cộng đồng khá lớn.
Một số trong số đó là Python-for-Android, Pymob, PyQT(pyqtdeploy), Kivy, RenPi và Beeware.
Một số khung này cũng kế thừa cú pháp thân thiện của Python để phát triển giao diện người dùng (ví dụ: ngôn ngữ thiết kế Kivy). Điều này làm cho Python trở thành ngôn ngữ phát triển ứng dụng di động rất hữu ích khi được sử dụng cho các ứng dụng nhỏ hoặc tạo mẫu nhanh.
Tuy nhiên, có rất nhiều vấn đề phát sinh khi cố gắng biên dịch hoặc đóng gói một ứng dụng Python hoàn chỉnh cho thiết bị di động. Ít nhất, đây là trải nghiệm của tôi với Kivy và nghiên cứu của tôi cho thấy đó là một vấn đề thường gặp.
Một lý do cho vấn đề này có lẽ là tần suất các thư viện di động nhẹ của Python không tận dụng các tài nguyên gỡ lỗi phức tạp của Android studio ở mức độ mà các khung phổ biến như Flutter và React Native làm được.
Bài viết này khám phá thêm về phát triển di động với Python liên quan đến vấn đề đóng gói này và các phương pháp hay nhất để khắc phục chúng.
Kivy: Đây thực sự là một khung Python đa nền tảng cho phép người dùng tạo ứng dụng cho windows, mac, Linux, Android và iOS. Kivy sử dụng ngôn ngữ thiết kế rõ ràng để phát triển giao diện người dùng tương tự trên tất cả các nền tảng. Nó sử dụng Python thuần túy để lập trình ứng dụng và các gói (ví dụ: buildozer được sử dụng để triển khai mã cho các nền tảng cụ thể).
Pyqtdeploy: Điều này cung cấp một bộ công cụ để đóng gói các ứng dụng hoặc thư viện PyQt CLI và GUI cho máy tính để bàn và thiết bị di động. Các dự án được đóng gói bằng công cụ này có thể được thương mại hóa do có giấy phép miễn phí.
Beeware: Đây là một bộ công cụ để xây dựng các ứng dụng Python bao gồm Toga - bộ công cụ dành cho giao diện người dùng đa nền tảng, Batavia - một trình xử lý Javascript và Briefcase để đóng gói các ứng dụng dành cho thiết bị di động và máy tính để bàn. Các ứng dụng Beeware có giao diện dành riêng cho nền tảng.
Mặc dù quá trình phát triển thường suôn sẻ và đơn giản, nhưng việc đóng gói ứng dụng Python cho bất kỳ nền tảng nào thường gặp vấn đề. Ngoài thiết bị di động, tôi cũng gặp sự cố này khi cố gắng đóng gói tệp exe Python bằng Pyinstaller.
Vấn đề càng trở nên trầm trọng hơn khi các thư viện python của bên thứ ba được sử dụng trong ứng dụng.
Theo kinh nghiệm của tôi, cơn bão lỗi này khi đóng gói ứng dụng có hai lý do chính:
Các thư viện phát triển di động Python có ít hoặc không hỗ trợ phát triển ứng dụng thời gian thực với trình giả lập Android hoặc thiết bị Android.
Các nhà phát triển di động sử dụng Flutter hoặc phản ứng gốc sẽ đánh giá cao mức độ hữu ích của việc sử dụng thiết bị ảo hoặc thiết bị vật lý trong khi xây dựng ứng dụng của bạn. Điều này giúp phát hiện sớm tất cả các loại lỗi cú pháp, thời gian chạy và khả năng tương thích để khắc phục nhanh chóng.
Tuy nhiên, với các thư viện python, các nhà phát triển thường phải xây dựng ứng dụng trên thiết bị máy tính để bàn của họ trước khi đóng gói phiên bản APK cho thiết bị di động.
Điều này có thể dẫn đến nhiều vấn đề về tính tương thích khi các công cụ Android hoặc iOS bắt đầu tương tác với mã của ứng dụng.
Do đó, vấn đề là một ứng dụng đã được xây dựng cho môi trường máy tính để bàn đang được đóng gói cho thiết bị di động.
Điều này có vẻ khá rõ ràng, nhưng các nhà phát triển phải ghi nhớ điều này khi đóng gói ứng dụng di động Python vì thiết bị đầu cuối có thể không chỉ ra điều đó (như trường hợp của tôi).
Điều này có thể lãng phí thời gian phát triển quý giá và thậm chí có thể khiến nhà phát triển nản lòng đến mức bỏ cuộc.
Sử dụng thư viện của bên thứ ba.
Tôi thấy điều này cần thiết phải chỉ ra do kinh nghiệm của tôi; khi cố gắng đóng gói một chương trình Python, tôi đã tạo nó dưới dạng tệp thực thi của windows.
Tôi bị sốc, trong khi chương trình đang hoạt động tốt trên thiết bị đầu cuối Python, tôi đã nhận được khiếu nại về tính không tương thích từ các thư viện của bên thứ ba khi đóng gói ứng dụng.
Điều này cũng có thể xảy ra khi đóng gói chương trình python dưới dạng ứng dụng di động.
Hy vọng rằng thiết bị đầu cuối có thể không chỉ ra tất cả các lỗi hiện có.
Nghiên cứu tính tương thích của các phiên bản thư viện được sử dụng.
Xây dựng giao diện người dùng động có thể thích ứng với thiết bị di động mà không gây tràn.
Sử dụng bất kỳ lệnh gỡ lỗi bổ sung nào có sẵn để có báo cáo lỗi chi tiết.
Sử dụng các ứng dụng sửa lỗi như trình đọc logcat để nhận các báo cáo đầu cuối bổ sung khi ứng dụng của bạn đang chạy trên thiết bị di động.