Android Studio: перенести сложный файл build.xml в build.gradle

Я успешно выполнил перенос моего проекта из eclipse в андроид-студию и был создан файл build.gradle по умолчанию. Проект строит правильно, и я могу развернуть его для отладки и т. Д.

Реальная проблема заключается в создании файлов APK выпуска (из командной строки), для которых у меня была обычная ant-build (вызванная через командную строку, а не из eclipse).

Мой пользовательский файл build.xml импортировал стандартный файл sdk build.xml из папки SDK через:

<import file="${sdk.dir}/tools/ant/build.xml" /> 

Так что все, что мне нужно было сделать в моем файле build.xml, это переопределить цели или подключить их через «зависит».

Пример переопределения:

 <target name="-set-release-mode" depends="-set-mode-check"> <!--Here I rename my output apk files to something like: myapp-versionFromAndroidManifest.apk --> </target 

И пример добавления зависимостей:

 <target name="-pre-build" depends="clean"> <!-- my custom code where I copy resource files, process command line arguments use xpath to extract things like the version from the AndroidManifest.xml and write them into custom xml files etc... --> </target 

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

  1. Для build.xml есть файл build.xml по умолчанию, который я импортировал в сборку ant – существует ли стандартный файл build.gradle, чтобы я мог проверить определенные задачи?
  2. Можно ли переопределить задачи градации, и если да: как?
  3. Я вполне уверен, что от «ant» можно подражать «…» от муравья, но я понятия не имею, как и для этого также потребуется ответ на вопрос 1.

Я googled кучу учебников, а также учебники по миграции, как (которые, к сожалению, не затрагивали мои проблемы):

https://keepsafe-engineering.tumblr.com/post/87818767721/migrating-android-app-from-ant-to-gradle

http://ryanharter.com/blog/2013/07/17/migrating-android-projects-to-gradle/

Я также прочитал эту главу из документов градации, которые на самом деле не помогли, потому что это не отвечает на вопрос 1 или 2 или 3:

http://www.gradle.org/docs/current/userguide/ant.html

Следующие приводили несколько интересных указателей:

http://toastdroid.com/2014/03/28/customizing-your-build-with-gradle/

Я также попытался просто скопировать файл build.xml по умолчанию из папки sdk в свой собственный файл build.xml, а затем просто импортировать этот файл сборки муравьев в gradle и выполнить муравьиную задачу, которая ударяет по сборке:

 <target name="release" depends="-set-release-mode, -release-obfuscation-check, -package, -post-package, -release-prompt-for-password, -release-nosign, -release-sign, -post-build" description="Builds the application in release mode."> </target> 

Но я начал сталкиваться с проблемами, которые предположили, что это больше не вариант, поскольку по умолчанию build.xml начал бросать ошибки, которые, похоже, были связаны с версией SDK. И мне пришлось много возиться с оригинальным sdk build.xml из-за новой структуры проекта студии Android, поэтому файлы не были там, где их ожидали и т. Д. …

  • Во-первых, я бы предложил вам импортировать старый проект в андроид-студию. Он создаст для вас соответствующий скрипт build.gradle.
  • А затем вы можете перечислить список задач, выполнив gradlew tasks в корне вашего проекта.
  • Чтобы зависеть от некоторых задач, вы можете использовать команду, например init.dependsOn anotherTask .

Только для записи: я бросил идею использования моей предыдущей муравейной сборки и полностью перенесен на град. Большинство вещей, которые мне нужно было сделать, могут быть достигнуты только по структуре каталогов. Вы можете найти подробную информацию о том, как я это сделал в своем другом вопросе:

Android Studio: Gradle Product Flavors: определение пользовательских свойств

Теперь вторая часть заключалась в том, чтобы называть мой код Java, который сделал некоторые вещи, которые я действительно не хотел переносить на groovy / gradle. Таким образом, я выяснил, как выполнить мой класс java (хотя я действительно должен был сделать из него файл jar) из скрипта gradle:

Android Studio Gradle: выполнить статический метод Java (переход из ANT в Gradle)

Если у кого-то есть вопросы, я буду рад попробовать и ответить на них.

Intereting Posts
Как отправить данные POST с кодом в веб-обозревателе Android Переключение с OpenGL ES 1.0 на 2.0 Galaxy S3 – съемка в портретном режиме разрушает активность Эффект Parallax для каждого элемента в режиме ресайклера? Проверка URL-адресов работает нормально, но поддерживает соединение и ограничивает дальнейшие запросы Как центрировать расширенный заголовок в CollapsingToolbarLayout Получите абсолютную позицию для данного смещения на TextView (Android) Невозможно использовать FakeHttpLayer Robolectric (NullPointerException при вызове getFakeHttpLayer) Наложение текста поверх изображения в программном обеспечении framelayout – Android Зеркальный текст в текстовом режиме? Android-call Intent из класса Inner Как прослушивать двойную привязку в представлении в Android? Поддержка как ландшафтных ориентаций в Honeycomb Использование результата учетной записи andMan AccountManager.getAuthToken через Zend_Gdata (401 несанкционированного доступа) Как сжать WAV-файл на android