Cuperino / QPrompt-Teleprompter

Teleprompter software for all video creators. Built with ease of use, productivity, control accuracy, and smooth performance in mind.
https://qprompt.app
GNU General Public License v3.0
355 stars 22 forks source link

Update Android build instructions #183

Open nanonerd-io opened 1 year ago

nanonerd-io commented 1 year ago

Greetings,

I'm trying to build QPrompt for Android to install on one of my old Nvidia Shield Tablets. The Shield Tablet would make a perfect teleprompter (in fact, any old Android tablet is perfect to re-purpose into a dedicated full-time teleprompter). When following the build instructions from one of the issues (dated January 2022), I keep getting the following ECM error when running one of the first commands inside of the docker container

* ECM (required version >= 5.240.0), Extra CMake Modules., <https://commits.kde.org/extra-cmake-modules>

I'm running this command

/opt/helpers/build-kde-project ki18n Frameworks

Is there updated instructions? Also, I'd like to build for 32-bit since the Shield is not 64-bit. I think there's value in building 32-bit because as mentioned previously, it could keep lots of old Android tablets from the landfill if they can be re-purposed as dedicated teleprompters. My build environment is more than sufficient. Ubuntu 22.04 VM with 4-cores and 8 GB of RAM. Lots of hard drive space

Thanks

Cuperino commented 1 year ago

Hi @nanonerd-io,

The most current version of the build instructions can be found and will continue to be found at: https://github.com/Cuperino/QPrompt/blob/main/build.md (At least for as long as QPrompt continues to be an independent project and not a part of KDE, which it may become years into the future.)

Having said that, the instructions for Android haven't been updated to reflect upstream changes since the instructions that you followed were written. I tried following those instructions and I can confirm that they no longer work because the extra-cmake-modules isn't being installed automatically. I tried installing it in the same way as other packages, and it installs, but the other packages can't see it, so it continues to be as if the dependency was unmet.

I need to look into this more. I'm presently traveling and don't have access to my Android phones (which no longer run Android, so I'd also need to install it. One runs Manjaro-ARM and the other Ubuntu Touch). It will take me some time to test and update the instructions... If I can find a solution that might work, I will post it here with no guarantee, and update the instructions later when I can confirm that the resulting APK works on my phones.

I wouldn't recommend that you do the following, unless it's something you'd actually like to try. If you could get the tablet to run a Linux version that's compatible with ARM64 Flathub, you could just install QPrompt from the Flatpak and it will run much like the Android version would (with a few more features you wouldn't need on a tablet).

Unfortunately, Flathub support is arm64 and amd64 only. No 32 bit builds of QPrompt are unsupported under any architecture. The reason why is that it's too much work for me. You'd have to cross-compile it because QPrompt won't compile with less than 6 GB RAM, and 32 bit systems limit each process to a maximum of 2 GB of usable RAM. If you cripple Chinese font support, you can get to build on a 32 bit system with down to 1 GB of RAM without cross-compiling, but you'd still need to build each and every dependency by yourself, because no up-to-date pre-compiled binaries are available for 32 bit architectures.

Last but not least, the build systems used for distribution, minus the CPack (which is presently only used to create Deb packages), can only package binaries for 64 bit architectures, meaning your build will be limited to the system you've compiled it for, unless you write new packaging code, ideally based on CPack which would be help the project, because then we could move away from our current tools for making Windows, Mac, and AppImage builds, and expand support to more architectures, such as x86 and RISC-V.

I hope this information helps a little. I will keep looking into this later, when I've returned from my trip.

nanonerd-io commented 1 year ago

Hello Javier,

Thank you so much for the quick and detailed message. I really appreciate it.

I'm currently in the process of installing Ubuntu on my Google Pixel Slate (which is basically an Intel based Chromebook in tablet form). That way, it would be running Linux natively and then I can install either the flatpak, deb or snap. I'll keep you posted

Thank you so much for this great project!

Cuperino commented 1 year ago

Hello,

Ubuntu on a Chromebook would work, if it’s a recent version (21.10 or later).

Since you’re experimenting with mobile form factor devices, I will save you sometime and let you know that Ubuntu Touch will not work. That is because Ubuntu Touch is currently based on Ubuntu 20.04, which provides Qt and KDE packages that are too old to work with QPrompt. You’ll either need to build the libraries yourself or use the Flatpak, which won’t have enough space to install QPrompt’s dependencies because of the way Ubuntu Touch’s filesystem is set up.

To build the libraries yourself, QPrompt needs:

Hope you don’t need to do any of this. Let me know how it goes! -- Javier O. Cordero Pérez Full Stack Web Developer Qt Software Developer

nanonerd-io commented 1 year ago

Thanks for the info Javier. The Google Pixel Slate is an interesting device in that it is an Intel based Chromebook tablet. So I actually would be installing stock 64-bit Ubuntu 22.04 on it. At that point, it is basically a regular Linux computer.

Thanks again for all of your advice and information. It's greatly appreciated, as is this project

Cheers!