Revisiting Building Android Apps in Python Using Kivy with Android Studio

One of the books I read on Kivy, a Python cross-platform GUI framework, is Building Android Apps in Python Using Kivy with Android Studio: With Pyjnius, Plyer, and Buildozer by Ahmed Fawzy Mohamed Gad (Apress, 2019). My comments on the book, which focused on it not being a good match for my learning needs, sounded negative. Perhaps unnecessarily so.

Cover of Building Android Apps in Python Using Kivy with Android Studio in Google Play Books on a Pixel 2 XL
The cover of Building Android Apps in Python Using Kivy with Android Studio in Google Play Books on my Pixel 2 XL.

The author, Ahmed Fawzy Mohamed Gad, emailed me concerning my feedback. He provided more context on how he researched the market to position the book, planned the content, and selected the topics to cover. This is valuable information, so I’m publishing it here with his permission. Here’s what Ahmed wrote:

At first, thanks for the feedback you posted considering my book titled "Building Android Apps in Python Using Kivy with Android Studio". I read your feedback carefully and managed to send this e-mail to thank you for the time spent reading the book. 
As you said, my book does not cover many widgets about Kivy compared to the other book you mentioned which is titles "Kivy - Interactive Applications and Games in Python". Before preparing my book, I read this book and found that it discusses many Kivy widgets and some aspects of Kivy and the author really did a great job. 
Based on your feedback, I have some comments:
Publishing a book on a topic that someone touched before makes you think about something new to do. Talking about more widgets again in my book might not be a good idea because this book did that well. I preferred to continue where others stopped. Thus, I preferred to add some projects that make use of the widgets. So, my target is not "what are the widgets" but it is "how to use the widgets". 
Regarding using Android Studio to building the Android apps, the motivation behind this is that Kivy not currently supporting everything in Android and has some limitations. Plyer is not able to do everything at the current time. Thus, editing the generated Android Studio projects allows the developers to use Java for making some edits.  
You mentioned that developers use Kivy to avoid using Java but there are some situations that developers have to use Java. For example, you have to edit the Android Studio project to edit the presplash screen. As long as Kivy is not able to do everything in Android, then developers have to edit the project in Android Studio. Just using Kivy will build apps with limited features. 
Again I thank you for the time spent reading the book and leaving your feedback and hope you have time to read this e-mail.

First off, I’d like to thank Ahmed again for reaching out to me.

It’s an opportunity to clarify that, although I was looking for an introductory learning resource on Kivy covering the basic widgets and layouts, his goal was to differentiate from existing books and the official documentation. So Building Android Apps in Python Using Kivy with Android Studio may be more appropriate as a second book on Kivy rather than an introductory guide.

Another way my learning needs differ from Ahmed’s goals is in using only Python for developing Kivy apps for Android.

Java is too verbose and low-level for me. So I prefer to use only Python and, at least initially, work within the limits of what the language can do with Kivy on Android. But Java is the main language for Android developers, who are already familiar with Android Studio and may want to extend Kivy projects to add platform-specific features Python alone doesn’t support. It makes sense for a Kivy book to cover this.

There are parts of Ahmed’s book I did find valuable but didn’t elaborate on much in my earlier comments.

For example, one of the projects the book presents is an app for capturing images with the camera of an Android device and streaming a live feed to a Flask web app that visualizes them. This project is especially relevant to Android development as many apps have a remote backend for storing or processing data in the cloud.


Popular posts from this blog

Why I Stopped Using My Xiaomi Mi Band 4

Two Books About the Kivy GUI Framework

StreamYard as an Alternative to Hangouts on Air: First Impressions