2021-01-15 22:18:51 +00:00
|
|
|
{
|
|
|
|
# If you copy this example out of nixpkgs, use these lines instead of the next.
|
|
|
|
# This example pins nixpkgs: https://nix.dev/tutorials/towards-reproducibility-pinning-nixpkgs.html
|
|
|
|
/*nixpkgsSource ? (builtins.fetchTarball {
|
|
|
|
name = "nixpkgs-20.09";
|
|
|
|
url = https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz;
|
|
|
|
sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy";
|
|
|
|
}),
|
|
|
|
pkgs ? import nixpkgsSource {},
|
|
|
|
pkgs_i686 ? import nixpkgsSource { system = "i686-linux"; },*/
|
|
|
|
|
|
|
|
# If you want to use the in-tree version of nixpkgs:
|
|
|
|
pkgs ? import ../../../../.. {},
|
|
|
|
pkgs_i686 ? import ../../../../.. { system = "i686-linux"; },
|
|
|
|
|
|
|
|
config ? pkgs.config
|
|
|
|
}:
|
|
|
|
|
|
|
|
# Copy this file to your Android project.
|
|
|
|
let
|
|
|
|
# Declaration of versions for everything. This is useful since these
|
|
|
|
# versions may be used in multiple places in this Nix expression.
|
|
|
|
android = {
|
|
|
|
versions = {
|
|
|
|
tools = "26.1.1";
|
2021-04-26 19:14:03 +00:00
|
|
|
platformTools = "31.0.2";
|
2021-01-15 22:18:51 +00:00
|
|
|
buildTools = "30.0.3";
|
2021-04-26 19:14:03 +00:00
|
|
|
ndk = [
|
|
|
|
"22.1.7171670"
|
|
|
|
"21.3.6528147" # LTS NDK
|
|
|
|
];
|
|
|
|
cmake = "3.18.1";
|
|
|
|
emulator = "30.6.3";
|
2021-01-15 22:18:51 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
platforms = ["23" "24" "25" "26" "27" "28" "29" "30"];
|
|
|
|
abis = ["armeabi-v7a" "arm64-v8a"];
|
|
|
|
extras = ["extras;google;gcm"];
|
|
|
|
};
|
|
|
|
|
|
|
|
# If you copy this example out of nixpkgs, something like this will work:
|
|
|
|
/*androidEnvNixpkgs = fetchTarball {
|
|
|
|
name = "androidenv";
|
|
|
|
url = https://github.com/NixOS/nixpkgs/archive/<fill me in from Git>.tar.gz;
|
|
|
|
sha256 = "<fill me in with nix-prefetch-url --unpack>";
|
|
|
|
};
|
|
|
|
|
|
|
|
androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" {
|
|
|
|
inherit config pkgs pkgs_i686;
|
|
|
|
licenseAccepted = true;
|
|
|
|
};*/
|
|
|
|
|
|
|
|
# Otherwise, just use the in-tree androidenv:
|
|
|
|
androidEnv = pkgs.callPackage ./.. {
|
|
|
|
inherit config pkgs pkgs_i686;
|
|
|
|
licenseAccepted = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
androidComposition = androidEnv.composeAndroidPackages {
|
|
|
|
toolsVersion = android.versions.tools;
|
|
|
|
platformToolsVersion = android.versions.platformTools;
|
|
|
|
buildToolsVersions = [android.versions.buildTools];
|
|
|
|
platformVersions = android.platforms;
|
|
|
|
abiVersions = android.abis;
|
|
|
|
|
|
|
|
includeSources = true;
|
|
|
|
includeSystemImages = true;
|
|
|
|
includeEmulator = true;
|
|
|
|
emulatorVersion = android.versions.emulator;
|
|
|
|
|
|
|
|
includeNDK = true;
|
2021-04-26 19:14:03 +00:00
|
|
|
ndkVersions = android.versions.ndk;
|
2021-01-15 22:18:51 +00:00
|
|
|
cmakeVersions = [android.versions.cmake];
|
|
|
|
|
|
|
|
useGoogleAPIs = true;
|
|
|
|
includeExtras = android.extras;
|
|
|
|
|
|
|
|
# If you want to use a custom repo JSON:
|
|
|
|
# repoJson = ../repo.json;
|
|
|
|
|
|
|
|
# If you want to use custom repo XMLs:
|
|
|
|
/*repoXmls = {
|
|
|
|
packages = [ ../xml/repository2-1.xml ];
|
|
|
|
images = [
|
|
|
|
../xml/android-sys-img2-1.xml
|
|
|
|
../xml/android-tv-sys-img2-1.xml
|
|
|
|
../xml/android-wear-sys-img2-1.xml
|
|
|
|
../xml/android-wear-cn-sys-img2-1.xml
|
|
|
|
../xml/google_apis-sys-img2-1.xml
|
|
|
|
../xml/google_apis_playstore-sys-img2-1.xml
|
|
|
|
];
|
|
|
|
addons = [ ../xml/addon2-1.xml ];
|
|
|
|
};*/
|
|
|
|
|
|
|
|
# Accepting more licenses declaratively:
|
|
|
|
extraLicenses = [
|
|
|
|
# Already accepted for you with the global accept_license = true or
|
|
|
|
# licenseAccepted = true on androidenv.
|
|
|
|
# "android-sdk-license"
|
|
|
|
|
|
|
|
# These aren't, but are useful for more uncommon setups.
|
|
|
|
"android-sdk-preview-license"
|
|
|
|
"android-googletv-license"
|
|
|
|
"android-sdk-arm-dbt-license"
|
|
|
|
"google-gdk-license"
|
|
|
|
"intel-android-extra-license"
|
|
|
|
"intel-android-sysimage-license"
|
|
|
|
"mips-android-sysimage-license"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
|
|
|
androidSdk = androidComposition.androidsdk;
|
|
|
|
platformTools = androidComposition.platform-tools;
|
|
|
|
jdk = pkgs.jdk;
|
|
|
|
in
|
|
|
|
pkgs.mkShell rec {
|
|
|
|
name = "androidenv-demo";
|
|
|
|
buildInputs = [ androidSdk platformTools jdk pkgs.android-studio ];
|
|
|
|
|
|
|
|
LANG = "C.UTF-8";
|
|
|
|
LC_ALL = "C.UTF-8";
|
|
|
|
JAVA_HOME = jdk.home;
|
|
|
|
|
|
|
|
# Note: ANDROID_HOME is deprecated. Use ANDROID_SDK_ROOT.
|
|
|
|
ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk";
|
|
|
|
ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle";
|
|
|
|
|
|
|
|
# Ensures that we don't have to use a FHS env by using the nix store's aapt2.
|
|
|
|
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${android.versions.buildTools}/aapt2";
|
|
|
|
|
|
|
|
shellHook = ''
|
|
|
|
# Add cmake to the path.
|
2021-04-26 19:14:03 +00:00
|
|
|
cmake_root="$(echo "$ANDROID_SDK_ROOT/cmake/${android.versions.cmake}"*/)"
|
2021-01-15 22:18:51 +00:00
|
|
|
export PATH="$cmake_root/bin:$PATH"
|
|
|
|
|
|
|
|
# Write out local.properties for Android Studio.
|
|
|
|
cat <<EOF > local.properties
|
|
|
|
# This file was automatically generated by nix-shell.
|
|
|
|
sdk.dir=$ANDROID_SDK_ROOT
|
|
|
|
ndk.dir=$ANDROID_NDK_ROOT
|
|
|
|
cmake.dir=$cmake_root
|
|
|
|
EOF
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
|