BuildStendhalForAndroid: Difference between revisions

Content deleted Content added
imported>AntumDeluge
Ant: add note
imported>AntumDeluge
Building from Command Line: re-organize to make ant preferred build method
 
(34 intermediate revisions by the same user not shown)
Line 3:
 
= WebView Client =
 
''<span style="color:red;">'''NOTICE:''' The Android WebView client is not currently implemented in the upstream source code. You can get the experimental source from https://github.com/AntumDeluge/arianne-stendhal/tree/android_webview.</span>''
 
== Introduction ==
Line 12 ⟶ 10:
=== What is a WebView Client? ===
 
WebView is an application that allows embedding or linking to websites or HTML code inside Android apps. The Stendhal WebView client is an app that simply uses this technology to link to the Stendhal web client which is accessed at [[stendhalgame:client/stendhal.html|https://stendhalgame.org/client/stendhal.html]].
 
== Android SDK ==
Line 35 ⟶ 33:
 
'''''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.''
 
=== Ant ===
 
<span style="color:blue;">''Recommended''</span>
 
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]. UnlikeThe usingAnt thetarget Gradleis scriptsa directly,wrapper that calls the ant[[BuildStendhalForAndroid#Gradle|Gradle]] targetscript ignoresand thepasses <spanparameters style="color:green;">android/local.properties</span>to fileit. SoThe same conditions related to invoking the environmentGradle variablescripts mustdirectly beapply setto using ant.
 
'''''See also: [[BuildStendhalForAndroid#Signing_Packages|section on signing packages]]'''''
 
From the Stendhal source root directory, execute the following.
 
Unix/Linux example:
<pre>
# with env variable set or sdk.dir set in local.properties
$ ant android
 
# manually setting env variable
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ant dist_client_androidandroid
</pre>
 
Windows '''cmd''' example:
<pre>
# with env variable set or sdk.dir set in local.properties
> ant android
 
# manually setting env variable (do not use quotes)
> set ANDROID_SDK_ROOT=C:\\path\\to\\sdk\\root
> ant android
</pre>
 
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. 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>.
 
<pre>
$ 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:
 
<pre>
$ ant android -Dgradle.params="assembleRelease assembleDebug"
</pre>
 
=== 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.
 
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 (\\))''.
 
Example <span style="color:green;">local.properties</span> for Unix/Linux:
Line 52 ⟶ 93:
</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:
<pre>
# with env variable set or sdk.dir set in local.properties
$ ./gradlew buildassembleRelease
 
# manually setting env variable
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ./gradlew buildassembleRelease
</pre>
 
Line 68 ⟶ 109:
<pre>
# with env variable set or sdk.dir set in local.properties
> gradlew buildassembleRelease
 
# manually setting env variable (do not use quotes)
> set ANDROID_SDK_ROOT=C:\\path\\to\\sdk\\root
> gradlew buildassembleRelease
</pre>
 
If <span style="color:darkgreen;">build</span> is used as the argument (<code>gradlew build</code>), it will execute all build types.
After build completes, the resulting .apk packages will be located in <span style="color:green;"><source root>/build/build_android_client/outputs/apk</span>.
 
After build completes, the resulting .apk packages will be located in the <span style="color:green;"><source root>/build/build_android_client/outputs/apk</span> directory.
=== Ant ===
 
==== Signing Packages ====
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]. Unlike using the Gradle scripts directly, the ant target ignores the <span style="color:green;">android/local.properties</span> file. So the environment variable must be set.
 
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:
From the Stendhal source root directory, execute the following.
 
Unix/Linux example:
<pre>
storeFile=<path-to-keystore-file>
# with env variable set
storePassword=<store-password>
$ ant dist_client_android
keyPassword=<key-password>
 
keyAlias=<key-alias>
# manually setting env variable
$ ANDROID_SDK_ROOT="/path/to/sdk/root" ant dist_client_android
</pre>
 
'''''NOTE:''' building with ant on Windows not currently supported''
 
The resulting .apk packages will be located in the <span style="color:green;"><source root>/build</span> directory.