Although it's possible to develop for Android using (almost) entirely command-line tools, Google's documentation isn't geared for that. So, I thought I'd write up my experiences.
First, install Java. I have Java 1.8:
whiteandnerdy:example ppelleti$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
Next, download Android Studio. Go ahead and install Android
Studio. (On OS X, this involved opening the .dmg
and then dragging
Android Studio to Applications.) Then, run Android Studio, because
this is necessary to finish the installation. Once the installation
is finished, you can quit Android Studio.
Android Studio installed the Android SDK somewhere. On OS X, this is
~/Library/Android/sdk
, but on Linux or Windows it would be somewhere
different.
You'll need to set a couple environment variables in your shell. (And
you'll probably want to set them in your .profile
, too.) First, set
ANDROID_HOME
to the directory where the SDK is, such as
~/Library/Android/sdk
. Then, add $ANDROID_HOME/tools
and
$ANDROID_HOME/platform-tools
to PATH
.
Now, just type "android" to launch the SDK Manager (a GUI program), which will let you download additional API levels. (I'm going to use API level 21 in this example.)
android create project
can be used to create a new project from the
command line, like this:
android create project \
--activity ExampleActivity \
--package org.funwithsoftware.example \
--target android-21 \
--path example \
--gradle \
--gradle-version 2.1.3
This creates a new directory named example
in the current
directory, containing an example program with a single Activity
named org.funwithsoftware.example.ExampleActivity
. It targets
API Level 21.
Counter-intuitively, --gradle-version
is not the version of
Gradle to use. Instead it is the version of the
Android Gradle plugin to use.
Anyway, in theory the example
directory should contain a complete,
ready-to-build example project. In practice, I ran into a few
problems that needed to be fixed.
First, in the file gradle/wrapper/gradle-wrapper.properties
, change
the line:
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
to:
distributionUrl=http\://services.gradle.org/distributions/gradle-2.14.1-all.zip
This is where you actually set the Gradle version, and for some
reason, android project create
sets a Gradle version that the
Android Gradle plugin is not happy with.
Next, edit build.gradle
, and change:
runProguard false
to:
minifyEnabled true
as explained in this Stack Overflow post.
At this point, cd to the example
directory, and you should be able
to type:
./gradlew tasks
which will list all of the possible Gradle tasks available.
To just build your app, type:
./gradlew assemble
However, if you have an Android phone attached (and have enabled developer mode), you can do:
./gradlew installDebug
which will first do assemble
, and will then install the app on your
phone.
At this point, the app should look like:
Although specifying --target android-21
sets compileSdkVersion
in
build.gradle
, it doesn't set minSdkVersion
in
AndroidManifest.xml
. To be able to use newer Android APIs, and to
get a more updated look, edit src/main/AndroidManifest.xml
and add
the line:
<uses-sdk android:minSdkVersion="21"/>
right before the </manifest>
line.
Build and install the app again, and now it has a more modern titlebar:
Instead of running android project create
and then making the
changes mentioned above, you can just start with this repository, and
run change-package-name.pl
.