diff options
author | Pol Dellaiera <pol.dellaiera@protonmail.com> | 2024-06-16 08:35:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-16 08:35:21 +0200 |
commit | 4b2ef8f2f0ad2c72c0cf639a02b0b92aa01ed46e (patch) | |
tree | 2566607571e94546f69cda9d2c7840fa6095c4dd /doc | |
parent | 01d619bc95c5f86f38989bfe254aa4df90b9da2b (diff) | |
parent | c1adf2f6c0f59af2502ae5d8ce45cf679193fe17 (diff) |
Merge pull request #315233 from numinit/android-studio-full
android-studio-full: init
Diffstat (limited to 'doc')
-rw-r--r-- | doc/languages-frameworks/android.section.md | 122 |
1 files changed, 73 insertions, 49 deletions
diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md index 1c5687f8ebf1b..d6ed1f35cb0a8 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. |