У меня есть существующие приложения для Android, которые я хотел бы продолжить собирать после перехода на NixOS .
Я следовал нескольким инструкциям, которые в основном всегда основаны на том, что описано в Nixpkgsmanual: https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/android.section.md
Проблема, с которой я столкнулся, заключается в следующем: когда я создаю свое собственное окружение с чем-то вроде этого:
with import <nixpkgs> {};
let
androidComposition = androidenv.composeAndroidPackages {
toolsVersion = "25.2.5";
platformToolsVersion = "27.0.1";
buildToolsVersions = [ "27.0.3" ];
includeEmulator = false;
emulatorVersion = "27.2.0";
platformVersions = [ "24" ];
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";
useGoogleAPIs = false;
useGoogleTVAddOns = false;
includeExtras = [
"extras;google;gcm"
];
};
in
androidComposition.androidsdk
Тогда переменная окружения ANDROID_HOME не определена и не вызывается gradlew
моего проекта не будет жаловаться на это.Если я попытаюсь найти какое-нибудь место, куда я мог бы вручную направить ANDROID_HOME, то произойдет сбой, потому что сборка gradle будет жаловаться, что я не принял лицензионное соглашение SDK.(И я также не могу принять лицензию, потому что мне пришлось бы делать это в магазине nix только для чтения.)
Я также пытался собрать полное приложение, используя Nix, с чем-то вроде этого:
with import <nixpkgs> {};
androidenv.buildApp {
name = "Tove";
src = ./tove;
release = true;
keyStore = ./tove/release.keystore;
keyAlias = "ReleaseKey";
keyStorePassword = "XXXXXXXX";
keyAliasPassword = "XXXXXXXX";
platformVersions = [ "28" ];
includeNDK = false;
}
Но мне кажется, что это поддерживает только сборки на основе Ant.Но я не могу изменить всю среду сборки на Ant, потому что тогда мои коллеги будут жаловаться.В этом случае я получаю сообщение об ошибке:
these derivations will be built:
/nix/store/1pnd3zra0p6q2w4nij8mp49b1jr6g0p2-Tove.drv
building '/nix/store/1pnd3zra0p6q2w4nij8mp49b1jr6g0p2-Tove.drv'...
unpacking sources
unpacking source archive /nix/store/l1lphdp98cxfhq5dahr63ipjrz9qbn6l-tove
source root is tove
patching sources
configuring
no configure script, doing nothing
building
Buildfile: build.xml does not exist!
Build failed
builder for '/nix/store/1pnd3zra0p6q2w4nij8mp49b1jr6g0p2-Tove.drv' failed with exit code 1
error: build of '/nix/store/1pnd3zra0p6q2w4nij8mp49b1jr6g0p2-Tove.drv' failed
Как получить среду, в которой я могу создавать приложения для Android с помощью gradle из NixOS?Есть ли какая-либо помощь или учебные пособия?