Создайте один файл AAR из нескольких модулей, используя Gradle в Android Studio [duplicate]

ECMAScript 6 имеет «генераторы», которые позволяют вам легко программировать в асинхронном стиле.

function* myGenerator() {
    const callback = yield;
    let [response] = yield $.ajax("https://stackoverflow.com", {complete: callback});
    console.log("response is:", response);

    // examples of other things you can do
    yield setTimeout(callback, 1000);
    console.log("it delayed for 1000ms");
    while (response.statusText === "error") {
        [response] = yield* anotherGenerator();
    }
}

Для запуска вышеуказанного кода вы делаете это:

const gen = myGenerator(); // Create generator
gen.next(); // Start it
gen.next((...args) => gen.next([...args])); // Set its callback function

Если вам нужно настроить таргетинг на браузеры, которые не поддерживают ES6, вы можете запустить код через Babel или short-compiler для генерации ECMAScript 5.

Обратный вызов ...args завернут в массив и разрушен, когда вы их читаете так что шаблон может справиться с обратными вызовами, которые имеют несколько аргументов. Например, с узлом fs :

const [err, data] = yield fs.readFile(filePath, "utf-8", callback);

43
задан Rahul Jain 20 December 2013 в 11:43
поделиться

1 ответ

Механизм объединения библиотеки отсутствует. Это немного сложно, поскольку вы, вероятно, хотите контролировать, какие зависимости объединяются (например, вы, вероятно, не хотите включать поддержку-v4 там). Также вам нужно объединить ресурсы и манифест Android.

В настоящее время нет возможности легко взломать что-либо, если вы не уверены, что у ресурсов нет конфликтов между двумя папками res (например, вы могли бы имеют strings_a.xml в одном lib и strings_b.xml в другом lib). Таким образом, вы можете просто «объединить» две папки res, скопировав их оба в одно и то же место (в отличие от слияния на уровне андроида).

Для манифеста это было бы сложнее , но выполнимый с некоторым пользовательским кодом.

Предоставление встроенного механизма для этого очень мало для нашего приоритета, поэтому не ожидайте его в ближайшее время.

30
ответ дан Xavier Ducrohet 1 September 2018 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: