BuildStendhalForAndroid: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>AntumDeluge
Add instructions to specify a signing keystore
imported>AntumDeluge
Building from Command Line: re-organize to make ant preferred build method
 
(7 intermediate revisions by the same user not shown)
Line 34: Line 34:
'''''IMPORTANT:''' Before you can build from the command line/terminal, you must have a [[VisualGuideToBuildingStendhalStep1|Java compiler]] provided by a [https://www.oracle.com/java/technologies/downloads/ Java Development Kit (JDK)] installed.''
'''''IMPORTANT:''' Before you can build from the command line/terminal, you must have a [[VisualGuideToBuildingStendhalStep1|Java compiler]] provided by a [https://www.oracle.com/java/technologies/downloads/ Java Development Kit (JDK)] installed.''


=== Gradle ===
=== Ant ===


<span style="color:blue;">''Recommended''</span>
The [https://gradle.org/ Gradle Build Tool] is used for building. The necessary tools are already included with the source code. Two scripts are provided for executing the build: <span style="color:green;">android/gradlew</span> for Unix/Linux systems, & <span style="color:green;">android/gradlew.bat</span> for Windows.


As with other instructions on building from the command line, the Android client can also be built with an [https://ant.apache.org/ Apache Ant target]. The Ant target is a wrapper that calls the [[BuildStendhalForAndroid#Gradle|Gradle]] script and passes parameters to it. The same conditions related to invoking the Gradle scripts directly apply to using ant.
In order for the build to complete, the scripts must know where the SDK libraries are located. The script will check the '''<span style="color:green;">ANDROID_SDK_ROOT</span>''' environment variable, or it will parse the value of '''<span style="color:green;">sdk.dir</span>''' in the <span style="color:green;">android/local.properties</span> file ''('''NOTE:''' Windows users must use double backslashes for directories (\\))''.


'''''See also: [[BuildStendhalForAndroid#Signing_Packages|section on signing packages]]'''''
Example <span style="color:green;">local.properties</span> for Unix/Linux:
<pre>
sdk.dir=/path/to/sdk/root
</pre>


From the Stendhal source root directory, execute the following.
Example <span style="color:green;">local.properties</span> for Windows:
<pre>
sdk.dir=C:\\path\\to\\sdk\\root
</pre>

'''''NOTE:''' On Windows, if you used Android Studio to download the SDK, it will be located in <span style="color:green;">C:\\Users\\<username>\\AppData\\Local\\Android\\Sdk</span>.''

There are three build types available: <span style="color:darkgreen;">assembleRelease</span>, <span style="color:darkgreen;">assemblePrerelease</span>, & <span style="color:darkgreen;">assembleDebug</span>. From a command line or terminal, move into the <span style="color:green;">android</span> sub-directory & execute the following.


Unix/Linux example:
Unix/Linux example:
<pre>
<pre>
# with env variable set or sdk.dir set in local.properties
# with env variable set or sdk.dir set in local.properties
$ ant android
$ ./gradlew assembleRelease


# manually setting env variable
# manually setting env variable
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ./gradlew assembleRelease
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ant android
</pre>
</pre>


Windows '''cmd''' example (note that you do not need to include the ".bat" filename extension):
Windows '''cmd''' example:
<pre>
<pre>
# with env variable set or sdk.dir set in local.properties
# with env variable set or sdk.dir set in local.properties
> ant android
> gradlew assembleRelease


# manually setting env variable (do not use quotes)
# manually setting env variable (do not use quotes)
> set ANDROID_SDK_ROOT=C:\\path\\to\\sdk\\root
> set ANDROID_SDK_ROOT=C:\\path\\to\\sdk\\root
> ant android
> gradlew assembleRelease
</pre>
</pre>


The resulting .apk packages will be located in the <span style="color:green;"><source root>/build</span> directory.
If <span style="color:darkgreen;">build</span> is used as the argument (<code>gradlew build</code>), it will execute all build types.


The build type can be set manually using the <span style="color:green;">android.build</span> property. Value can be one of <span style="color:green;">assembleRelease</span> or <span style="color:green;">assembleDebug</span>. The default is <span style="color:green;">assembleDebug</span>.
After build completes, the resulting .apk packages will be located in <span style="color:green;"><source root>/build/build_android_client/outputs/apk</span>.


<pre>
==== Signing Packages ====
$ ant android -Dandroid.build=assembleRelease
</pre>


Alternatively, an argument line can be passed to Gradle using the <span style="color:green;">gradle.params</span> property:
On most Android systems packages will [https://developer.android.com/studio/publish/app-signing need to be signed] in order to work. By default Gradle will sign packages using a debugging keystore which must by installed in your home directory. You can specify a different keystore by creating a file <span style="color:darkblue;">android/keystore.properties</span> with contents as follows:


<pre>
<pre>
$ ant android -Dgradle.params="assembleRelease assembleDebug"
storeFile=<path-to-keystore-file>
storePassword=<store-password>
keyPassword=<key-password>
keyAlias=<key-alias>
</pre>
</pre>


=== Ant ===
=== Gradle ===


The [https://gradle.org/ Gradle Build Tool] is used for building. The necessary tools are already included with the source code. Two scripts are provided for executing the build: <span style="color:green;">app/android/gradlew</span> for Unix/Linux systems and <span style="color:green;">app/android/gradlew.bat</span> for Windows.
As with other instructions on building from the command line, the Android client can also be built with an [https://ant.apache.org/ Apache Ant target]. The same conditions related to invoking the Gradle scripts directly apply to using ant.


In order for the build to complete, the scripts must know where the SDK libraries are located. The script will check the '''<span style="color:green;">ANDROID_SDK_ROOT</span>''' environment variable, or it will parse the value of '''<span style="color:green;">sdk.dir</span>''' in the <span style="color:green;">app/android/local.properties</span> file ''('''NOTE:''' Windows users must use double backslashes for directories (\\))''.
From the Stendhal source root directory, execute the following.

Example <span style="color:green;">local.properties</span> for Unix/Linux:
<pre>
sdk.dir=/path/to/sdk/root
</pre>

Example <span style="color:green;">local.properties</span> for Windows:
<pre>
sdk.dir=C:\\path\\to\\sdk\\root
</pre>

'''''NOTE:''' On Windows, if you used Android Studio to download the SDK, it will be located in <span style="color:green;">C:\\Users\\<username>\\AppData\\Local\\Android\\Sdk</span>.''

There are two build types available: <span style="color:darkgreen;">assembleRelease</span> and <span style="color:darkgreen;">assembleDebug</span>. From a command line or terminal, move into the <span style="color:green;">app/android</span> sub-directory and execute the following.


Unix/Linux example:
Unix/Linux example:
<pre>
<pre>
# with env variable set or sdk.dir set in local.properties
# with env variable set or sdk.dir set in local.properties
$ ./gradlew assembleRelease
$ ant dist_client_android


# manually setting env variable
# manually setting env variable
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ant dist_client_android
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ./gradlew assembleRelease
</pre>
</pre>


Windows '''cmd''' example:
Windows '''cmd''' example (note that you do not need to include the ".bat" filename extension):
<pre>
<pre>
# with env variable set or sdk.dir set in local.properties
# with env variable set or sdk.dir set in local.properties
> gradlew assembleRelease
> ant dist_client_android


# manually setting env variable (do not use quotes)
# manually setting env variable (do not use quotes)
> set ANDROID_SDK_ROOT=C:\\path\\to\\sdk\\root
> set ANDROID_SDK_ROOT=C:\\path\\to\\sdk\\root
> gradlew assembleRelease
> ant dist_client_android
</pre>
</pre>


If <span style="color:darkgreen;">build</span> is used as the argument (<code>gradlew build</code>), it will execute all build types.
The resulting .apk packages will be located in the <span style="color:green;"><source root>/build</span> directory.


The build type can be set manually using the <span style="color:green;">android.build</span> property. The default is <span style="color:green;">assembleDebug</span>.
After build completes, the resulting .apk packages will be located in the <span style="color:green;"><source root>/build</span> directory.


==== Signing Packages ====
<pre>
$ ant dist_client_android -Dandroid.build=assembleDebug
</pre>


On most Android systems packages will [https://developer.android.com/studio/publish/app-signing need to be signed] in order to work. By default Gradle will sign packages using a debugging keystore which must be installed in your home directory. You can specify a different keystore by creating a file <span style="color:darkblue;">app/android/keystore.properties</span> with contents as follows:
=== Setting Revision Suffix ===


The compiled .apk packages will be versioned with the date of build. A custom revision suffix can be added by setting the <span style="color:darkgreen;">android.rev</span> property. If invoking gradle script directly, use the '''''-P''''' switch. If calling ant, use the '''''-D''''' switch.

Example usage:
<pre>
<pre>
storeFile=<path-to-keystore-file>
# calling gradle script directly
storePassword=<store-password>
$ ./gradlew assembleDebug -Pandroid.rev=1
keyPassword=<key-password>

keyAlias=<key-alias>
# calling ant target
$ ant dist_client_android -Dandroid.rev=1
</pre>
</pre>

Example output: ''stendhal-webview-{{#time:Ymd}}-1-debug.apk''