Merge pull request #89775 from numinit/update-androidenv
This commit is contained in:
commit
51894963cb
@ -13,21 +13,19 @@ with import <nixpkgs> {};
|
||||
|
||||
let
|
||||
androidComposition = androidenv.composeAndroidPackages {
|
||||
toolsVersion = "25.2.5";
|
||||
platformToolsVersion = "27.0.1";
|
||||
buildToolsVersions = [ "27.0.3" ];
|
||||
toolsVersion = "26.1.1";
|
||||
platformToolsVersion = "30.0.5";
|
||||
buildToolsVersions = [ "30.0.3" ];
|
||||
includeEmulator = false;
|
||||
emulatorVersion = "27.2.0";
|
||||
platformVersions = [ "24" ];
|
||||
emulatorVersion = "30.3.4";
|
||||
platformVersions = [ "28" "29" "30" ];
|
||||
includeSources = false;
|
||||
includeDocs = false;
|
||||
includeSystemImages = false;
|
||||
systemImageTypes = [ "default" ];
|
||||
abiVersions = [ "armeabi-v7a" ];
|
||||
lldbVersions = [ "2.0.2558144" ];
|
||||
cmakeVersions = [ "3.6.4111459" ];
|
||||
includeNDK = false;
|
||||
ndkVersion = "16.1.4479499";
|
||||
systemImageTypes = [ "google_apis_playstore" ];
|
||||
abiVersions = [ "armeabi-v7a" "arm64-v8a" ];
|
||||
cmakeVersions = [ "3.10.2" ];
|
||||
includeNDK = true;
|
||||
ndkVersion = "22.0.7026061";
|
||||
useGoogleAPIs = false;
|
||||
useGoogleTVAddOns = false;
|
||||
includeExtras = [
|
||||
@ -46,13 +44,11 @@ The following parameters are supported:
|
||||
|
||||
* `toolsVersion`, specifies the version of the tools package to use
|
||||
* `platformsToolsVersion` specifies the version of the `platform-tools` plugin
|
||||
* `buildToolsVersion` specifies the versions of the `build-tools` plugins to
|
||||
* `buildToolsVersions` specifies the versions of the `build-tools` plugins to
|
||||
use.
|
||||
* `includeEmulator` specifies whether to deploy the emulator package (`false`
|
||||
by default). When enabled, the version of the emulator to deploy can be
|
||||
specified by setting the `emulatorVersion` parameter.
|
||||
* `includeDocs` specifies whether the documentation catalog should be included.
|
||||
* `lldbVersions` specifies what LLDB versions should be deployed.
|
||||
* `cmakeVersions` specifies which CMake versions should be deployed.
|
||||
* `includeNDK` specifies that the Android NDK bundle should be included.
|
||||
Defaults to: `false`.
|
||||
@ -82,6 +78,38 @@ For each requested system image we can specify the following options:
|
||||
|
||||
Most of the function arguments have reasonable default settings.
|
||||
|
||||
You can specify license names:
|
||||
|
||||
* `extraLicenses` is a list of of license names.
|
||||
You can get these names from repo.json or `querypackages.sh licenses`. The SDK
|
||||
license (`android-sdk-license`) is accepted for you if you set accept_license
|
||||
to true. If you are doing something like working with preview SDKs, you will
|
||||
want to add `android-sdk-preview-license` or whichever license applies here.
|
||||
|
||||
Additionally, you can override the repositories that composeAndroidPackages will
|
||||
pull from:
|
||||
|
||||
* `repoJson` specifies a path to a generated repo.json file. You can generate this
|
||||
by running `generate.sh`, which in turn will call into `mkrepo.rb`.
|
||||
* `repoXmls` is an attribute set containing paths to repo XML files. If specified,
|
||||
it takes priority over `repoJson`, and will trigger a local build writing out a
|
||||
repo.json to the Nix store based on the given repository XMLs.
|
||||
|
||||
```nix
|
||||
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 ];
|
||||
};
|
||||
```
|
||||
|
||||
When building the above expression with:
|
||||
|
||||
```bash
|
||||
@ -104,8 +132,8 @@ in
|
||||
androidComposition.platform-tools
|
||||
```
|
||||
|
||||
Using predefine 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).
|
||||
@ -209,27 +237,104 @@ androidenv.emulateApp {
|
||||
In addition to prebuilt APKs, you can also bind the APK parameter to a
|
||||
`buildApp {}` function invocation shown in the previous example.
|
||||
|
||||
Notes on environment variables in Android projects
|
||||
--------------------------------------------------
|
||||
* `ANDROID_SDK_ROOT` should point to the Android SDK. In your Nix expressions, this should be
|
||||
`${androidComposition.androidsdk}/libexec/android-sdk`. Note that `ANDROID_HOME` is deprecated,
|
||||
but if you rely on tools that need it, you can export it too.
|
||||
* `ANDROID_NDK_ROOT` should point to the Android NDK, if you're doing NDK development.
|
||||
In your Nix expressions, this should be `${ANDROID_SDK_ROOT}/ndk-bundle`.
|
||||
|
||||
If you are running the Android Gradle plugin, you need to export GRADLE_OPTS to override aapt2
|
||||
to point to the aapt2 binary in the Nix store as well, or use a FHS environment so the packaged
|
||||
aapt2 can run. If you don't want to use a FHS environment, something like this should work:
|
||||
|
||||
```nix
|
||||
let
|
||||
buildToolsVersion = "30.0.3";
|
||||
|
||||
# Use buildToolsVersion when you define androidComposition
|
||||
androidComposition = <...>;
|
||||
in
|
||||
pkgs.mkShell rec {
|
||||
ANDROID_SDK_ROOT = "${androidComposition.androidsdk}/libexec/android-sdk";
|
||||
ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle";
|
||||
|
||||
# Use the same buildToolsVersion here
|
||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${buildToolsVersion}/aapt2";
|
||||
}
|
||||
```
|
||||
|
||||
If you are using cmake, you need to add it to PATH in a shell hook or FHS env profile.
|
||||
The path is suffixed with a build number, but properly prefixed with the version.
|
||||
So, something like this should suffice:
|
||||
|
||||
```nix
|
||||
let
|
||||
cmakeVersion = "3.10.2";
|
||||
|
||||
# Use cmakeVersion when you define androidComposition
|
||||
androidComposition = <...>;
|
||||
in
|
||||
pkgs.mkShell rec {
|
||||
ANDROID_SDK_ROOT = "${androidComposition.androidsdk}/libexec/android-sdk";
|
||||
ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle";
|
||||
|
||||
# Use the same cmakeVersion here
|
||||
shellHook = ''
|
||||
export PATH="$(echo "$ANDROID_SDK_ROOT/cmake/${cmakeVersion}".*/bin):$PATH"
|
||||
'';
|
||||
}
|
||||
```
|
||||
|
||||
Note that running Android Studio with ANDROID_SDK_ROOT set will automatically write a
|
||||
`local.properties` file with `sdk.dir` set to $ANDROID_SDK_ROOT if one does not already
|
||||
exist. If you are using the NDK as well, you may have to add `ndk.dir` to this file.
|
||||
|
||||
An example shell.nix that does all this for you is provided in examples/shell.nix.
|
||||
This shell.nix includes a shell hook that overwrites local.properties with the correct
|
||||
sdk.dir and ndk.dir values. This will ensure that the SDK and NDK directories will
|
||||
both be correct when you run Android Studio inside nix-shell.
|
||||
|
||||
Notes on improving build.gradle compatibility
|
||||
---------------------------------------------
|
||||
Ensure that your buildToolsVersion and ndkVersion match what is declared in androidenv.
|
||||
If you are using cmake, make sure its declared version is correct too.
|
||||
|
||||
Otherwise, you may get cryptic errors from aapt2 and the Android Gradle plugin warning
|
||||
that it cannot install the build tools because the SDK directory is not writeable.
|
||||
|
||||
```gradle
|
||||
android {
|
||||
buildToolsVersion "30.0.3"
|
||||
ndkVersion = "22.0.7026061"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
version "3.10.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Querying the available versions of each plugin
|
||||
----------------------------------------------
|
||||
When using any of the previously shown functions, it may be a bit inconvenient
|
||||
to find out what options are supported, since the Android SDK provides many
|
||||
plugins.
|
||||
repo.json provides all the options in one file now.
|
||||
|
||||
A shell script in the `pkgs/development/mobile/androidenv/` sub directory can be used to retrieve all
|
||||
A shell script in the `pkgs/development/mobile/androidenv/` subdirectory can be used to retrieve all
|
||||
possible options:
|
||||
|
||||
```bash
|
||||
sh ./querypackages.sh packages build-tools
|
||||
./querypackages.sh packages
|
||||
```
|
||||
|
||||
The above command-line instruction queries all build-tools versions in the
|
||||
generated `packages.nix` expression.
|
||||
The above command-line instruction queries all package versions in repo.json.
|
||||
|
||||
Updating the generated expressions
|
||||
----------------------------------
|
||||
Most of the Nix expressions are generated from XML files that the Android
|
||||
package manager uses. To update the expressions run the `generate.sh` script
|
||||
that is stored in the `pkgs/development/mobile/androidenv/` sub directory:
|
||||
repo.json is generated from XML files that the Android Studio package manager uses.
|
||||
To update the expressions run the `generate.sh` script that is stored in the
|
||||
`pkgs/development/mobile/androidenv/` subdirectory:
|
||||
|
||||
```bash
|
||||
./generate.sh
|
||||
|
@ -362,6 +362,22 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
|
||||
official documentation</link> of the json_exporter.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Androidenv was updated, removing the <literal>includeDocs</literal> and <literal>lldbVersions</literal>
|
||||
arguments. Docs only covered a single version of the Android SDK, LLDB is now bundled with the NDK,
|
||||
and both are no longer available to download from the Android package repositories. Additionally, since
|
||||
the package lists have been updated, some older versions of Android packages may not be bundled. If you
|
||||
depend on older versions of Android packages, we recommend overriding the repo.
|
||||
</para>
|
||||
<para>
|
||||
Android packages are now loaded from a repo.json file created by parsing Android repo XML files. The arguments
|
||||
<literal>repoJson</literal> and <literal>repoXmls</literal> have been added to allow overriding the built-in
|
||||
androidenv repo.json with your own. Additionally, license files are now written to allow compatibility
|
||||
with Gradle-based tools, and the <literal>extraLicenses</literal> argument has been added to accept more
|
||||
SDK licenses if your project requires it. See the androidenv documentation for more details.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
2
pkgs/development/mobile/androidenv/.gitignore
vendored
Normal file
2
pkgs/development/mobile/androidenv/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/xml
|
||||
local.properties
|
@ -2,8 +2,8 @@
|
||||
|
||||
deployAndroidPackage {
|
||||
inherit package os;
|
||||
buildInputs = [ autoPatchelfHook ]
|
||||
++ lib.optional (os == "linux") [ pkgs.stdenv.glibc pkgs.stdenv.cc.cc ];
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
buildInputs = lib.optional (os == "linux") [ pkgs.stdenv.glibc pkgs.stdenv.cc.cc pkgs.ncurses5 ];
|
||||
patchInstructions = lib.optionalString (os == "linux") ''
|
||||
autoPatchelf $packageBaseDir/bin
|
||||
'';
|
||||
|
@ -1,23 +1,26 @@
|
||||
{requireFile, autoPatchelfHook, pkgs, pkgsHostHost, pkgs_i686, licenseAccepted ? false}:
|
||||
{ requireFile, autoPatchelfHook, pkgs, pkgsHostHost, pkgs_i686
|
||||
, licenseAccepted ? false
|
||||
}:
|
||||
|
||||
{ toolsVersion ? "25.2.5"
|
||||
, platformToolsVersion ? "29.0.6"
|
||||
, buildToolsVersions ? [ "28.0.3" ]
|
||||
{ toolsVersion ? "26.1.1"
|
||||
, platformToolsVersion ? "30.0.5"
|
||||
, buildToolsVersions ? [ "30.0.3" ]
|
||||
, includeEmulator ? false
|
||||
, emulatorVersion ? "30.0.3"
|
||||
, emulatorVersion ? "30.3.4"
|
||||
, platformVersions ? []
|
||||
, includeSources ? false
|
||||
, includeDocs ? false
|
||||
, includeSystemImages ? false
|
||||
, systemImageTypes ? [ "default" ]
|
||||
, systemImageTypes ? [ "google_apis_playstore" ]
|
||||
, abiVersions ? [ "armeabi-v7a" ]
|
||||
, lldbVersions ? [ ]
|
||||
, cmakeVersions ? [ ]
|
||||
, includeNDK ? false
|
||||
, ndkVersion ? "21.0.6113669"
|
||||
, ndkVersion ? "22.0.7026061"
|
||||
, useGoogleAPIs ? false
|
||||
, useGoogleTVAddOns ? false
|
||||
, includeExtras ? []
|
||||
, repoJson ? ./repo.json
|
||||
, repoXmls ? null
|
||||
, extraLicenses ? []
|
||||
}:
|
||||
|
||||
let
|
||||
@ -28,48 +31,86 @@ let
|
||||
else if stdenv.system == "x86_64-darwin" then "macosx"
|
||||
else throw "No Android SDK tarballs are available for system architecture: ${stdenv.system}";
|
||||
|
||||
# Generated Nix packages
|
||||
packages = import ./generated/packages.nix {
|
||||
inherit fetchurl;
|
||||
# Uses mkrepo.rb to create a repo spec.
|
||||
mkRepoJson = { packages ? [], images ? [], addons ? [] }: let
|
||||
mkRepoRuby = (pkgs.ruby.withPackages (pkgs: with pkgs; [ slop nokogiri ]));
|
||||
mkRepoRubyArguments = lib.lists.flatten [
|
||||
(builtins.map (package: ["--packages" "${package}"]) packages)
|
||||
(builtins.map (image: ["--images" "${image}"]) images)
|
||||
(builtins.map (addon: ["--addons" "${addon}"]) addons)
|
||||
];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "androidenv-repo-json";
|
||||
buildInputs = [ mkRepoRuby ];
|
||||
preferLocalBuild = true;
|
||||
unpackPhase = "true";
|
||||
buildPhase = ''
|
||||
ruby ${./mkrepo.rb} ${lib.escapeShellArgs mkRepoRubyArguments} > repo.json
|
||||
'';
|
||||
installPhase = ''
|
||||
mv repo.json $out
|
||||
'';
|
||||
};
|
||||
|
||||
# Generated system images
|
||||
system-images-packages-android = import ./generated/system-images-android.nix {
|
||||
inherit fetchurl;
|
||||
# Reads the repo JSON. If repoXmls is provided, will build a repo JSON into the Nix store.
|
||||
repo = if repoXmls != null then
|
||||
let
|
||||
repoXmlSpec = {
|
||||
packages = repoXmls.packages or [];
|
||||
images = repoXmls.images or [];
|
||||
addons = repoXmls.addons or [];
|
||||
};
|
||||
in
|
||||
builtins.fromJSON (builtins.readFile "${mkRepoJson repoXmlSpec}")
|
||||
else
|
||||
builtins.fromJSON (builtins.readFile repoJson);
|
||||
|
||||
# Converts all 'archives' keys in a repo spec to fetchurl calls.
|
||||
fetchArchives = attrSet:
|
||||
lib.attrsets.mapAttrsRecursive
|
||||
(path: value:
|
||||
if (builtins.elemAt path ((builtins.length path) - 1)) == "archives" then
|
||||
(builtins.listToAttrs
|
||||
(builtins.map
|
||||
(archive: lib.attrsets.nameValuePair archive.os (fetchurl { inherit (archive) url sha1; })) value))
|
||||
else value
|
||||
)
|
||||
attrSet;
|
||||
|
||||
# Converts the repo attrset into fetch calls
|
||||
packages = fetchArchives repo.packages;
|
||||
system-images-packages = fetchArchives repo.images;
|
||||
addons = {
|
||||
addons = fetchArchives repo.addons;
|
||||
extras = fetchArchives repo.extras;
|
||||
};
|
||||
|
||||
system-images-packages-android-tv = import ./generated/system-images-android-tv.nix {
|
||||
inherit fetchurl;
|
||||
};
|
||||
# Converts a license name to a list of license texts.
|
||||
mkLicenses = licenseName: repo.licenses.${licenseName};
|
||||
|
||||
system-images-packages-android-wear = import ./generated/system-images-android-wear.nix {
|
||||
inherit fetchurl;
|
||||
};
|
||||
# Converts a list of license names to a flattened list of license texts.
|
||||
# Just used for displaying licenses.
|
||||
mkLicenseTexts = licenseNames:
|
||||
lib.lists.flatten
|
||||
(builtins.map
|
||||
(licenseName:
|
||||
builtins.map
|
||||
(licenseText: "--- ${licenseName} ---\n${licenseText}")
|
||||
(mkLicenses licenseName))
|
||||
licenseNames);
|
||||
|
||||
system-images-packages-android-wear-cn = import ./generated/system-images-android-wear-cn.nix {
|
||||
inherit fetchurl;
|
||||
};
|
||||
# Converts a license name to a list of license hashes.
|
||||
mkLicenseHashes = licenseName:
|
||||
builtins.map
|
||||
(licenseText: builtins.hashString "sha1" licenseText)
|
||||
(mkLicenses licenseName);
|
||||
|
||||
system-images-packages-google_apis = import ./generated/system-images-google_apis.nix {
|
||||
inherit fetchurl;
|
||||
};
|
||||
|
||||
system-images-packages-google_apis_playstore = import ./generated/system-images-google_apis_playstore.nix {
|
||||
inherit fetchurl;
|
||||
};
|
||||
|
||||
system-images-packages =
|
||||
lib.recursiveUpdate
|
||||
system-images-packages-android
|
||||
(lib.recursiveUpdate system-images-packages-android-tv
|
||||
(lib.recursiveUpdate system-images-packages-android-wear
|
||||
(lib.recursiveUpdate system-images-packages-android-wear-cn
|
||||
(lib.recursiveUpdate system-images-packages-google_apis system-images-packages-google_apis_playstore))));
|
||||
|
||||
# Generated addons
|
||||
addons = import ./generated/addons.nix {
|
||||
inherit fetchurl;
|
||||
};
|
||||
# The list of all license names we're accepting. Put android-sdk-license there
|
||||
# by default.
|
||||
licenseNames = lib.lists.unique ([
|
||||
"android-sdk-license"
|
||||
] ++ extraLicenses);
|
||||
in
|
||||
rec {
|
||||
deployAndroidPackage = import ./deploy-androidpackage.nix {
|
||||
@ -88,14 +129,9 @@ rec {
|
||||
}
|
||||
) buildToolsVersions;
|
||||
|
||||
docs = deployAndroidPackage {
|
||||
inherit os;
|
||||
package = packages.docs."1";
|
||||
};
|
||||
|
||||
emulator = import ./emulator.nix {
|
||||
inherit deployAndroidPackage os autoPatchelfHook makeWrapper pkgs pkgs_i686 lib;
|
||||
package = packages.emulator.${emulatorVersion}.${os};
|
||||
package = packages.emulator.${emulatorVersion};
|
||||
};
|
||||
|
||||
platforms = map (version:
|
||||
@ -115,27 +151,22 @@ rec {
|
||||
system-images = lib.flatten (map (apiVersion:
|
||||
map (type:
|
||||
map (abiVersion:
|
||||
deployAndroidPackage {
|
||||
inherit os;
|
||||
package = system-images-packages.${apiVersion}.${type}.${abiVersion};
|
||||
# Patch 'google_apis' system images so they're recognized by the sdk.
|
||||
# Without this, `android list targets` shows 'Tag/ABIs : no ABIs' instead
|
||||
# of 'Tag/ABIs : google_apis*/*' and the emulator fails with an ABI-related error.
|
||||
patchInstructions = lib.optionalString (lib.hasPrefix "google_apis" type) ''
|
||||
sed -i '/^Addon.Vendor/d' source.properties
|
||||
'';
|
||||
}
|
||||
if lib.hasAttrByPath [apiVersion type abiVersion] system-images-packages then
|
||||
deployAndroidPackage {
|
||||
inherit os;
|
||||
package = system-images-packages.${apiVersion}.${type}.${abiVersion};
|
||||
# Patch 'google_apis' system images so they're recognized by the sdk.
|
||||
# Without this, `android list targets` shows 'Tag/ABIs : no ABIs' instead
|
||||
# of 'Tag/ABIs : google_apis*/*' and the emulator fails with an ABI-related error.
|
||||
patchInstructions = lib.optionalString (lib.hasPrefix "google_apis" type) ''
|
||||
sed -i '/^Addon.Vendor/d' source.properties
|
||||
'';
|
||||
}
|
||||
else []
|
||||
) abiVersions
|
||||
) systemImageTypes
|
||||
) platformVersions);
|
||||
|
||||
lldb = map (version:
|
||||
import ./lldb.nix {
|
||||
inherit deployAndroidPackage os autoPatchelfHook pkgs lib;
|
||||
package = packages.lldb.${version};
|
||||
}
|
||||
) lldbVersions;
|
||||
|
||||
cmake = map (version:
|
||||
import ./cmake.nix {
|
||||
inherit deployAndroidPackage os autoPatchelfHook pkgs lib;
|
||||
@ -187,12 +218,15 @@ rec {
|
||||
''; # */
|
||||
|
||||
# This derivation deploys the tools package and symlinks all the desired
|
||||
# plugins that we want to use.
|
||||
|
||||
# plugins that we want to use. If the license isn't accepted, prints all the licenses
|
||||
# requested and throws.
|
||||
androidsdk = if !licenseAccepted then throw ''
|
||||
You must accept the Android Software Development Kit License Agreement at
|
||||
https://developer.android.com/studio/terms
|
||||
by setting nixpkgs config option 'android_sdk.accept_license = true;'
|
||||
${builtins.concatStringsSep "\n\n" (mkLicenseTexts licenseNames)}
|
||||
|
||||
You must accept the following licenses:
|
||||
${lib.concatMapStringsSep "\n" (str: " - ${str}") licenseNames}
|
||||
|
||||
by setting nixpkgs config option 'android_sdk.accept_license = true;'.
|
||||
'' else import ./tools.nix {
|
||||
inherit deployAndroidPackage requireFile packages toolsVersion autoPatchelfHook makeWrapper os pkgs pkgs_i686 lib;
|
||||
|
||||
@ -202,10 +236,8 @@ rec {
|
||||
${linkPlugin { name = "platform-tools"; plugin = platform-tools; }}
|
||||
${linkPlugins { name = "build-tools"; plugins = build-tools; }}
|
||||
${linkPlugin { name = "emulator"; plugin = emulator; check = includeEmulator; }}
|
||||
${linkPlugin { name = "docs"; plugin = docs; check = includeDocs; }}
|
||||
${linkPlugins { name = "platforms"; plugins = platforms; }}
|
||||
${linkPlatformPlugins { name = "sources"; plugins = sources; check = includeSources; }}
|
||||
${linkPlugins { name = "lldb"; plugins = lldb; }}
|
||||
${linkPlugins { name = "cmake"; plugins = cmake; }}
|
||||
${linkPlugin { name = "ndk-bundle"; plugin = ndk-bundle; check = includeNDK; }}
|
||||
|
||||
@ -253,6 +285,17 @@ rec {
|
||||
do
|
||||
ln -s $i $out/bin
|
||||
done
|
||||
|
||||
# Write licenses
|
||||
mkdir -p licenses
|
||||
${lib.concatMapStrings (licenseName:
|
||||
let
|
||||
licenseHashes = builtins.concatStringsSep "\n" (mkLicenseHashes licenseName);
|
||||
licenseHashFile = pkgs.writeText "androidenv-${licenseName}" licenseHashes;
|
||||
in
|
||||
''
|
||||
ln -s ${licenseHashFile} licenses/${licenseName}
|
||||
'') licenseNames}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@ -1,128 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:addon="http://schemas.android.com/sdk/android/repo/addon2/01"
|
||||
xmlns:sdk="http://schemas.android.com/repository/android/common/01"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<xsl:output omit-xml-declaration="yes" indent="no" />
|
||||
|
||||
<!-- Template that puts a google HTTP prefix in front of relative URLs -->
|
||||
<xsl:template name="repository-url">
|
||||
<xsl:variable name="raw-url" select="complete/url"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($raw-url, 'http')">
|
||||
<xsl:value-of select="$raw-url"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>https://dl.google.com/android/repository/</xsl:text>
|
||||
<xsl:value-of select="$raw-url"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/addon:sdk-addon">
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
addons = {
|
||||
<!-- Convert all addons, but skip the entry for google APIs version 25 because it is inconsistent with the spec -->
|
||||
<xsl:for-each select="remotePackage[type-details/@xsi:type='addon:addonDetailsType' and archives/archive/complete/url != 'google_apis-25_r1.zip' ]"><xsl:sort select="@path" />
|
||||
"<xsl:value-of select="type-details/api-level" />"."<xsl:value-of select="type-details/tag/id" />" = {
|
||||
name = "<xsl:value-of select="type-details/tag/id" />";
|
||||
path = "<xsl:value-of select="translate(@path, ';', '/')" />";
|
||||
revision = "<xsl:value-of select="type-details/api-level" />";
|
||||
displayName = "<xsl:value-of select="display-name" />";
|
||||
archives = {
|
||||
<xsl:for-each select="archives/archive[not(host-os)]">
|
||||
all = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="archives/archive[host-os and not(host-os = 'windows')]">
|
||||
<xsl:value-of select="host-os" /> = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
};
|
||||
};
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Workaround to make google APIs version 25 work. Hopefully, we can get rid of this at some point -->
|
||||
<xsl:for-each select="remotePackage[type-details/@xsi:type='addon:addonDetailsType' and archives/archive/complete/url = 'google_apis-25_r1.zip' ]">
|
||||
"<xsl:value-of select="25" />"."<xsl:value-of select="type-details/tag/id" />" = {
|
||||
name = "<xsl:value-of select="type-details/tag/id" />";
|
||||
path = "add-ons/addon-google_apis-google-25";
|
||||
revision = "<xsl:value-of select="25" />";
|
||||
displayName = "<xsl:value-of select="display-name" />";
|
||||
archives = {
|
||||
<xsl:for-each select="archives/archive[not(host-os)]">
|
||||
all = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="archives/archive[host-os and not(host-os = 'windows')]">
|
||||
<xsl:value-of select="host-os" /> = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
};
|
||||
};
|
||||
</xsl:for-each>
|
||||
};
|
||||
|
||||
extras = {
|
||||
<!-- Convert all extras and maven artefacts -->
|
||||
<xsl:for-each select="remotePackage[type-details/@xsi:type='addon:extraDetailsType' or type-details/@xsi:type='addon:mavenType']"><xsl:sort select="@path" />
|
||||
|
||||
<!-- Compose revision string from revision attributes -->
|
||||
<xsl:variable name="revision">
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/major">
|
||||
<xsl:value-of select="revision/major" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/minor">.<xsl:value-of select="revision/minor" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/micro">.<xsl:value-of select="revision/micro" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/preview">-rc<xsl:value-of select="revision/preview" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
"<xsl:value-of select="@path" />" = {
|
||||
name = "<xsl:value-of select="translate(@path, ';', '-')" />";
|
||||
path = "<xsl:value-of select="translate(@path, ';', '/')" />";
|
||||
revision = "<xsl:value-of select="$revision" />";
|
||||
displayName = "<xsl:value-of select="display-name" />";
|
||||
archives = {
|
||||
<xsl:for-each select="archives/archive[not(host-os)]">
|
||||
all = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="archives/archive[host-os and not(host-os = 'windows')]">
|
||||
<xsl:value-of select="host-os" /> = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
};
|
||||
};
|
||||
</xsl:for-each>
|
||||
};
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,116 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:common="http://schemas.android.com/repository/android/common/01"
|
||||
xmlns:generic="http://schemas.android.com/repository/android/generic/01"
|
||||
xmlns:sdk="http://schemas.android.com/sdk/android/repo/repository2/01"
|
||||
xmlns:sdk-common="http://schemas.android.com/sdk/android/repo/common/01"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<xsl:output omit-xml-declaration="yes" indent="no" />
|
||||
|
||||
<!-- Template that puts a google HTTP prefix in front of relative URLs -->
|
||||
<xsl:template name="repository-url">
|
||||
<xsl:variable name="raw-url" select="complete/url"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($raw-url, 'http')">
|
||||
<xsl:value-of select="$raw-url"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>https://dl.google.com/android/repository/</xsl:text>
|
||||
<xsl:value-of select="$raw-url"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/sdk:sdk-repository">
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
<!-- Convert all remote packages -->
|
||||
<xsl:for-each select="remotePackage[not(contains(@path, ';') and substring-after(@path, ';') = 'latest')]"><xsl:sort select="@path" />
|
||||
|
||||
<!-- Extract the package name from the path -->
|
||||
<xsl:variable name="name">
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains(@path, ';')">
|
||||
<xsl:value-of select="substring-before(@path, ';')" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@path" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Compose version string from version attributes -->
|
||||
<xsl:variable name="revision">
|
||||
<xsl:choose>
|
||||
<!-- Compose revision for a generic package from the revision attributes -->
|
||||
<xsl:when test="type-details/@xsi:type='generic:genericDetailsType'">
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/major">
|
||||
<xsl:value-of select="revision/major" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/minor">.<xsl:value-of select="revision/minor" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/micro">.<xsl:value-of select="revision/micro" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="revision/preview">-rc<xsl:value-of select="revision/preview" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<!-- Compose revision of a platform SDK from the API-level or codename if the latter exists -->
|
||||
<xsl:when test="type-details/@xsi:type='sdk:platformDetailsType'">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(type-details/codename='')">
|
||||
<xsl:value-of select="type-details/codename" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="type-details/api-level" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<!-- Compose revision of a source SDK from the API-level -->
|
||||
<xsl:when test="type-details/@xsi:type='sdk:sourceDetailsType'">
|
||||
<xsl:value-of select="type-details/api-level" />
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="@path='emulator'"> <!-- An emulator package provides one archive per operating system but the same versions -->
|
||||
"<xsl:value-of select="$name" />"."<xsl:value-of select="$revision" />".<xsl:value-of select="archives/archive/host-os" /> = {
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
"<xsl:value-of select="$name" />"."<xsl:value-of select="$revision" />" = {
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
name = "<xsl:value-of select="$name" />";
|
||||
path = "<xsl:value-of select="translate(@path, ';', '/')" />";
|
||||
revision = "<xsl:value-of select="$revision" />";
|
||||
displayName = "<xsl:value-of select="display-name" />";
|
||||
archives = {
|
||||
<xsl:for-each select="archives/archive[not(host-os)]">
|
||||
all = fetchurl {
|
||||
url = !<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="archives/archive[host-os and not(host-os = 'windows')]">
|
||||
<xsl:value-of select="host-os" /> = fetchurl {
|
||||
url = "<xsl:call-template name="repository-url"/>";
|
||||
sha1 = "<xsl:value-of select="complete/checksum" />";
|
||||
};
|
||||
</xsl:for-each>
|
||||
};
|
||||
};
|
||||
</xsl:for-each>
|
||||
}
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
@ -1,76 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:sys-img="http://schemas.android.com/sdk/android/repo/sys-img2/01"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<xsl:param name="imageType" />
|
||||
|
||||
<xsl:output method="text" omit-xml-declaration="yes" indent="no" />
|
||||
|
||||
<xsl:template name="repository-url">
|
||||
<xsl:variable name="raw-url" select="complete/url"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($raw-url, 'http')">
|
||||
<xsl:value-of select="$raw-url"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>https://dl.google.com/android/repository/sys-img/</xsl:text><xsl:value-of select="$imageType" /><xsl:text>/</xsl:text><xsl:value-of select="$raw-url"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="revision" match="type-details[codename]">
|
||||
<xsl:value-of select="codename" />-<xsl:value-of select="tag/id" />-<xsl:value-of select="abi" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="revision" match="type-details[not(codename)]">
|
||||
<xsl:value-of select="api-level" />-<xsl:value-of select="tag/id" />-<xsl:value-of select="abi" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="attrkey" match="type-details[codename]">
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:value-of select="codename" />
|
||||
<xsl:text>".</xsl:text>
|
||||
<xsl:value-of select="tag/id" />
|
||||
<xsl:text>."</xsl:text>
|
||||
<xsl:value-of select="abi" />
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="attrkey" match="type-details[not(codename)]">
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:value-of select="api-level" />
|
||||
<xsl:text>".</xsl:text>
|
||||
<xsl:value-of select="tag/id" />
|
||||
<xsl:text>."</xsl:text>
|
||||
<xsl:value-of select="abi" />
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/sys-img:sdk-sys-img">
|
||||
<xsl:text>{fetchurl}:
|
||||
|
||||
{
|
||||
</xsl:text><xsl:for-each select="remotePackage[starts-with(@path, 'system-images;')]">
|
||||
<xsl:variable name="revision"><xsl:apply-templates mode="revision" select="type-details" /></xsl:variable>
|
||||
|
||||
<xsl:variable name="attrkey"><xsl:apply-templates mode="attrkey" select="type-details" /></xsl:variable>
|
||||
|
||||
<xsl:text> </xsl:text><xsl:value-of select="$attrkey" /><xsl:text> = {
|
||||
name = "system-image-</xsl:text><xsl:value-of select="$revision" /><xsl:text>";
|
||||
path = "</xsl:text><xsl:value-of select="translate(@path, ';', '/')" /><xsl:text>";
|
||||
revision = "</xsl:text><xsl:value-of select="$revision" /><xsl:text>";
|
||||
displayName = "</xsl:text><xsl:value-of select="display-name" /><xsl:text>";
|
||||
archives.all = fetchurl {</xsl:text>
|
||||
<xsl:for-each select="archives/archive"><xsl:text>
|
||||
url = "</xsl:text><xsl:call-template name="repository-url"/><xsl:text>";
|
||||
sha1 = "</xsl:text><xsl:value-of select="complete/checksum" /><xsl:text>";</xsl:text>
|
||||
</xsl:for-each><xsl:text>
|
||||
};
|
||||
};
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
<xsl:text>}</xsl:text>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
145
pkgs/development/mobile/androidenv/examples/shell.nix
Normal file
145
pkgs/development/mobile/androidenv/examples/shell.nix
Normal file
@ -0,0 +1,145 @@
|
||||
{
|
||||
# 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";
|
||||
platformTools = "30.0.5";
|
||||
buildTools = "30.0.3";
|
||||
ndk = "22.0.7026061";
|
||||
|
||||
# or the LTS NDK:
|
||||
# ndk = "21.3.6528147";
|
||||
cmake = "3.10.2";
|
||||
emulator = "30.3.4";
|
||||
};
|
||||
|
||||
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;
|
||||
ndkVersion = android.versions.ndk;
|
||||
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.
|
||||
cmake_root="$(echo "$ANDROID_SDK_ROOT/cmake/${android.versions.cmake}".*/)"
|
||||
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
|
||||
'';
|
||||
}
|
||||
|
26
pkgs/development/mobile/androidenv/fetchrepo.sh
Executable file
26
pkgs/development/mobile/androidenv/fetchrepo.sh
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl
|
||||
|
||||
die() {
|
||||
echo "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
fetch() {
|
||||
local url="https://dl.google.com/android/repository/$1"
|
||||
echo "$url -> $2"
|
||||
curl -s "$url" -o "$2" || die "Failed to fetch $url"
|
||||
}
|
||||
|
||||
pushd "$(dirname "$0")" &>/dev/null || exit 1
|
||||
|
||||
mkdir -p xml
|
||||
|
||||
fetch repository2-1.xml xml/repository2-1.xml
|
||||
for img in android android-tv android-wear android-wear-cn android-automotive google_apis google_apis_playstore
|
||||
do
|
||||
fetch sys-img/$img/sys-img2-1.xml xml/$img-sys-img2-1.xml
|
||||
done
|
||||
fetch addon2-1.xml xml/addon2-1.xml
|
||||
|
||||
popd &>/dev/null
|
@ -1,36 +1,3 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl libxslt
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
die() {
|
||||
echo "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
fetch() {
|
||||
local url="https://dl.google.com/android/repository/$1"
|
||||
echo "$url -> $2"
|
||||
curl -s "$url" -o "$2" || die "Failed to fetch $url"
|
||||
}
|
||||
|
||||
pushd "$(dirname "$0")" &>/dev/null || exit 1
|
||||
|
||||
mkdir -p xml
|
||||
|
||||
# Convert base packages
|
||||
fetch repository2-1.xml xml/repository2-1.xml
|
||||
xsltproc convertpackages.xsl xml/repository2-1.xml > generated/packages.nix
|
||||
|
||||
# Convert system images
|
||||
for img in android android-tv android-wear android-wear-cn google_apis google_apis_playstore
|
||||
do
|
||||
fetch sys-img/$img/sys-img2-1.xml xml/$img-sys-img2-1.xml
|
||||
xsltproc --stringparam imageType $img convertsystemimages.xsl xml/$img-sys-img2-1.xml > generated/system-images-$img.nix
|
||||
done
|
||||
|
||||
# Convert system addons
|
||||
fetch addon2-1.xml xml/addon2-1.xml
|
||||
xsltproc convertaddons.xsl xml/addon2-1.xml > generated/addons.nix
|
||||
|
||||
popd &>/dev/null
|
||||
./fetchrepo.sh && ./mkrepo.sh
|
||||
|
@ -1,964 +0,0 @@
|
||||
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
addons = {
|
||||
|
||||
"10"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-10";
|
||||
revision = "10";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-10_r02.zip";
|
||||
sha1 = "cc0711857c881fa7534f90cf8cc09b8fe985484d";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"11"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-11";
|
||||
revision = "11";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-11_r01.zip";
|
||||
sha1 = "5eab5e81addee9f3576d456d205208314b5146a5";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"12"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-12";
|
||||
revision = "12";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-12_r01.zip";
|
||||
sha1 = "e9999f4fa978812174dfeceec0721c793a636e5d";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"13"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-13";
|
||||
revision = "13";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-13_r01.zip";
|
||||
sha1 = "3b153edd211c27dc736c893c658418a4f9041417";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"14"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-14";
|
||||
revision = "14";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-14_r02.zip";
|
||||
sha1 = "f8eb4d96ad0492b4c0db2d7e4f1a1a3836664d39";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"15"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-15";
|
||||
revision = "15";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-15_r03.zip";
|
||||
sha1 = "d0d2bf26805eb271693570a1aaec33e7dc3f45e9";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"16"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-16";
|
||||
revision = "16";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-16_r04.zip";
|
||||
sha1 = "ee6acf1b01020bfa8a8e24725dbc4478bee5e792";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"17"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-17";
|
||||
revision = "17";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-17_r04.zip";
|
||||
sha1 = "a076be0677f38df8ca5536b44dfb411a0c808c4f";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"18"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-18";
|
||||
revision = "18";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-18_r04.zip";
|
||||
sha1 = "6109603409debdd40854d4d4a92eaf8481462c8b";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"19"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-19";
|
||||
revision = "19";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-19_r20.zip";
|
||||
sha1 = "5b933abe830b2f25b4c0f171d45e9e0651e56311";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"21"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-21";
|
||||
revision = "21";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-21_r01.zip";
|
||||
sha1 = "66a754efb24e9bb07cc51648426443c7586c9d4a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"22"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-22";
|
||||
revision = "22";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-22_r01.zip";
|
||||
sha1 = "5def0f42160cba8acff51b9c0c7e8be313de84f5";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"23"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-23";
|
||||
revision = "23";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-23_r01.zip";
|
||||
sha1 = "04c5cc1a7c88967250ebba9561d81e24104167db";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"24"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-24";
|
||||
revision = "24";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-24_r1.zip";
|
||||
sha1 = "31361c2868f27343ee917fbd259c1463821b6145";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"3"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-3";
|
||||
revision = "3";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-3-r03.zip";
|
||||
sha1 = "1f92abf3a76be66ae8032257fc7620acbd2b2e3a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"4"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-4";
|
||||
revision = "4";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-4_r02.zip";
|
||||
sha1 = "9b6e86d8568558de4d606a7debc4f6049608dbd0";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"5"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-5";
|
||||
revision = "5";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-5_r01.zip";
|
||||
sha1 = "46eaeb56b645ee7ffa24ede8fa17f3df70db0503";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"6"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-6";
|
||||
revision = "6";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-6_r01.zip";
|
||||
sha1 = "5ff545d96e031e09580a6cf55713015c7d4936b2";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"7"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-7";
|
||||
revision = "7";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-7_r01.zip";
|
||||
sha1 = "2e7f91e0fe34fef7f58aeced973c6ae52361b5ac";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"8"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-8";
|
||||
revision = "8";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-8_r02.zip";
|
||||
sha1 = "3079958e7ec87222cac1e6b27bc471b27bf2c352";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"9"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-9";
|
||||
revision = "9";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-9_r02.zip";
|
||||
sha1 = "78664645a1e9accea4430814f8694291a7f1ea5d";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"12"."google_tv_addon" = {
|
||||
name = "google_tv_addon";
|
||||
path = "add-ons/addon-google_tv_addon-google-12";
|
||||
revision = "12";
|
||||
displayName = "Google TV Addon";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_tv-12_r02.zip";
|
||||
sha1 = "92128a12e7e8b0fb5bac59153d7779b717e7b840";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"13"."google_tv_addon" = {
|
||||
name = "google_tv_addon";
|
||||
path = "add-ons/addon-google_tv_addon-google-13";
|
||||
revision = "13";
|
||||
displayName = "Google TV Addon";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_tv-13_r01.zip";
|
||||
sha1 = "b73f7c66011ac8180b44aa4e83b8d78c66ea9a09";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"25"."google_apis" = {
|
||||
name = "google_apis";
|
||||
path = "add-ons/addon-google_apis-google-25";
|
||||
revision = "25";
|
||||
displayName = "Google APIs";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_apis-25_r1.zip";
|
||||
sha1 = "550e83eea9513ab11c44919ac6da54b36084a9f3";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
extras = {
|
||||
|
||||
|
||||
"extras;android;gapid;1" = {
|
||||
name = "extras-android-gapid-1";
|
||||
path = "extras/android/gapid/1";
|
||||
revision = "1.0.3";
|
||||
displayName = "GPU Debugging tools";
|
||||
archives = {
|
||||
linux = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/gapid_r01_linux.zip";
|
||||
sha1 = "7c9ef7544cf0aea030bcc29bd8e12c04fd53e653";
|
||||
};
|
||||
macosx = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/gapid_r01_osx.zip";
|
||||
sha1 = "597eb271349d890566274861eba2770a84ee4c69";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;android;gapid;3" = {
|
||||
name = "extras-android-gapid-3";
|
||||
path = "extras/android/gapid/3";
|
||||
revision = "3.1.0";
|
||||
displayName = "GPU Debugging tools";
|
||||
archives = {
|
||||
linux = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/gapid_2994895_linux.zip";
|
||||
sha1 = "e40371ba191f617e4e79bc760d0ab2948ba8cf46";
|
||||
};
|
||||
macosx = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/gapid_2994895_osx.zip";
|
||||
sha1 = "ad86a2350b7b9908300277bf03d41649659de384";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;android;m2repository" = {
|
||||
name = "extras-android-m2repository";
|
||||
path = "extras/android/m2repository";
|
||||
revision = "47.0.0";
|
||||
displayName = "Android Support Repository";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/android_m2repository_r47.zip";
|
||||
sha1 = "a0d22beacc106a6977321f2b07d692ce4979e96a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;Android_Emulator_Hypervisor_Driver" = {
|
||||
name = "extras-google-Android_Emulator_Hypervisor_Driver";
|
||||
path = "extras/google/Android_Emulator_Hypervisor_Driver";
|
||||
revision = "1.4.0";
|
||||
displayName = "Android Emulator Hypervisor Driver for AMD Processors (installer)";
|
||||
archives = {
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;admob_ads_sdk" = {
|
||||
name = "extras-google-admob_ads_sdk";
|
||||
path = "extras/google/admob_ads_sdk";
|
||||
revision = "11";
|
||||
displayName = "Google AdMob Ads SDK";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/GoogleAdMobAdsSdkAndroid-6.4.1.zip";
|
||||
sha1 = "0102859d9575baa0bf4fd5eb422af2ad0fe6cb82";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;analytics_sdk_v2" = {
|
||||
name = "extras-google-analytics_sdk_v2";
|
||||
path = "extras/google/analytics_sdk_v2";
|
||||
revision = "3";
|
||||
displayName = "Google Analytics App Tracking SDK";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/GoogleAnalyticsAndroid_2.0beta5.zip";
|
||||
sha1 = "dc14026bf0ce78315cb5dd00552607de0894de83";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;auto" = {
|
||||
name = "extras-google-auto";
|
||||
path = "extras/google/auto";
|
||||
revision = "1.1";
|
||||
displayName = "Android Auto Desktop Head Unit emulator";
|
||||
archives = {
|
||||
linux = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/desktop-head-unit-linux_r01.1.zip";
|
||||
sha1 = "202a6e1b3009a0eb815f8c672d2d5b3717de6169";
|
||||
};
|
||||
macosx = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/desktop-head-unit-macosx_r01.1.zip";
|
||||
sha1 = "8179cbb3914493ebc5eb65b731cba061582f2e84";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;gcm" = {
|
||||
name = "extras-google-gcm";
|
||||
path = "extras/google/gcm";
|
||||
revision = "3";
|
||||
displayName = "Google Cloud Messaging for Android Library";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/gcm_r03.zip";
|
||||
sha1 = "ad066fd0dc7fc99d8aadac09c65a3c2519fbc7bf";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;google_play_services" = {
|
||||
name = "extras-google-google_play_services";
|
||||
path = "extras/google/google_play_services";
|
||||
revision = "49";
|
||||
displayName = "Google Play services";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_play_services_v16_1_rc09.zip";
|
||||
sha1 = "f95bf19634e2ab0430923247fe2c50246432d2e9";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;google_play_services_froyo" = {
|
||||
name = "extras-google-google_play_services_froyo";
|
||||
path = "extras/google/google_play_services_froyo";
|
||||
revision = "12";
|
||||
displayName = "Google Play services for Froyo";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_play_services_3265130_r12.zip";
|
||||
sha1 = "92558dbc380bba3d55d0ec181167fb05ce7c79d9";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;instantapps" = {
|
||||
name = "extras-google-instantapps";
|
||||
path = "extras/google/instantapps";
|
||||
revision = "1.9.0";
|
||||
displayName = "Google Play Instant Development SDK";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/iasdk-1.9.0-1566514721.zip";
|
||||
sha1 = "c498367dcd7db30154b3e70c4ddbb1b0ea4b8d20";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;m2repository" = {
|
||||
name = "extras-google-m2repository";
|
||||
path = "extras/google/m2repository";
|
||||
revision = "58";
|
||||
displayName = "Google Repository";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/google_m2repository_gms_v11_3_rc05_wear_2_0_5.zip";
|
||||
sha1 = "05086add9e3a0eb1b67111108d7757a4337c3f10";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;market_apk_expansion" = {
|
||||
name = "extras-google-market_apk_expansion";
|
||||
path = "extras/google/market_apk_expansion";
|
||||
revision = "1";
|
||||
displayName = "Google Play APK Expansion library";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/market_apk_expansion-r03.zip";
|
||||
sha1 = "5305399dc1a56814e86b8459ce24871916f78b8c";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;market_licensing" = {
|
||||
name = "extras-google-market_licensing";
|
||||
path = "extras/google/market_licensing";
|
||||
revision = "1";
|
||||
displayName = "Google Play Licensing Library";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/market_licensing-r02.zip";
|
||||
sha1 = "355e8dc304a92a5616db235af8ee7bd554356254";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;simulators" = {
|
||||
name = "extras-google-simulators";
|
||||
path = "extras/google/simulators";
|
||||
revision = "1";
|
||||
displayName = "Android Auto API Simulators";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/simulator_r01.zip";
|
||||
sha1 = "4fb5344e34e8faab4db18af07dace44c50db26a7";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;usb_driver" = {
|
||||
name = "extras-google-usb_driver";
|
||||
path = "extras/google/usb_driver";
|
||||
revision = "12";
|
||||
displayName = "Google USB Driver";
|
||||
archives = {
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;google;webdriver" = {
|
||||
name = "extras-google-webdriver";
|
||||
path = "extras/google/webdriver";
|
||||
revision = "2";
|
||||
displayName = "Google Web Driver";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/webdriver_r02.zip";
|
||||
sha1 = "13f3a3b2670a5fc04a7342861644be9a01b07e38";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0.zip";
|
||||
sha1 = "b621b9d5adf273bb0725948589863e60e96eeaf1";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha8";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha8";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-alpha8";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha8.zip";
|
||||
sha1 = "cd13d16a8f0198c1d6040ec8b1d0d4e5bb7feb6a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-beta1";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta1";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-beta1";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-beta1.zip";
|
||||
sha1 = "042c25575e7650e96f0f5f5d1d3c54ed38eb821a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-beta2";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta2";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-beta2";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-beta2.zip";
|
||||
sha1 = "28492fd42b20ae1586591ff906556d459cfdaae8";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-beta3";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta3";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-beta3";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-beta3.zip";
|
||||
sha1 = "268e763fa64bd217d8d830e59ce76be19aaba631";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-beta4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta4";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-beta4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-beta4.zip";
|
||||
sha1 = "2213bf37e7a2869db2635895b8e90ca6841e79d2";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-beta5";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-beta5";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-beta5";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-beta5.zip";
|
||||
sha1 = "3918cfef73e64048d0b3e048068e208b414e7e91";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.1";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.1";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.1";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.1.zip";
|
||||
sha1 = "76f8823def9a6da8954a54737762a6820bc1d043";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.2";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.2";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.2.zip";
|
||||
sha1 = "96d7ff669f0e808e9833b2c2e320702826ccc8be";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0.zip";
|
||||
sha1 = "70acf99689b933bc6735645d5c3d92b91954b6cb";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha8";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha8";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-alpha8";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha8.zip";
|
||||
sha1 = "7912ba03b04831f918f523648f118c4ee4da7604";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-beta1";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-beta1";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-beta1";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-beta1.zip";
|
||||
sha1 = "11f2f5cec4ff02986bad75435e5be77b704b4c64";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-beta2";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-beta2";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-beta2";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-beta2.zip";
|
||||
sha1 = "623939865ede2e5c2c975dc55963e0d182bcce95";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-beta3";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-beta3";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-beta3";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-beta3.zip";
|
||||
sha1 = "d78bb6a8ce92005fb1e4ed55d892a65b4258c60b";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-beta4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-beta4";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-beta4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-beta4.zip";
|
||||
sha1 = "dc60844aab93a09a54a3c107685a77b18d7c1c39";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-beta5";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-beta5";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-beta5";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-beta5.zip";
|
||||
sha1 = "4660f6c7a576ea1364f0c3225db71c29ca660d9a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.1";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.1";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.1";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.1.zip";
|
||||
sha1 = "342b0894b8651fff37586f80f383733e97aba9f9";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.2";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.2";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.2";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.2.zip";
|
||||
sha1 = "3d9688a50fe0ed7348275f85d1b02278f616d8a4";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,114 +0,0 @@
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
"21".android-tv."x86" = {
|
||||
name = "system-image-21-android-tv-x86";
|
||||
path = "system-images/android-21/android-tv/x86";
|
||||
revision = "21-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-21_r03.zip";
|
||||
sha1 = "2f8a1988188d6abfd6c6395baeb4471a034dc1e8";
|
||||
};
|
||||
};
|
||||
"21".android-tv."armeabi-v7a" = {
|
||||
name = "system-image-21-android-tv-armeabi-v7a";
|
||||
path = "system-images/android-21/android-tv/armeabi-v7a";
|
||||
revision = "21-android-tv-armeabi-v7a";
|
||||
displayName = "Android TV ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/armeabi-v7a-21_r03.zip";
|
||||
sha1 = "b63e28a47f11b639dd94981a458b7abfa89ac331";
|
||||
};
|
||||
};
|
||||
"22".android-tv."x86" = {
|
||||
name = "system-image-22-android-tv-x86";
|
||||
path = "system-images/android-22/android-tv/x86";
|
||||
revision = "22-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-22_r03.zip";
|
||||
sha1 = "c78efd5a155622eb490be9d326f5783993375c35";
|
||||
};
|
||||
};
|
||||
"23".android-tv."x86" = {
|
||||
name = "system-image-23-android-tv-x86";
|
||||
path = "system-images/android-23/android-tv/x86";
|
||||
revision = "23-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-23_r19.zip";
|
||||
sha1 = "47e8d6b08a337a0672f0f105bf907d39ed9457ec";
|
||||
};
|
||||
};
|
||||
"23".android-tv."armeabi-v7a" = {
|
||||
name = "system-image-23-android-tv-armeabi-v7a";
|
||||
path = "system-images/android-23/android-tv/armeabi-v7a";
|
||||
revision = "23-android-tv-armeabi-v7a";
|
||||
displayName = "Android TV ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/armeabi-v7a-23_r12.zip";
|
||||
sha1 = "bd84678ae8caf71d584f5210e866b2807e7b4b52";
|
||||
};
|
||||
};
|
||||
"24".android-tv."x86" = {
|
||||
name = "system-image-24-android-tv-x86";
|
||||
path = "system-images/android-24/android-tv/x86";
|
||||
revision = "24-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-24_r20.zip";
|
||||
sha1 = "0b8cd98dec9ebd04376ce4f6e270193ceae8acea";
|
||||
};
|
||||
};
|
||||
"25".android-tv."x86" = {
|
||||
name = "system-image-25-android-tv-x86";
|
||||
path = "system-images/android-25/android-tv/x86";
|
||||
revision = "25-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-25_r14.zip";
|
||||
sha1 = "1c88f11683375c059803c3a7be8e880cc23a6f9a";
|
||||
};
|
||||
};
|
||||
"26".android-tv."x86" = {
|
||||
name = "system-image-26-android-tv-x86";
|
||||
path = "system-images/android-26/android-tv/x86";
|
||||
revision = "26-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-26_r12.zip";
|
||||
sha1 = "d8b12e543925a0454403d2a854996a76410ec374";
|
||||
};
|
||||
};
|
||||
"27".android-tv."x86" = {
|
||||
name = "system-image-27-android-tv-x86";
|
||||
path = "system-images/android-27/android-tv/x86";
|
||||
revision = "27-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-27_r07.zip";
|
||||
sha1 = "5ed40e568c0d8d023c5b6c76634b22a477ed54aa";
|
||||
};
|
||||
};
|
||||
"28".android-tv."x86" = {
|
||||
name = "system-image-28-android-tv-x86";
|
||||
path = "system-images/android-28/android-tv/x86";
|
||||
revision = "28-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-28_r08.zip";
|
||||
sha1 = "f5f8f296dfaca7945434992761c8d47d50257c21";
|
||||
};
|
||||
};
|
||||
"Q".android-tv."x86" = {
|
||||
name = "system-image-Q-android-tv-x86";
|
||||
path = "system-images/android-Q/android-tv/x86";
|
||||
revision = "Q-android-tv-x86";
|
||||
displayName = "Android TV Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-tv/x86-Q_r01.zip";
|
||||
sha1 = "80c66ddce0dbe53fe6fedcade230d518112fffb1";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
"25".android-wear."armeabi-v7a" = {
|
||||
name = "system-image-25-android-wear-armeabi-v7a";
|
||||
path = "system-images/android-25/android-wear-cn/armeabi-v7a";
|
||||
revision = "25-android-wear-armeabi-v7a";
|
||||
displayName = "China version of Android Wear ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear-cn/armeabi-v7a-25_r04.zip";
|
||||
sha1 = "02d7bc86df054d1e89fe5856b3af1d2c142cab41";
|
||||
};
|
||||
};
|
||||
"25".android-wear."x86" = {
|
||||
name = "system-image-25-android-wear-x86";
|
||||
path = "system-images/android-25/android-wear-cn/x86";
|
||||
revision = "25-android-wear-x86";
|
||||
displayName = "China version of Android Wear Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear-cn/x86-25_r04.zip";
|
||||
sha1 = "73eab14c7cf2f6941e1fee61e0038ead7a2c7f4d";
|
||||
};
|
||||
};
|
||||
"26".android-wear."x86" = {
|
||||
name = "system-image-26-android-wear-x86";
|
||||
path = "system-images/android-26/android-wear-cn/x86";
|
||||
revision = "26-android-wear-x86";
|
||||
displayName = "China version of Android Wear Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear-cn/x86-26_r04.zip";
|
||||
sha1 = "fdc8a313f889a2d6522de1fbc00ee9e13547d096";
|
||||
};
|
||||
};
|
||||
"28".android-wear."x86" = {
|
||||
name = "system-image-28-android-wear-x86";
|
||||
path = "system-images/android-28/android-wear-cn/x86";
|
||||
revision = "28-android-wear-x86";
|
||||
displayName = "China version of Wear OS Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear-cn/x86-28_r03.zip";
|
||||
sha1 = "2099d87709c5e064273925dbf2cf1fd081bf0262";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
"23".android-wear."armeabi-v7a" = {
|
||||
name = "system-image-23-android-wear-armeabi-v7a";
|
||||
path = "system-images/android-23/android-wear/armeabi-v7a";
|
||||
revision = "23-android-wear-armeabi-v7a";
|
||||
displayName = "Android Wear ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear/armeabi-v7a-23_r06.zip";
|
||||
sha1 = "0df5d34b1cdaaaa3805a2f06bb889901eabe2e71";
|
||||
};
|
||||
};
|
||||
"23".android-wear."x86" = {
|
||||
name = "system-image-23-android-wear-x86";
|
||||
path = "system-images/android-23/android-wear/x86";
|
||||
revision = "23-android-wear-x86";
|
||||
displayName = "Android Wear Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear/x86-23_r06.zip";
|
||||
sha1 = "3b15c123f3f71459d5b60c1714d49c5d90a5525e";
|
||||
};
|
||||
};
|
||||
"25".android-wear."armeabi-v7a" = {
|
||||
name = "system-image-25-android-wear-armeabi-v7a";
|
||||
path = "system-images/android-25/android-wear/armeabi-v7a";
|
||||
revision = "25-android-wear-armeabi-v7a";
|
||||
displayName = "Android Wear ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear/armeabi-v7a-25_r03.zip";
|
||||
sha1 = "76d3568a4e08023047af7d13025a35c9bf1d7e5c";
|
||||
};
|
||||
};
|
||||
"25".android-wear."x86" = {
|
||||
name = "system-image-25-android-wear-x86";
|
||||
path = "system-images/android-25/android-wear/x86";
|
||||
revision = "25-android-wear-x86";
|
||||
displayName = "Android Wear Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear/x86-25_r03.zip";
|
||||
sha1 = "693fce7b487a65491a4e88e9f740959688c9dbe6";
|
||||
};
|
||||
};
|
||||
"26".android-wear."x86" = {
|
||||
name = "system-image-26-android-wear-x86";
|
||||
path = "system-images/android-26/android-wear/x86";
|
||||
revision = "26-android-wear-x86";
|
||||
displayName = "Android Wear Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear/x86-26_r04.zip";
|
||||
sha1 = "fbffa91b936ca18fcc1e0bab2b52a8b0835cbb1c";
|
||||
};
|
||||
};
|
||||
"28".android-wear."x86" = {
|
||||
name = "system-image-28-android-wear-x86";
|
||||
path = "system-images/android-28/android-wear/x86";
|
||||
revision = "28-android-wear-x86";
|
||||
displayName = "Wear OS Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android-wear/x86-28_r03.zip";
|
||||
sha1 = "b80bd53ab69f19441714bff2e4d55931e6d3f7be";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,364 +0,0 @@
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
"10".default."armeabi-v7a" = {
|
||||
name = "system-image-10-default-armeabi-v7a";
|
||||
path = "system-images/android-10/default/armeabi-v7a";
|
||||
revision = "10-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-10_r05.zip";
|
||||
sha1 = "8537616a7add47cce24c60f18bc2429e3dc90ae3";
|
||||
};
|
||||
};
|
||||
"14".default."armeabi-v7a" = {
|
||||
name = "system-image-14-default-armeabi-v7a";
|
||||
path = "system-images/android-14/default/armeabi-v7a";
|
||||
revision = "14-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/sysimg_armv7a-14_r02.zip";
|
||||
sha1 = "d8991b0c06b18d7d6ed4169d67460ee1add6661b";
|
||||
};
|
||||
};
|
||||
"15".default."armeabi-v7a" = {
|
||||
name = "system-image-15-default-armeabi-v7a";
|
||||
path = "system-images/android-15/default/armeabi-v7a";
|
||||
revision = "15-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-15_r05.zip";
|
||||
sha1 = "03d7ed95a9d3b107e3f2e5b166d017ea12529e70";
|
||||
};
|
||||
};
|
||||
"16".default."armeabi-v7a" = {
|
||||
name = "system-image-16-default-armeabi-v7a";
|
||||
path = "system-images/android-16/default/armeabi-v7a";
|
||||
revision = "16-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-16_r06.zip";
|
||||
sha1 = "69b944b0d5a18c8563fa80d7d229af64890f724e";
|
||||
};
|
||||
};
|
||||
"17".default."armeabi-v7a" = {
|
||||
name = "system-image-17-default-armeabi-v7a";
|
||||
path = "system-images/android-17/default/armeabi-v7a";
|
||||
revision = "17-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-17_r06.zip";
|
||||
sha1 = "a18a3fd0958ec4ef52507f58e414fc5c7dfd59d6";
|
||||
};
|
||||
};
|
||||
"18".default."armeabi-v7a" = {
|
||||
name = "system-image-18-default-armeabi-v7a";
|
||||
path = "system-images/android-18/default/armeabi-v7a";
|
||||
revision = "18-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-18_r05.zip";
|
||||
sha1 = "580b583720f7de671040d5917c8c9db0c7aa03fd";
|
||||
};
|
||||
};
|
||||
"19".default."armeabi-v7a" = {
|
||||
name = "system-image-19-default-armeabi-v7a";
|
||||
path = "system-images/android-19/default/armeabi-v7a";
|
||||
revision = "19-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-19_r05.zip";
|
||||
sha1 = "d1a5fd4f2e1c013c3d3d9bfe7e9db908c3ed56fa";
|
||||
};
|
||||
};
|
||||
"21".default."armeabi-v7a" = {
|
||||
name = "system-image-21-default-armeabi-v7a";
|
||||
path = "system-images/android-21/default/armeabi-v7a";
|
||||
revision = "21-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-21_r04.zip";
|
||||
sha1 = "8c606f81306564b65e41303d2603e4c42ded0d10";
|
||||
};
|
||||
};
|
||||
"22".default."armeabi-v7a" = {
|
||||
name = "system-image-22-default-armeabi-v7a";
|
||||
path = "system-images/android-22/default/armeabi-v7a";
|
||||
revision = "22-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-22_r02.zip";
|
||||
sha1 = "2114ec015dbf3a16cbcb4f63e8a84a1b206a07a1";
|
||||
};
|
||||
};
|
||||
"23".default."armeabi-v7a" = {
|
||||
name = "system-image-23-default-armeabi-v7a";
|
||||
path = "system-images/android-23/default/armeabi-v7a";
|
||||
revision = "23-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-23_r06.zip";
|
||||
sha1 = "7cf2ad756e54a3acfd81064b63cb0cb9dff2798d";
|
||||
};
|
||||
};
|
||||
"24".default."armeabi-v7a" = {
|
||||
name = "system-image-24-default-armeabi-v7a";
|
||||
path = "system-images/android-24/default/armeabi-v7a";
|
||||
revision = "24-default-armeabi-v7a";
|
||||
displayName = "ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/armeabi-v7a-24_r07.zip";
|
||||
sha1 = "3454546b4eed2d6c3dd06d47757d6da9f4176033";
|
||||
};
|
||||
};
|
||||
"24".default."arm64-v8a" = {
|
||||
name = "system-image-24-default-arm64-v8a";
|
||||
path = "system-images/android-24/default/arm64-v8a";
|
||||
revision = "24-default-arm64-v8a";
|
||||
displayName = "ARM 64 v8a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/arm64-v8a-24_r07.zip";
|
||||
sha1 = "e8ab2e49e4efe4b064232b33b5eeaded61437d7f";
|
||||
};
|
||||
};
|
||||
"16".default."mips" = {
|
||||
name = "system-image-16-default-mips";
|
||||
path = "system-images/android-16/default/mips";
|
||||
revision = "16-default-mips";
|
||||
displayName = "MIPS System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/sysimg_mips-16_r04.zip";
|
||||
sha1 = "67943c54fb3943943ffeb05fdd39c0b753681f6e";
|
||||
};
|
||||
};
|
||||
"17".default."mips" = {
|
||||
name = "system-image-17-default-mips";
|
||||
path = "system-images/android-17/default/mips";
|
||||
revision = "17-default-mips";
|
||||
displayName = "MIPS System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/sysimg_mips-17_r01.zip";
|
||||
sha1 = "f0c6e153bd584c29e51b5c9723cfbf30f996a05d";
|
||||
};
|
||||
};
|
||||
"10".default."x86" = {
|
||||
name = "system-image-10-default-x86";
|
||||
path = "system-images/android-10/default/x86";
|
||||
revision = "10-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-10_r05.zip";
|
||||
sha1 = "a166d5ccbb165e1dd5464fbfeec30a61f77790d8";
|
||||
};
|
||||
};
|
||||
"15".default."x86" = {
|
||||
name = "system-image-15-default-x86";
|
||||
path = "system-images/android-15/default/x86";
|
||||
revision = "15-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-15_r05.zip";
|
||||
sha1 = "c387e0efed2cdc610e5944eea67b7b692d03760c";
|
||||
};
|
||||
};
|
||||
"16".default."x86" = {
|
||||
name = "system-image-16-default-x86";
|
||||
path = "system-images/android-16/default/x86";
|
||||
revision = "16-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-16_r06.zip";
|
||||
sha1 = "bf1bf8c5591346118d2235da1ad20e7be8a3e9cd";
|
||||
};
|
||||
};
|
||||
"17".default."x86" = {
|
||||
name = "system-image-17-default-x86";
|
||||
path = "system-images/android-17/default/x86";
|
||||
revision = "17-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-17_r04.zip";
|
||||
sha1 = "03c6d022ab2dcbbcf655d78ba5ccb0431cadcaec";
|
||||
};
|
||||
};
|
||||
"18".default."x86" = {
|
||||
name = "system-image-18-default-x86";
|
||||
path = "system-images/android-18/default/x86";
|
||||
revision = "18-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-18_r04.zip";
|
||||
sha1 = "7a4ced4d9b0ab48047825491b4072dc2eb9b610e";
|
||||
};
|
||||
};
|
||||
"19".default."x86" = {
|
||||
name = "system-image-19-default-x86";
|
||||
path = "system-images/android-19/default/x86";
|
||||
revision = "19-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-19_r06.zip";
|
||||
sha1 = "2ac82153aae97f7eae4c5a0761224fe04321d03d";
|
||||
};
|
||||
};
|
||||
"21".default."x86" = {
|
||||
name = "system-image-21-default-x86";
|
||||
path = "system-images/android-21/default/x86";
|
||||
revision = "21-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-21_r05.zip";
|
||||
sha1 = "00f0eb0a1003efe3316347f762e20a85d8749cff";
|
||||
};
|
||||
};
|
||||
"22".default."x86" = {
|
||||
name = "system-image-22-default-x86";
|
||||
path = "system-images/android-22/default/x86";
|
||||
revision = "22-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-22_r06.zip";
|
||||
sha1 = "e33e2a6cc3f1cc56b2019dbef3917d2eeb26f54e";
|
||||
};
|
||||
};
|
||||
"23".default."x86" = {
|
||||
name = "system-image-23-default-x86";
|
||||
path = "system-images/android-23/default/x86";
|
||||
revision = "23-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-23_r10.zip";
|
||||
sha1 = "f6c3e3dd7bd951454795aa75c3a145fd05ac25bb";
|
||||
};
|
||||
};
|
||||
"24".default."x86" = {
|
||||
name = "system-image-24-default-x86";
|
||||
path = "system-images/android-24/default/x86";
|
||||
revision = "24-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-24_r08.zip";
|
||||
sha1 = "c1cae7634b0216c0b5990f2c144eb8ca948e3511";
|
||||
};
|
||||
};
|
||||
"25".default."x86" = {
|
||||
name = "system-image-25-default-x86";
|
||||
path = "system-images/android-25/default/x86";
|
||||
revision = "25-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-25_r01.zip";
|
||||
sha1 = "78ce7eb1387d598685633b9f7cbb300c3d3aeb5f";
|
||||
};
|
||||
};
|
||||
"26".default."x86" = {
|
||||
name = "system-image-26-default-x86";
|
||||
path = "system-images/android-26/default/x86";
|
||||
revision = "26-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-26_r01.zip";
|
||||
sha1 = "e613d6e0da668e30daf547f3c6627a6352846f90";
|
||||
};
|
||||
};
|
||||
"27".default."x86" = {
|
||||
name = "system-image-27-default-x86";
|
||||
path = "system-images/android-27/default/x86";
|
||||
revision = "27-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-27_r01.zip";
|
||||
sha1 = "4ec990fac7b62958decd12e18a4cd389dfe7c582";
|
||||
};
|
||||
};
|
||||
"28".default."x86" = {
|
||||
name = "system-image-28-default-x86";
|
||||
path = "system-images/android-28/default/x86";
|
||||
revision = "28-default-x86";
|
||||
displayName = "Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86-28_r04.zip";
|
||||
sha1 = "ce03c42d80c0fc6dc47f6455dbee7aa275d02780";
|
||||
};
|
||||
};
|
||||
"21".default."x86_64" = {
|
||||
name = "system-image-21-default-x86_64";
|
||||
path = "system-images/android-21/default/x86_64";
|
||||
revision = "21-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-21_r05.zip";
|
||||
sha1 = "9078a095825a69e5e215713f0866c83cef65a342";
|
||||
};
|
||||
};
|
||||
"22".default."x86_64" = {
|
||||
name = "system-image-22-default-x86_64";
|
||||
path = "system-images/android-22/default/x86_64";
|
||||
revision = "22-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-22_r06.zip";
|
||||
sha1 = "5db3b27f78cd9c4c5092b1cad5a5dd479fb5b2e4";
|
||||
};
|
||||
};
|
||||
"23".default."x86_64" = {
|
||||
name = "system-image-23-default-x86_64";
|
||||
path = "system-images/android-23/default/x86_64";
|
||||
revision = "23-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-23_r10.zip";
|
||||
sha1 = "7cbc291483ca07dc67b71268c5f08a5755f50f51";
|
||||
};
|
||||
};
|
||||
"24".default."x86_64" = {
|
||||
name = "system-image-24-default-x86_64";
|
||||
path = "system-images/android-24/default/x86_64";
|
||||
revision = "24-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-24_r08.zip";
|
||||
sha1 = "f6559e1949a5879f31a9662f4f0e50ad60181684";
|
||||
};
|
||||
};
|
||||
"25".default."x86_64" = {
|
||||
name = "system-image-25-default-x86_64";
|
||||
path = "system-images/android-25/default/x86_64";
|
||||
revision = "25-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-25_r01.zip";
|
||||
sha1 = "7093d7b39216020226ff430a3b7b81c94d31ad37";
|
||||
};
|
||||
};
|
||||
"26".default."x86_64" = {
|
||||
name = "system-image-26-default-x86_64";
|
||||
path = "system-images/android-26/default/x86_64";
|
||||
revision = "26-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-26_r01.zip";
|
||||
sha1 = "432f149c048bffce7f9de526ec65b336daf7a0a3";
|
||||
};
|
||||
};
|
||||
"27".default."x86_64" = {
|
||||
name = "system-image-27-default-x86_64";
|
||||
path = "system-images/android-27/default/x86_64";
|
||||
revision = "27-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-27_r01.zip";
|
||||
sha1 = "2878261011a59ca3de29dc5b457a495fdb268d60";
|
||||
};
|
||||
};
|
||||
"28".default."x86_64" = {
|
||||
name = "system-image-28-default-x86_64";
|
||||
path = "system-images/android-28/default/x86_64";
|
||||
revision = "28-default-x86_64";
|
||||
displayName = "Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/android/x86_64-28_r04.zip";
|
||||
sha1 = "d47a85c8f4e9fd57df97814ad8884eeb0f3a0ef0";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,384 +0,0 @@
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
"10".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-10-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-10/google_apis/armeabi-v7a";
|
||||
revision = "10-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-10_r06.zip";
|
||||
sha1 = "970abf3a2a9937a43576afd9bb56e4a8191947f8";
|
||||
};
|
||||
};
|
||||
"10".google_apis."x86" = {
|
||||
name = "system-image-10-google_apis-x86";
|
||||
path = "system-images/android-10/google_apis/x86";
|
||||
revision = "10-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-10_r06.zip";
|
||||
sha1 = "070a9552e3d358d8e72e8b2042e539e2b7a1b035";
|
||||
};
|
||||
};
|
||||
"15".google_apis."x86" = {
|
||||
name = "system-image-15-google_apis-x86";
|
||||
path = "system-images/android-15/google_apis/x86";
|
||||
revision = "15-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-15_r06.zip";
|
||||
sha1 = "a7deb32c12396b6c4fd60ad14a62e19f8bdcae20";
|
||||
};
|
||||
};
|
||||
"15".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-15-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-15/google_apis/armeabi-v7a";
|
||||
revision = "15-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-15_r06.zip";
|
||||
sha1 = "6deb76cf34760a6037cb18d89772c9e986d07497";
|
||||
};
|
||||
};
|
||||
"16".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-16-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-16/google_apis/armeabi-v7a";
|
||||
revision = "16-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-16_r06.zip";
|
||||
sha1 = "5a5ff097680c6dae473c8719296ce6d7b70edb2d";
|
||||
};
|
||||
};
|
||||
"16".google_apis."x86" = {
|
||||
name = "system-image-16-google_apis-x86";
|
||||
path = "system-images/android-16/google_apis/x86";
|
||||
revision = "16-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-16_r06.zip";
|
||||
sha1 = "b57adef2f43dd176b8c02c980c16a796021b2071";
|
||||
};
|
||||
};
|
||||
"17".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-17-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-17/google_apis/armeabi-v7a";
|
||||
revision = "17-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-17_r06.zip";
|
||||
sha1 = "a59f26cb5707da97e869a27d87b83477204ac594";
|
||||
};
|
||||
};
|
||||
"17".google_apis."x86" = {
|
||||
name = "system-image-17-google_apis-x86";
|
||||
path = "system-images/android-17/google_apis/x86";
|
||||
revision = "17-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-17_r06.zip";
|
||||
sha1 = "7864c34faf0402b8923d8c6e609a5339f74cc8d6";
|
||||
};
|
||||
};
|
||||
"18".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-18-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-18/google_apis/armeabi-v7a";
|
||||
revision = "18-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-18_r06.zip";
|
||||
sha1 = "7faaccabbcc5f08e410436d3f63eea42521ea974";
|
||||
};
|
||||
};
|
||||
"18".google_apis."x86" = {
|
||||
name = "system-image-18-google_apis-x86";
|
||||
path = "system-images/android-18/google_apis/x86";
|
||||
revision = "18-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-18_r06.zip";
|
||||
sha1 = "dd674d719cad61602702be4b3d98edccfbfea53e";
|
||||
};
|
||||
};
|
||||
"19".google_apis."x86" = {
|
||||
name = "system-image-19-google_apis-x86";
|
||||
path = "system-images/android-19/google_apis/x86";
|
||||
revision = "19-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-19_r38.zip";
|
||||
sha1 = "928e4ec82876c61ef53451425d10ccb840cdd0f2";
|
||||
};
|
||||
};
|
||||
"19".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-19-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-19/google_apis/armeabi-v7a";
|
||||
revision = "19-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-19_r38.zip";
|
||||
sha1 = "434edd2ddc39d1ca083a5fa9721c0db8ab804737";
|
||||
};
|
||||
};
|
||||
"21".google_apis."x86" = {
|
||||
name = "system-image-21-google_apis-x86";
|
||||
path = "system-images/android-21/google_apis/x86";
|
||||
revision = "21-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-21_r30.zip";
|
||||
sha1 = "37548caae9e2897fb1d2b15f7fcf624c714cb610";
|
||||
};
|
||||
};
|
||||
"21".google_apis."x86_64" = {
|
||||
name = "system-image-21-google_apis-x86_64";
|
||||
path = "system-images/android-21/google_apis/x86_64";
|
||||
revision = "21-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-21_r30.zip";
|
||||
sha1 = "82d34fdaae2916bd4d48a4f144db51e4e5719aa4";
|
||||
};
|
||||
};
|
||||
"21".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-21-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-21/google_apis/armeabi-v7a";
|
||||
revision = "21-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-21_r30.zip";
|
||||
sha1 = "bbdbbb3c4387752a8f28718a3190d901c0378058";
|
||||
};
|
||||
};
|
||||
"22".google_apis."x86" = {
|
||||
name = "system-image-22-google_apis-x86";
|
||||
path = "system-images/android-22/google_apis/x86";
|
||||
revision = "22-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-22_r24.zip";
|
||||
sha1 = "e4cd95b1c0837fc12d6544742e82d8ef344c8758";
|
||||
};
|
||||
};
|
||||
"22".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-22-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-22/google_apis/armeabi-v7a";
|
||||
revision = "22-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-22_r24.zip";
|
||||
sha1 = "d2b7ca5f8259c6e4b3cfa5a0d77e4a088899cfb0";
|
||||
};
|
||||
};
|
||||
"22".google_apis."x86_64" = {
|
||||
name = "system-image-22-google_apis-x86_64";
|
||||
path = "system-images/android-22/google_apis/x86_64";
|
||||
revision = "22-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-22_r24.zip";
|
||||
sha1 = "cde738f9353606af69ad7b4e625c957a4d603f27";
|
||||
};
|
||||
};
|
||||
"23".google_apis."x86" = {
|
||||
name = "system-image-23-google_apis-x86";
|
||||
path = "system-images/android-23/google_apis/x86";
|
||||
revision = "23-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-23_r31.zip";
|
||||
sha1 = "877cf79f5198fa53351eab08ba9ce162dc84f7ba";
|
||||
};
|
||||
};
|
||||
"23".google_apis."x86_64" = {
|
||||
name = "system-image-23-google_apis-x86_64";
|
||||
path = "system-images/android-23/google_apis/x86_64";
|
||||
revision = "23-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-23_r31.zip";
|
||||
sha1 = "342c39df061804ee0d5bc671147e90dead3d6665";
|
||||
};
|
||||
};
|
||||
"23".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-23-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-23/google_apis/armeabi-v7a";
|
||||
revision = "23-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-23_r31.zip";
|
||||
sha1 = "da0a07800b4eec53fcdb2e5c3b69a9a5d7a6b8a6";
|
||||
};
|
||||
};
|
||||
"24".google_apis."x86" = {
|
||||
name = "system-image-24-google_apis-x86";
|
||||
path = "system-images/android-24/google_apis/x86";
|
||||
revision = "24-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-24_r25.zip";
|
||||
sha1 = "53dba25eed8359aba394a1be1c7ccb741a459ec0";
|
||||
};
|
||||
};
|
||||
"24".google_apis."x86_64" = {
|
||||
name = "system-image-24-google_apis-x86_64";
|
||||
path = "system-images/android-24/google_apis/x86_64";
|
||||
revision = "24-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-24_r25.zip";
|
||||
sha1 = "d757dd13ad9b0ba4dd872660e31b6506f60dcf32";
|
||||
};
|
||||
};
|
||||
"24".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-24-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-24/google_apis/armeabi-v7a";
|
||||
revision = "24-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-24_r25.zip";
|
||||
sha1 = "9a0ec5e9a239a7a6889364e44e9fa4fcd0052c6b";
|
||||
};
|
||||
};
|
||||
"24".google_apis."arm64-v8a" = {
|
||||
name = "system-image-24-google_apis-arm64-v8a";
|
||||
path = "system-images/android-24/google_apis/arm64-v8a";
|
||||
revision = "24-google_apis-arm64-v8a";
|
||||
displayName = "Google APIs ARM 64 v8a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-24_r25.zip";
|
||||
sha1 = "5ff407d439e3c595ce9221f445a31dcc35df5a86";
|
||||
};
|
||||
};
|
||||
"25".google_apis."x86" = {
|
||||
name = "system-image-25-google_apis-x86";
|
||||
path = "system-images/android-25/google_apis/x86";
|
||||
revision = "25-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-25_r16.zip";
|
||||
sha1 = "562e3335c6334b8d1947bb9efb90f8d82f2d3e4d";
|
||||
};
|
||||
};
|
||||
"25".google_apis."x86_64" = {
|
||||
name = "system-image-25-google_apis-x86_64";
|
||||
path = "system-images/android-25/google_apis/x86_64";
|
||||
revision = "25-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-25_r16.zip";
|
||||
sha1 = "e08b94903631d58964467b0b310c93642d85df6c";
|
||||
};
|
||||
};
|
||||
"25".google_apis."armeabi-v7a" = {
|
||||
name = "system-image-25-google_apis-armeabi-v7a";
|
||||
path = "system-images/android-25/google_apis/armeabi-v7a";
|
||||
revision = "25-google_apis-armeabi-v7a";
|
||||
displayName = "Google APIs ARM EABI v7a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/armeabi-v7a-25_r16.zip";
|
||||
sha1 = "4c49e0edb845b0bf1f231cb0e8598b1a9f9aa9c8";
|
||||
};
|
||||
};
|
||||
"25".google_apis."arm64-v8a" = {
|
||||
name = "system-image-25-google_apis-arm64-v8a";
|
||||
path = "system-images/android-25/google_apis/arm64-v8a";
|
||||
revision = "25-google_apis-arm64-v8a";
|
||||
displayName = "Google APIs ARM 64 v8a System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-25_r16.zip";
|
||||
sha1 = "33ffbd335d9a6dc8d9843469d0963091566b3167";
|
||||
};
|
||||
};
|
||||
"26".google_apis."x86" = {
|
||||
name = "system-image-26-google_apis-x86";
|
||||
path = "system-images/android-26/google_apis/x86";
|
||||
revision = "26-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-26_r14.zip";
|
||||
sha1 = "935da6794d5f64f7ae20a1f352929cb7e3b20cba";
|
||||
};
|
||||
};
|
||||
"26".google_apis."x86_64" = {
|
||||
name = "system-image-26-google_apis-x86_64";
|
||||
path = "system-images/android-26/google_apis/x86_64";
|
||||
revision = "26-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-26_r14.zip";
|
||||
sha1 = "965631f0554ca9027ac465ba147baa6a6a22fcce";
|
||||
};
|
||||
};
|
||||
"27".google_apis."x86" = {
|
||||
name = "system-image-27-google_apis-x86";
|
||||
path = "system-images/android-27/google_apis/x86";
|
||||
revision = "27-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-27_r09.zip";
|
||||
sha1 = "ab009fc1308ded01539af4f8233b252d411145bc";
|
||||
};
|
||||
};
|
||||
"28".google_apis."x86" = {
|
||||
name = "system-image-28-google_apis-x86";
|
||||
path = "system-images/android-28/google_apis/x86";
|
||||
revision = "28-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-28_r09.zip";
|
||||
sha1 = "7c84ba5cbc009132ce38df52830c17b9bffc54bb";
|
||||
};
|
||||
};
|
||||
"28".google_apis."x86_64" = {
|
||||
name = "system-image-28-google_apis-x86_64";
|
||||
path = "system-images/android-28/google_apis/x86_64";
|
||||
revision = "28-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-28_r09.zip";
|
||||
sha1 = "eeb066346d29194e5b9387a0c0dd0f9e2a570b70";
|
||||
};
|
||||
};
|
||||
"29".google_apis."x86" = {
|
||||
name = "system-image-29-google_apis-x86";
|
||||
path = "system-images/android-29/google_apis/x86";
|
||||
revision = "29-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-29_r09.zip";
|
||||
sha1 = "33d71d17138ea322dec2dea6d8198aebf4767ab3";
|
||||
};
|
||||
};
|
||||
"29".google_apis."x86_64" = {
|
||||
name = "system-image-29-google_apis-x86_64";
|
||||
path = "system-images/android-29/google_apis/x86_64";
|
||||
revision = "29-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-29_r09.zip";
|
||||
sha1 = "0aa76b20a7ad30f2e41bc21b897b848d82533d26";
|
||||
};
|
||||
};
|
||||
"R".google_apis."x86" = {
|
||||
name = "system-image-R-google_apis-x86";
|
||||
path = "system-images/android-R/google_apis/x86";
|
||||
revision = "R-google_apis-x86";
|
||||
displayName = "Google APIs Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86-R_r01.zip";
|
||||
sha1 = "4e260bef94760eecba3224b68c1a4fed0fb89485";
|
||||
};
|
||||
};
|
||||
"R".google_apis."x86_64" = {
|
||||
name = "system-image-R-google_apis-x86_64";
|
||||
path = "system-images/android-R/google_apis/x86_64";
|
||||
revision = "R-google_apis-x86_64";
|
||||
displayName = "Google APIs Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-R_r01.zip";
|
||||
sha1 = "ae12e1c3e1b36043a299359850e9315f47262f81";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
{fetchurl}:
|
||||
|
||||
{
|
||||
"24".google_apis_playstore."x86" = {
|
||||
name = "system-image-24-google_apis_playstore-x86";
|
||||
path = "system-images/android-24/google_apis_playstore/x86";
|
||||
revision = "24-google_apis_playstore-x86";
|
||||
displayName = "Google Play Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-24_r19.zip";
|
||||
sha1 = "b52e9593ffdde65c1a0970256a32e8967c89cc22";
|
||||
};
|
||||
};
|
||||
"25".google_apis_playstore."x86" = {
|
||||
name = "system-image-25-google_apis_playstore-x86";
|
||||
path = "system-images/android-25/google_apis_playstore/x86";
|
||||
revision = "25-google_apis_playstore-x86";
|
||||
displayName = "Google Play Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-25_r09.zip";
|
||||
sha1 = "6f6668954f7fd52f896fe7528aa122028c9b026c";
|
||||
};
|
||||
};
|
||||
"26".google_apis_playstore."x86" = {
|
||||
name = "system-image-26-google_apis_playstore-x86";
|
||||
path = "system-images/android-26/google_apis_playstore/x86";
|
||||
revision = "26-google_apis_playstore-x86";
|
||||
displayName = "Google Play Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-26_r07.zip";
|
||||
sha1 = "2c8bee7b97a309f099941532e63c42a7d4a06e19";
|
||||
};
|
||||
};
|
||||
"27".google_apis_playstore."x86" = {
|
||||
name = "system-image-27-google_apis_playstore-x86";
|
||||
path = "system-images/android-27/google_apis_playstore/x86";
|
||||
revision = "27-google_apis_playstore-x86";
|
||||
displayName = "Google Play Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-27_r03.zip";
|
||||
sha1 = "eb5a944ceb691ca0648d0a6f0d93893a47223b5d";
|
||||
};
|
||||
};
|
||||
"28".google_apis_playstore."x86" = {
|
||||
name = "system-image-28-google_apis_playstore-x86";
|
||||
path = "system-images/android-28/google_apis_playstore/x86";
|
||||
revision = "28-google_apis_playstore-x86";
|
||||
displayName = "Google Play Intel x86 Atom System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86-28_r08.zip";
|
||||
sha1 = "5381f9d52a3bf1967c9c92a25b20012cd68764c8";
|
||||
};
|
||||
};
|
||||
"28".google_apis_playstore."x86_64" = {
|
||||
name = "system-image-28-google_apis_playstore-x86_64";
|
||||
path = "system-images/android-28/google_apis_playstore/x86_64";
|
||||
revision = "28-google_apis_playstore-x86_64";
|
||||
displayName = "Google Play Intel x86 Atom_64 System Image";
|
||||
archives.all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-28_r08.zip";
|
||||
sha1 = "a767da996fdea7a1f5632a9206fa5c009d6e580c";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
{deployAndroidPackage, lib, package, os, autoPatchelfHook, pkgs}:
|
||||
|
||||
deployAndroidPackage {
|
||||
inherit package os;
|
||||
buildInputs = [ autoPatchelfHook ]
|
||||
++ lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.zlib pkgs.openssl_1_0_2.out pkgs.ncurses5 ];
|
||||
patchInstructions = lib.optionalString (os == "linux") ''
|
||||
addAutoPatchelfSearchPath $packageBaseDir/lib
|
||||
autoPatchelf $packageBaseDir/lib
|
||||
autoPatchelf $packageBaseDir/bin
|
||||
'';
|
||||
}
|
321
pkgs/development/mobile/androidenv/mkrepo.rb
Normal file
321
pkgs/development/mobile/androidenv/mkrepo.rb
Normal file
@ -0,0 +1,321 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
require 'json'
|
||||
require 'nokogiri'
|
||||
require 'slop'
|
||||
|
||||
# Returns a repo URL for a given package name.
|
||||
def repo_url value
|
||||
if value && value.start_with?('http')
|
||||
value
|
||||
elsif value
|
||||
"https://dl.google.com/android/repository/#{value}"
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
# Returns a system image URL for a given system image name.
|
||||
def image_url value, dir
|
||||
if value && value.start_with?('http')
|
||||
value
|
||||
elsif value
|
||||
"https://dl.google.com/android/repository/sys-img/#{dir}/#{value}"
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
# Returns a tuple of [type, revision, revision components] for a package node.
|
||||
def package_revision package
|
||||
type_details = package.at_css('> type-details')
|
||||
type = type_details.attributes['type']
|
||||
type &&= type.value
|
||||
|
||||
revision = nil
|
||||
components = nil
|
||||
|
||||
case type
|
||||
when 'generic:genericDetailsType', 'addon:extraDetailsType', 'addon:mavenType'
|
||||
major = text package.at_css('> revision > major')
|
||||
minor = text package.at_css('> revision > minor')
|
||||
micro = text package.at_css('> revision > micro')
|
||||
preview = text package.at_css('> revision > preview')
|
||||
|
||||
revision = ''
|
||||
components = []
|
||||
unless empty?(major)
|
||||
revision << major
|
||||
components << major
|
||||
end
|
||||
|
||||
unless empty?(minor)
|
||||
revision << ".#{minor}"
|
||||
components << minor
|
||||
end
|
||||
|
||||
unless empty?(micro)
|
||||
revision << ".#{micro}"
|
||||
components << micro
|
||||
end
|
||||
|
||||
unless empty?(preview)
|
||||
revision << "-rc#{preview}"
|
||||
components << preview
|
||||
end
|
||||
when 'sdk:platformDetailsType'
|
||||
codename = text type_details.at_css('> codename')
|
||||
api_level = text type_details.at_css('> api-level')
|
||||
revision = empty?(codename) ? api_level : codename
|
||||
components = [revision]
|
||||
when 'sdk:sourceDetailsType'
|
||||
api_level = text type_details.at_css('> api-level')
|
||||
revision, components = api_level, [api_level]
|
||||
when 'sys-img:sysImgDetailsType'
|
||||
codename = text type_details.at_css('> codename')
|
||||
api_level = text type_details.at_css('> api-level')
|
||||
id = text type_details.at_css('> tag > id')
|
||||
abi = text type_details.at_css('> abi')
|
||||
|
||||
revision = ''
|
||||
components = []
|
||||
if empty?(codename)
|
||||
revision << api_level
|
||||
components << api_level
|
||||
else
|
||||
revision << codename
|
||||
components << codename
|
||||
end
|
||||
|
||||
unless empty?(id)
|
||||
revision << "-#{id}"
|
||||
components << id
|
||||
end
|
||||
|
||||
unless empty?(abi)
|
||||
revision << "-#{abi}"
|
||||
components << abi
|
||||
end
|
||||
when 'addon:addonDetailsType' then
|
||||
api_level = text type_details.at_css('> api-level')
|
||||
id = text type_details.at_css('> tag > id')
|
||||
revision = api_level
|
||||
components = [api_level, id]
|
||||
end
|
||||
|
||||
[type, revision, components]
|
||||
end
|
||||
|
||||
# Returns a hash of archives for the specified package node.
|
||||
def package_archives package
|
||||
archives = {}
|
||||
package.css('> archives > archive').each do |archive|
|
||||
host_os = text archive.at_css('> host-os')
|
||||
host_os = 'all' if empty?(host_os)
|
||||
archives[host_os] = {
|
||||
'size' => Integer(text(archive.at_css('> complete > size'))),
|
||||
'sha1' => text(archive.at_css('> complete > checksum')),
|
||||
'url' => yield(text(archive.at_css('> complete > url')))
|
||||
}
|
||||
end
|
||||
archives
|
||||
end
|
||||
|
||||
# Returns the text from a node, or nil.
|
||||
def text node
|
||||
node ? node.text : nil
|
||||
end
|
||||
|
||||
# Nil or empty helper.
|
||||
def empty? value
|
||||
!value || value.empty?
|
||||
end
|
||||
|
||||
# Fixes up returned hashes by sorting keys.
|
||||
# Will also convert archives (e.g. {'linux' => {'sha1' => ...}, 'macosx' => ...} to
|
||||
# [{'os' => 'linux', 'sha1' => ...}, {'os' => 'macosx', ...}, ...].
|
||||
def fixup value
|
||||
Hash[value.map do |k, v|
|
||||
if k == 'archives' && v.is_a?(Hash)
|
||||
[k, v.map do |os, archive|
|
||||
fixup({'os' => os}.merge(archive))
|
||||
end]
|
||||
elsif v.is_a?(Hash)
|
||||
[k, fixup(v)]
|
||||
else
|
||||
[k, v]
|
||||
end
|
||||
end.sort {|(k1, v1), (k2, v2)| k1 <=> k2}]
|
||||
end
|
||||
|
||||
# Normalize the specified license text.
|
||||
# See: https://brash-snapper.glitch.me/ for how the munging works.
|
||||
def normalize_license license
|
||||
license = license.dup
|
||||
license.gsub!(/([^\n])\n([^\n])/m, '\1 \2')
|
||||
license.gsub!(/ +/, ' ')
|
||||
license
|
||||
end
|
||||
|
||||
# Gets all license texts, deduplicating them.
|
||||
def get_licenses doc
|
||||
licenses = {}
|
||||
doc.css('license[type="text"]').each do |license_node|
|
||||
license_id = license_node['id']
|
||||
if license_id
|
||||
licenses[license_id] ||= []
|
||||
licenses[license_id] |= [normalize_license(text(license_node))]
|
||||
end
|
||||
end
|
||||
licenses
|
||||
end
|
||||
|
||||
def parse_package_xml doc
|
||||
licenses = get_licenses doc
|
||||
packages = {}
|
||||
|
||||
doc.css('remotePackage').each do |package|
|
||||
name, _, version = package['path'].partition(';')
|
||||
next if version == 'latest'
|
||||
|
||||
type, revision, _ = package_revision(package)
|
||||
next unless revision
|
||||
|
||||
path = package['path'].tr(';', '/')
|
||||
display_name = text package.at_css('> display-name')
|
||||
uses_license = package.at_css('> uses-license')
|
||||
uses_license &&= uses_license['ref']
|
||||
archives = package_archives(package) {|url| repo_url url}
|
||||
|
||||
target = (packages[name] ||= {})
|
||||
target = (target[revision] ||= {})
|
||||
|
||||
target['name'] ||= name
|
||||
target['path'] ||= path
|
||||
target['revision'] ||= revision
|
||||
target['displayName'] ||= display_name
|
||||
target['license'] ||= uses_license if uses_license
|
||||
target['archives'] ||= {}
|
||||
merge target['archives'], archives
|
||||
end
|
||||
|
||||
[licenses, packages]
|
||||
end
|
||||
|
||||
def parse_image_xml doc
|
||||
licenses = get_licenses doc
|
||||
images = {}
|
||||
|
||||
doc.css('remotePackage[path^="system-images;"]').each do |package|
|
||||
type, revision, components = package_revision(package)
|
||||
next unless revision
|
||||
|
||||
path = package['path'].tr(';', '/')
|
||||
display_name = text package.at_css('> display-name')
|
||||
uses_license = package.at_css('> uses-license')
|
||||
uses_license &&= uses_license['ref']
|
||||
archives = package_archives(package) {|url| image_url url, components[-2]}
|
||||
|
||||
target = images
|
||||
components.each do |component|
|
||||
target = (target[component] ||= {})
|
||||
end
|
||||
|
||||
target['name'] ||= "system-image-#{revision}"
|
||||
target['path'] ||= path
|
||||
target['revision'] ||= revision
|
||||
target['displayName'] ||= display_name
|
||||
target['license'] ||= uses_license if uses_license
|
||||
target['archives'] ||= {}
|
||||
merge target['archives'], archives
|
||||
end
|
||||
|
||||
[licenses, images]
|
||||
end
|
||||
|
||||
def parse_addon_xml doc
|
||||
licenses = get_licenses doc
|
||||
addons, extras = {}, {}
|
||||
|
||||
doc.css('remotePackage').each do |package|
|
||||
type, revision, components = package_revision(package)
|
||||
next unless revision
|
||||
|
||||
path = package['path'].tr(';', '/')
|
||||
display_name = text package.at_css('> display-name')
|
||||
uses_license = package.at_css('> uses-license')
|
||||
uses_license &&= uses_license['ref']
|
||||
archives = package_archives(package) {|url| repo_url url}
|
||||
|
||||
case type
|
||||
when 'addon:addonDetailsType'
|
||||
name = components.last
|
||||
target = addons
|
||||
|
||||
# Hack for Google APIs 25 r1, which displays as 23 for some reason
|
||||
archive_name = text package.at_css('> archives > archive > complete > url')
|
||||
if archive_name == 'google_apis-25_r1.zip'
|
||||
path = 'add-ons/addon-google_apis-google-25'
|
||||
revision = '25'
|
||||
components = [revision, components.last]
|
||||
end
|
||||
when 'addon:extraDetailsType', 'addon:mavenType'
|
||||
name = package['path'].tr(';', '-')
|
||||
components = [package['path']]
|
||||
target = extras
|
||||
end
|
||||
|
||||
components.each do |component|
|
||||
target = (target[component] ||= {})
|
||||
end
|
||||
|
||||
target['name'] ||= name
|
||||
target['path'] ||= path
|
||||
target['revision'] ||= revision
|
||||
target['displayName'] ||= display_name
|
||||
target['license'] ||= uses_license if uses_license
|
||||
target['archives'] ||= {}
|
||||
merge target['archives'], archives
|
||||
end
|
||||
|
||||
[licenses, addons, extras]
|
||||
end
|
||||
|
||||
def merge dest, src
|
||||
dest.merge! src
|
||||
end
|
||||
|
||||
opts = Slop.parse do |o|
|
||||
o.array '-p', '--packages', 'packages repo XMLs to parse'
|
||||
o.array '-i', '--images', 'system image repo XMLs to parse'
|
||||
o.array '-a', '--addons', 'addon repo XMLs to parse'
|
||||
end
|
||||
|
||||
result = {
|
||||
licenses: {},
|
||||
packages: {},
|
||||
images: {},
|
||||
addons: {},
|
||||
extras: {}
|
||||
}
|
||||
|
||||
opts[:packages].each do |filename|
|
||||
licenses, packages = parse_package_xml(Nokogiri::XML(File.open(filename)))
|
||||
merge result[:licenses], licenses
|
||||
merge result[:packages], packages
|
||||
end
|
||||
|
||||
opts[:images].each do |filename|
|
||||
licenses, images = parse_image_xml(Nokogiri::XML(File.open(filename)))
|
||||
merge result[:licenses], licenses
|
||||
merge result[:images], images
|
||||
end
|
||||
|
||||
opts[:addons].each do |filename|
|
||||
licenses, addons, extras = parse_addon_xml(Nokogiri::XML(File.open(filename)))
|
||||
merge result[:licenses], licenses
|
||||
merge result[:addons], addons
|
||||
merge result[:extras], extras
|
||||
end
|
||||
|
||||
puts JSON.pretty_generate(fixup(result))
|
19
pkgs/development/mobile/androidenv/mkrepo.sh
Executable file
19
pkgs/development/mobile/androidenv/mkrepo.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p "ruby.withPackages (pkgs: with pkgs; [ slop nokogiri ])"
|
||||
|
||||
set -e
|
||||
|
||||
pushd "$(dirname "$0")" &>/dev/null || exit 1
|
||||
|
||||
echo "Writing repo.json" >&2
|
||||
ruby mkrepo.rb \
|
||||
--packages ./xml/repository2-1.xml \
|
||||
--images ./xml/android-sys-img2-1.xml \
|
||||
--images ./xml/android-tv-sys-img2-1.xml \
|
||||
--images ./xml/android-wear-cn-sys-img2-1.xml \
|
||||
--images ./xml/android-wear-sys-img2-1.xml \
|
||||
--images ./xml/google_apis-sys-img2-1.xml \
|
||||
--images ./xml/google_apis_playstore-sys-img2-1.xml \
|
||||
--addons ./xml/addon2-1.xml > repo.json
|
||||
|
||||
popd &>/dev/null
|
@ -9,14 +9,14 @@ let
|
||||
in
|
||||
deployAndroidPackage {
|
||||
inherit package os;
|
||||
buildInputs = [ autoPatchelfHook makeWrapper pkgs.python2 ]
|
||||
++ lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.ncurses5 pkgs.zlib pkgs.libcxx.out ];
|
||||
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
||||
buildInputs = lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.python2 pkgs.ncurses5 pkgs.zlib pkgs.libcxx.out pkgs.libxml2 ];
|
||||
patchInstructions = lib.optionalString (os == "linux") (''
|
||||
patchShebangs .
|
||||
|
||||
'' + lib.optionalString (builtins.compareVersions (lib.getVersion package) "21" > 0) ''
|
||||
patch -p1 \
|
||||
--no-backup-if-mismatch < ${./make_standalone_toolchain.py_18.patch}
|
||||
--no-backup-if-mismatch < ${./make_standalone_toolchain.py_18.patch} || true
|
||||
wrapProgram $(pwd)/build/tools/make_standalone_toolchain.py --prefix PATH : "${runtime_paths}"
|
||||
'' + ''
|
||||
|
||||
@ -24,33 +24,35 @@ deployAndroidPackage {
|
||||
rm -rf docs tests
|
||||
|
||||
# Patch the executables of the toolchains, but not the libraries -- they are needed for crosscompiling
|
||||
if [ -d $out/libexec/android-sdk/ndk-bundle/toolchains/renderscript/prebuilt/linux-x86_64/lib64 ]; then
|
||||
addAutoPatchelfSearchPath $out/libexec/android-sdk/ndk-bundle/toolchains/renderscript/prebuilt/linux-x86_64/lib64
|
||||
fi
|
||||
|
||||
addAutoPatchelfSearchPath $out/libexec/android-sdk/ndk-bundle/toolchains/renderscript/prebuilt/linux-x86_64/lib64
|
||||
find toolchains -type d -name bin | while read dir
|
||||
do
|
||||
if [ -d $out/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib64 ]; then
|
||||
addAutoPatchelfSearchPath $out/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib64
|
||||
fi
|
||||
|
||||
find toolchains -type d -name bin -or -name lib64 | while read dir; do
|
||||
autoPatchelf "$dir"
|
||||
done
|
||||
|
||||
# fix ineffective PROGDIR / MYNDKDIR determination
|
||||
for i in ndk-build
|
||||
do
|
||||
sed -i -e 's|^PROGDIR=`dirname $0`|PROGDIR=`dirname $(readlink -f $(which $0))`|' $i
|
||||
for progname in ndk-build; do
|
||||
sed -i -e 's|^PROGDIR=`dirname $0`|PROGDIR=`dirname $(readlink -f $(which $0))`|' $progname
|
||||
done
|
||||
|
||||
# Patch executables
|
||||
autoPatchelf prebuilt/linux-x86_64
|
||||
|
||||
# wrap
|
||||
for i in ndk-build
|
||||
do
|
||||
wrapProgram "$(pwd)/$i" --prefix PATH : "${runtime_paths}"
|
||||
for progname in ndk-build; do
|
||||
wrapProgram "$(pwd)/$progname" --prefix PATH : "${runtime_paths}"
|
||||
done
|
||||
|
||||
# make some executables available in PATH
|
||||
mkdir -p $out/bin
|
||||
for i in ndk-build
|
||||
do
|
||||
ln -sf ../libexec/android-sdk/ndk-bundle/$i $out/bin/$i
|
||||
for progname in ndk-build; do
|
||||
ln -sf ../libexec/android-sdk/ndk-bundle/$progname $out/bin/$progname
|
||||
done
|
||||
'');
|
||||
noAuditTmpdir = true; # Audit script gets invoked by the build/ component in the path for the make standalone script
|
||||
|
36
pkgs/development/mobile/androidenv/querypackages.sh
Normal file → Executable file
36
pkgs/development/mobile/androidenv/querypackages.sh
Normal file → Executable file
@ -1,27 +1,23 @@
|
||||
#!/bin/sh -e
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p jq
|
||||
|
||||
if [ "$1" = "" ]
|
||||
then
|
||||
echo "Please select a package set: 'packages', 'addons', 'system-images'" >&2
|
||||
set -e
|
||||
|
||||
pushd "$(dirname "$0")" &>/dev/null || exit 1
|
||||
|
||||
if [ "$1" == '' ]; then
|
||||
echo "Please select a group: 'packages', 'images', 'addons', 'extras', or 'licenses'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$2" = "" ]
|
||||
then
|
||||
echo "Please select a package group:" >&2
|
||||
( cat <<EOF
|
||||
builtins.attrNames (import ./generated/$1.nix {
|
||||
fetchurl = null;
|
||||
})
|
||||
EOF
|
||||
) | nix-instantiate --eval-only -
|
||||
namespace="$1"
|
||||
|
||||
exit 1
|
||||
if [ "$namespace" == 'licenses' ]; then
|
||||
jq -r '.licenses | keys | join("\n")' < repo.json
|
||||
else
|
||||
jq -r --arg NAMESPACE "$namespace" \
|
||||
'.[$NAMESPACE] | paths as $path | getpath($path) as $v | select($path[-1] == "displayName") | [[$NAMESPACE] + $path[:-1] | map("\"" + . + "\"") | join("."), $v] | join(": ")' \
|
||||
< repo.json
|
||||
fi
|
||||
|
||||
( cat <<EOF
|
||||
builtins.attrNames (import ./generated/$1.nix {
|
||||
fetchurl = null;
|
||||
}).$2
|
||||
EOF
|
||||
) | nix-instantiate --eval-only -
|
||||
popd &>/dev/null
|
||||
|
5343
pkgs/development/mobile/androidenv/repo.json
Normal file
5343
pkgs/development/mobile/androidenv/repo.json
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user