summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMorgan Jones <me@numin.it>2024-05-27 19:10:28 -0700
committerMorgan Jones <me@numin.it>2024-06-03 23:01:44 -0700
commit7f03a67b0b4fa5743f3eccfa3eeaebe68e49b15e (patch)
tree764c3b963c0ff204e961740c88fb93f6dcdaee99 /doc
parent859a6056d3311b4292b8585b86d3b35fbe483b9e (diff)
{doc/android,release-notes}: update android-studio and androidenv
Diffstat (limited to 'doc')
-rw-r--r--doc/languages-frameworks/android.section.md122
1 files changed, 73 insertions, 49 deletions
diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md
index 1c5687f8ebf1..d6ed1f35cb0a 100644
--- a/doc/languages-frameworks/android.section.md
+++ b/doc/languages-frameworks/android.section.md
@@ -3,10 +3,36 @@
The Android build environment provides three major features and a number of
supporting features.
+## Using androidenv with Android Studio {#using-androidenv-with-android-studio}
+
+Use the `android-studio-full` attribute for a very complete Android SDK, including system images:
+
+```nix
+buildInputs = [ android-studio-full ];
+```
+
+This is identical to:
+
+```nix
+buildInputs = [ androidStudioPackages.stable.full ];
+```
+
+Alternatively, you can pass composeAndroidPackages to the `withSdk` passthru:
+
+```nix
+buildInputs = [
+ (android-studio.withSdk (androidenv.composeAndroidPackages {
+ includeNDK = true;
+ }).androidsdk)
+];
+```
+
+These will export ANDROID_SDK_ROOT and ANDROID_NDK_ROOT to the SDK and NDK directories
+in the specified Android build environment.
+
## Deploying an Android SDK installation with plugins {#deploying-an-android-sdk-installation-with-plugins}
-The first use case is deploying the SDK with a desired set of plugins or subsets
-of an SDK.
+Alternatively, you can deploy the SDK separately with a desired set of plugins, or subsets of an SDK.
```nix
with import <nixpkgs> {};
@@ -145,16 +171,14 @@ androidComposition.platform-tools
## Using predefined Android package compositions {#using-predefined-android-package-compositions}
In addition to composing an Android package set manually, it is also possible
-to use a predefined composition that contains all basic packages for a specific
-Android version, such as version 9.0 (API-level 28).
+to use a predefined composition that contains a fairly complete set of Android packages:
-The following Nix expression can be used to deploy the entire SDK with all basic
-plugins:
+The following Nix expression can be used to deploy the entire SDK:
```nix
with import <nixpkgs> {};
-androidenv.androidPkgs_9_0.androidsdk
+androidenv.androidPkgs.androidsdk
```
It is also possible to use one plugin only:
@@ -162,50 +186,9 @@ It is also possible to use one plugin only:
```nix
with import <nixpkgs> {};
-androidenv.androidPkgs_9_0.platform-tools
-```
-
-## Building an Android application {#building-an-android-application}
-
-In addition to the SDK, it is also possible to build an Ant-based Android
-project and automatically deploy all the Android plugins that a project
-requires.
-
-
-```nix
-with import <nixpkgs> {};
-
-androidenv.buildApp {
- name = "MyAndroidApp";
- src = ./myappsources;
- release = true;
-
- # If release is set to true, you need to specify the following parameters
- keyStore = ./keystore;
- keyAlias = "myfirstapp";
- keyStorePassword = "mykeystore";
- keyAliasPassword = "myfirstapp";
-
- # Any Android SDK parameters that install all the relevant plugins that a
- # build requires
- platformVersions = [ "24" ];
-
- # When we include the NDK, then ndk-build is invoked before Ant gets invoked
- includeNDK = true;
-}
+androidenv.androidPkgs.platform-tools
```
-Aside from the app-specific build parameters (`name`, `src`, `release` and
-keystore parameters), the `buildApp {}` function supports all the function
-parameters that the SDK composition function (the function shown in the
-previous section) supports.
-
-This build function is particularly useful when it is desired to use
-[Hydra](https://nixos.org/hydra): the Nix-based continuous integration solution
-to build Android apps. An Android APK gets exposed as a build product and can be
-installed on any Android device with a web browser by navigating to the build
-result page.
-
## Spawning emulator instances {#spawning-emulator-instances}
For testing purposes, it can also be quite convenient to automatically generate
@@ -349,3 +332,44 @@ To update the expressions run the `generate.sh` script that is stored in the
```bash
./generate.sh
```
+
+## Building an Android application with Ant {#building-an-android-application-with-ant}
+
+In addition to the SDK, it is also possible to build an Ant-based Android
+project and automatically deploy all the Android plugins that a project
+requires. Most newer Android projects use Gradle, and this is included for historical
+purposes.
+
+```nix
+with import <nixpkgs> {};
+
+androidenv.buildApp {
+ name = "MyAndroidApp";
+ src = ./myappsources;
+ release = true;
+
+ # If release is set to true, you need to specify the following parameters
+ keyStore = ./keystore;
+ keyAlias = "myfirstapp";
+ keyStorePassword = "mykeystore";
+ keyAliasPassword = "myfirstapp";
+
+ # Any Android SDK parameters that install all the relevant plugins that a
+ # build requires
+ platformVersions = [ "24" ];
+
+ # When we include the NDK, then ndk-build is invoked before Ant gets invoked
+ includeNDK = true;
+}
+```
+
+Aside from the app-specific build parameters (`name`, `src`, `release` and
+keystore parameters), the `buildApp {}` function supports all the function
+parameters that the SDK composition function (the function shown in the
+previous section) supports.
+
+This build function is particularly useful when it is desired to use
+[Hydra](https://nixos.org/hydra): the Nix-based continuous integration solution
+to build Android apps. An Android APK gets exposed as a build product and can be
+installed on any Android device with a web browser by navigating to the build
+result page.