androidenv: support 5 years of Android APIs with images; test 10 without
Cut down on the number of system images that need to be fetched by just supporting packages from the last 5 years. Still test the last 10 years of APIs without images.
This commit is contained in:
parent
c75818be07
commit
81ac8a7666
@ -88,6 +88,9 @@ The following parameters are supported:
|
|||||||
have an aarch64-linux compile).
|
have an aarch64-linux compile).
|
||||||
* `platformVersions` specifies which platform SDK versions should be included.
|
* `platformVersions` specifies which platform SDK versions should be included.
|
||||||
It defaults to including only the latest API level, though you can add more.
|
It defaults to including only the latest API level, though you can add more.
|
||||||
|
* `numLatestPlatformVersions` specifies how many of the latest API levels to include,
|
||||||
|
if you are using the default for `platformVersions`. It defaults to 1, though you can
|
||||||
|
increase this to, for example, 5 to get the last 5 years of Android API packages.
|
||||||
* `minPlatformVersion` and `maxPlatformVersion` take priority over `platformVersions`
|
* `minPlatformVersion` and `maxPlatformVersion` take priority over `platformVersions`
|
||||||
if both are provided. Note that `maxPlatformVersion` always defaults to the latest
|
if both are provided. Note that `maxPlatformVersion` always defaults to the latest
|
||||||
Android SDK platform version, allowing you to specify `minPlatformVersion` to describe
|
Android SDK platform version, allowing you to specify `minPlatformVersion` to describe
|
||||||
|
@ -82,6 +82,7 @@ in
|
|||||||
emulatorVersion ? repo.latest.emulator,
|
emulatorVersion ? repo.latest.emulator,
|
||||||
minPlatformVersion ? null,
|
minPlatformVersion ? null,
|
||||||
maxPlatformVersion ? coerceInt repo.latest.platforms,
|
maxPlatformVersion ? coerceInt repo.latest.platforms,
|
||||||
|
numLatestPlatformVersions ? 1,
|
||||||
platformVersions ?
|
platformVersions ?
|
||||||
if minPlatformVersion != null && maxPlatformVersion != null then
|
if minPlatformVersion != null && maxPlatformVersion != null then
|
||||||
let
|
let
|
||||||
@ -92,7 +93,14 @@ in
|
|||||||
lib.max minPlatformVersionInt maxPlatformVersionInt
|
lib.max minPlatformVersionInt maxPlatformVersionInt
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
map coerceInt [ repo.latest.platforms ],
|
let
|
||||||
|
minPlatformVersionInt = if minPlatformVersion == null then 1 else coerceInt minPlatformVersion;
|
||||||
|
latestPlatformVersionInt = lib.max minPlatformVersionInt (coerceInt repo.latest.platforms);
|
||||||
|
firstPlatformVersionInt = lib.max minPlatformVersionInt (
|
||||||
|
latestPlatformVersionInt - (lib.max 1 numLatestPlatformVersions) + 1
|
||||||
|
);
|
||||||
|
in
|
||||||
|
lib.range firstPlatformVersionInt latestPlatformVersionInt,
|
||||||
includeSources ? false,
|
includeSources ? false,
|
||||||
includeSystemImages ? false,
|
includeSystemImages ? false,
|
||||||
systemImageTypes ? [
|
systemImageTypes ? [
|
||||||
|
@ -18,7 +18,8 @@ lib.recurseIntoAttrs rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
androidPkgs = composeAndroidPackages {
|
androidPkgs = composeAndroidPackages {
|
||||||
minPlatformVersion = 28;
|
# Support roughly the last 5 years of Android packages and system images by default in nixpkgs.
|
||||||
|
numLatestPlatformVersions = 5;
|
||||||
includeEmulator = "if-supported";
|
includeEmulator = "if-supported";
|
||||||
includeSystemImages = "if-supported";
|
includeSystemImages = "if-supported";
|
||||||
includeNDK = "if-supported";
|
includeNDK = "if-supported";
|
||||||
|
@ -47,12 +47,13 @@ let
|
|||||||
|
|
||||||
androidComposition = androidEnv.composeAndroidPackages {
|
androidComposition = androidEnv.composeAndroidPackages {
|
||||||
includeSources = true;
|
includeSources = true;
|
||||||
includeSystemImages = true;
|
includeSystemImages = false;
|
||||||
includeEmulator = "if-supported";
|
includeEmulator = "if-supported";
|
||||||
includeNDK = "if-supported";
|
includeNDK = "if-supported";
|
||||||
useGoogleAPIs = true;
|
useGoogleAPIs = true;
|
||||||
|
|
||||||
minPlatformVersion = 23;
|
# Make sure everything from the last decade works since we are not using system images.
|
||||||
|
numLatestPlatformVersions = 10;
|
||||||
|
|
||||||
# If you want to use a custom repo JSON:
|
# If you want to use a custom repo JSON:
|
||||||
# repoJson = ../repo.json;
|
# repoJson = ../repo.json;
|
||||||
@ -100,6 +101,7 @@ let
|
|||||||
|
|
||||||
androidSdk = androidComposition.androidsdk;
|
androidSdk = androidComposition.androidsdk;
|
||||||
platformTools = androidComposition.platform-tools;
|
platformTools = androidComposition.platform-tools;
|
||||||
|
firstSdk = pkgs.lib.foldl' pkgs.lib.min 100 androidComposition.platformVersions;
|
||||||
latestSdk = pkgs.lib.foldl' pkgs.lib.max 0 androidComposition.platformVersions;
|
latestSdk = pkgs.lib.foldl' pkgs.lib.max 0 androidComposition.platformVersions;
|
||||||
jdk = pkgs.jdk;
|
jdk = pkgs.jdk;
|
||||||
in
|
in
|
||||||
@ -171,19 +173,12 @@ pkgs.mkShell rec {
|
|||||||
"extras;google;gcm"
|
"extras;google;gcm"
|
||||||
)
|
)
|
||||||
|
|
||||||
for x in $(seq 23 ${toString latestSdk}); do
|
for x in $(seq ${toString firstSdk} ${toString latestSdk}); do
|
||||||
if [ $x -ne 34 ]; then
|
if [ $x -ne 34 ]; then
|
||||||
# FIXME couldn't find platforms;android-34, even though it's in the correct directory!! sdkmanager's bug?!
|
# FIXME couldn't find platforms;android-34, even though it's in the correct directory!! sdkmanager's bug?!
|
||||||
packages+=("platforms;android-$x")
|
packages+=("platforms;android-$x")
|
||||||
fi
|
fi
|
||||||
packages+=("sources;android-$x")
|
packages+=("sources;android-$x")
|
||||||
if [ $x -ge 28 ]; then
|
|
||||||
if [ $x -lt 34 ]; then
|
|
||||||
packages+=("system-images;android-$x;google_apis_playstore;x86_64")
|
|
||||||
else
|
|
||||||
packages+=("system-images;android-$x;google_apis;x86_64")
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
${pkgs.lib.optionalString includeAuto ''packages+=("extras;google;auto")''}
|
${pkgs.lib.optionalString includeAuto ''packages+=("extras;google;auto")''}
|
||||||
|
Loading…
Reference in New Issue
Block a user