Episode: 1562
Title: HPR1562: Android For The cli/c Junkie
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr1562/hpr1562.mp3
Transcribed: 2025-10-18 05:07:30

---

This episode of HBR is brought to you by AnanasThost.com.
Get 15% discount on all shared hosting with the offer code HBR15.
That's HBR15.
Better web hosting that's Aniston Fair at AnanasThost.com.
Hello and welcome to our show, this will be a fun one.
My name is Sikflops and you're listening to another edition of Hacker Public Radio.
In this episode we're going to be bringing together my three favorite things,
Android, the command line and C. We're bringing these three things together so that we can program
Android apps on the command line that are written in C. Then we'll compile an example app I've
written for you called Pants that plays an MP3. Writing apps in C on Android is possible using
the freely available Android NDK or native development kit. The example I've written,
I've packaged with SDL2, SDL2 image, lib mad, lib jpeg and lib png.
So that's right awesome. You can use it in your demo framework, which is what I'm doing.
The example simply runs in landscape mode and plays an MP3 all using C.
So here we go.
First things first, this is off for Linux. The Android NDK uses pre-compiled GCZ cross-compala suite
that's compiled for Linux. So let's get out our Linux box. You'll need Java installed.
How to install it is unique for every distribution. On CentOS I did yum installed Java
Astrich to install Java. Google help you install Java for your platform. Most platforms I imagine
is a yum or an app to get away. I can only tell you about CentOS because that's the only
thing I've installed the NDK on. Once you've got Java installed, Mozeon over to developer.android.com
and download the Android SDK. There's a readme in there that tells you to run tools,
slash Android update SDK, dash dash no UI. I suggest you do that. It'll take a while to complete
because it's installing lots of stuff for multiple Android APIs.
Now this is not the typical way to install what just happened, but I found it's one way to do it
on CentOS. First thing I did was I moved Android SDK to user local share, slash Android SDK Linux.
In that directory, I also created a bin directory and put wrappers for every utility found in the
tools directory in there. The wrappers simply run an absolute path of the corresponding utility
with all arguments copied. And after that, I edited Etsy slash profile.d and added android.sh
exporting the path of the newly created bin directory. Making that bin directory was kind of
not a way to install the Android SDK, but I found it was the simplest way to do it after a lot of
frustration. Type Android on the command line to test it. You'll get some errors, but as long
as their Java shares, that means you're on the right track. Next, we need the Android NDK.
You can download that from developer.android.com. Again, its installation is pretty straightforward.
Just pop it in user local share and modify Etsy profile.d slash Android.sh to export an additional
path to that directory. All we want from this is the utility NDK build in our path.
After this, we need a pochi ant. You can find ant at ant.apochie.org. Pop that again in user
local share and edit Etsy profile.d slash android.sh to export ant home. All caps with an underscore
to that directory. You also want to export Java home to the containing directory of your Java
command. And that's it. That's how you install everything. It's pretty straightforward.
Now, continuing on, we ought to install my app. This example is based on MGR Hardee's work.
It's extended to the new SSTL containing my favorite libraries. I made it so you can easily
modify it to suit your own app. Download this at theatasilva.com slash pants.tar.gz.
All the links will be in the show notes. Once you've downloaded that, untard into your
favorite directory and type make. I'll take a while, but it should eventually produce app.apk
in the same directory, if all is well with the world. App.apk is your application package.
Signed by the Android debug key. If you want to sign it with your own dev key, type make release.
And that'll produce app release unsigned.apk. Using Jars signer, you can sign it,
then you'll need to run zip align on the app before publishing it. All this information about
signing apps can be found from the Android project. First thing you'll notice about the app is
that it's called pants. You want to open up the readme file, and that will have instructions on
how to change the name, change the icon, the permissions, and whatnot. The Android project
source tree for pants looks pretty simple. We have a few directories, the asset directory that
contains our app resources. SDLs are WOPS reads into this directory. Then we have JNI. This is where
all our C source code goes. I believe JNI stands for Java Native Interface. Then after that,
we have res. This contains things like strings, our layout XML, and our icon. And then finally,
we have SRC. This contains our Java source code. Where you want to put your source code is in Android
project slash JNI. That's the JNI the JNI directory that we just talked about slash SRC.
Keep in mind that you want your entry function to still be called STL underscore mean.
And that's that's pretty much how you do it. Help with this information. You can go ahead and
start writing your own C Android applications. Take care everyone, and thank you for listening. Bye-bye.
You've been listening to Hacker Public Radio at Hacker Public Radio. We are a community podcast
network that releases shows every weekday Monday through Friday. Today's show, like all our shows,
was contributed by an HPR listener like yourself. If you ever thought of recording a podcast,
then click on our contributing to find out how easy it really is. Hacker Public Radio was
founded by the digital dog pound and the infonomicon computer club, and it's part of the binary
revolution at binref.com. If you have comments on today's show, please email the host directly,
leave a comment on the website, or record a follow-up episode yourself. Unless otherwise status,
today's show is released under Creative Commons, App Tribution, share a light 3.0 license.
