Android Studio против компиляции командной строки /w gradlew

Как описано здесь, в документации Android Studio, можно создать Android app из командной строки с помощью оболочки gradle, сгенерированной Android Studio. Окно командной строки в Android Studio показывает именно это, то есть вызов gradlew assembleDebug (или аналогичную задачу). Однако запуск терминала в macOS и вызов оболочки gradle с этим точным вызовом иногда дает другие результаты, т.е. -line-fails">можно собрать из Android Studio, или командная строка, или и то, и другое (что идеально, но, к сожалению, не всегда верно).

Кто может объяснить, какие еще настройки Android Studio IDE устанавливает для своей среды и где их найти, как легко воспроизвести эти настройки в среде CI (например, Jenkins, Bamboo,...) и как последовательно хранить эти настройки в VCS вместе с проектом Android.


person Lennert    schedule 30.09.2017    source источник
comment
что значит другие результаты??   -  person Gabriele Mariotti    schedule 30.09.2017
comment
Другими результатами являются неудачная сборка либо в студии Android, либо через командную строку.   -  person Lennert    schedule 30.09.2017


Ответы (1)


В корне проекта у вас есть gradlew.bat, именно так вы можете запустить его в первую очередь. Если вы откроете этот файл, вы увидите код для сборки и всего остального, что делает Gradle.

Независимо от того, строите ли вы из командной строки или из ANdroid Studio, используется файл gradlew.bat. Таким образом, сборка и другие вещи, которые вы делаете с помощью команды gradlew, используют один и тот же файл, будь то из командной строки или встроенных инструментов Android Studio.

Вы можете открыть файл (ы, в корне проекта есть gradlew и gradlew.bat) и посмотреть, как это работает, если хотите, хотя эти файлы обычно автоматически генерируются Android Studio (можно также сделать свой собственный конфиг, хотя редко в этом есть необходимость). И для включения в vcs убедитесь, что файлы не указаны в .gitnore (или любом другом расширении игнорирования vcs, которое у вас есть)

person Zoe    schedule 30.09.2017
comment
Спасибо за ваш ответ, но большая часть того, что вы написали, уже есть в моем вопросе. Вызов оболочки gradle из командной строки отличается от того, что делает Android Studio. Скорее всего, это связано с тем, что некоторые переменные среды устанавливаются студией или чем-то подобным. Я хотел бы узнать, что именно означает возможность воспроизведения идентичных сборок. Ознакомьтесь со связанными вопросами на SO, чтобы узнать о других, у которых есть эти проблемы. - person Lennert; 30.09.2017
comment
@ Леннерт, нет никакой разницы. Он компилирует Gradle в приложение для Android, используя gradlew и gradlew.bat. Разницы нет, а если и есть, то в том, как он на самом деле компилирует ее с точки зрения порядка. Сначала создайте, затем сгенерируйте APK, а затем установите его. Вы что-то упустили, если не можете правильно скомпилировать из командной строки - person Zoe; 01.10.2017
comment
При использовании той же самой команды, которую Android Studio отображает в окне терминала, сборка командной строки не работает, даже если она работает в Android Studio. Я не хочу вдаваться в подробности того, почему это не удается, поскольку реальная ошибка — это не то, что я пытаюсь решить. Я не единственный, у кого есть эти проблемы, о чем свидетельствуют ссылки из моего вопроса, где довольно много людей сталкиваются с одной и той же проблемой, то есть несоответствием между командной строкой и сборками Android Studio с использованием одной и той же команды gradle (и оболочка). - person Lennert; 04.10.2017
comment
@Lennert - Вы нашли разницу? Я вижу различное поведение двух разных сборок, то есть сборки Android Studio и сборки командной строки. - person Ravi Kanasagra; 06.02.2019
comment
@RaviKanasagra Извините за поздний ответ, я не понял этого. Просто исправил свои ошибки и пошел дальше. Хотелось бы иметь время, чтобы копнуть глубже, но, видимо, не так много ресурсов для продолжения. Вы нашли решение? - person Lennert; 15.04.2019