Создание Android-приложения Gradle под NixOS - PullRequest
0 голосов
/ 05 июня 2019

У меня есть существующие приложения для 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?Есть ли какая-либо помощь или учебные пособия?

...