Skip to content

Commit

Permalink
{doc/android,release-notes}: update for android-studio and androidenv…
Browse files Browse the repository at this point in the history
… changes
  • Loading branch information
numinit committed May 28, 2024
1 parent 88873b3 commit 76c94ce
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 50 deletions.
123 changes: 74 additions & 49 deletions doc/languages-frameworks/android.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,37 @@
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 deploying the SDK separately with a desired set of plugins
or subsets of an SDK.

```nix
with import <nixpkgs> {};
Expand Down Expand Up @@ -145,67 +172,24 @@ 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:

```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
Expand Down Expand Up @@ -349,3 +333,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.
5 changes: 4 additions & 1 deletion nixos/doc/manual/release-notes/rl-2405.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -515,8 +515,11 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
- can now be used to disable the upstream fallback servers entirely by setting it to `[]`
- to get previous behaviour of upstream defaults, set it to `null`
- default value has changed from `[]` to `null`, in order to preserve default behaviour
- can now be used to disable the upstream fallback servers entirely by setting it to an empty list. To get the previous behaviour of the upstream defaults set it to null, the new default, instead.

can now be used to disable the upstream fallback servers entirely by setting it to an empty list. To get the previous behaviour of the upstream defaults set it to null, the new default, instead.
- `androidenv.androidPkgs_9_0` has been removed, and replaced with `androidenv.androidPkgs` for a more complete Android SDK including support for Android 9 and later.

- `gtest` package has been updated past v1.13.0, which requires C++14 or higher.

- `services.vikunja` systemd service now uses `vikunja` as dynamic user instead of `vikunja-api`. Database users might need to be changed.

Expand Down

0 comments on commit 76c94ce

Please sign in to comment.