Перейти к содержимому

Как синхронизировать проект в android studio

  • автор:

Как синхронизировать проект в android studio

Теперь создадим первое приложение в среде Android Studio для операционной системы Android. Откроем Android Studio и на начальном экране выберем пункт New Project :

Первый проект в Android Studio

При создании проекта Android Studio вначале предложит нам выбрать шаблон проекта:

Выбор Empty Activity в Android Studio

Android Studio предоставляет ряд шаблонов для различных ситуаций. Для создания приложения на Java выберем в этом списке шаблон Empty Views Activity , который предосавляет самый простейший фукционал, необходимый для начала, и нажмем на кнопку Next .

После этого отобразится окно настроек нового проекта:

Настройка проекта в Android Studio

В окне создания нового проекта мы можем установить его начальные настройки:

  • В поле Name вводится название приложения. Укажем в качестве имени название HelloApp
  • В поле Package Name указывается имя пакета, где будет размещаться главный класс приложения. В данном случае для тестовых проектов это значение не играет ольшого значения, поэтому установим com.example.helloapp .
  • В поле Save Location установливается расположение файлов проекта на жестком диске. Можно оставить значение по умолчанию.
  • В поле Language в качестве языка программирования укажем Java (будьт внимательны, так как по умолчанию в этом поле стоит Kotlin)
  • В поле Minimum SDK указывается самая минимальная поддерживаемая версия SDK. Оставим значение по умолчанию. Минимальная версия означает, что наше приложение можно будет запустить начиная с этой версии. На более старых устройствах запустить будет нельзя. Стоит учитывать, что чем выше версия SDK, тем меньше диапазон поддерживаемых устройств.

Далее нажмем на кнопку Finish, и Android Studio создаст новый проект:

Новый проект в Android Studio

Вначале вкратце рассмотрим структуру проекта, что он уже имеет по умолчанию

Структура проекта в Android Studio

Проект Android может состоять из различных модулей. По умолчанию, когда мы создаем проект, создается один модуль — app . Модуль имеет три подпапки:

  • manifests : хранит файл манифеста AndroidManifest.xml , который описывает конфигурацию приложения и определяет каждый из компонентов данного приложения.
  • java : хранит файлы кода на языке java, которые структурированы по отдельным пакетам. Так, в папке com.example.helloapp (название которого было указано на этапе создания проекта) имеется по умолчанию файл MainActivity.java с кодом на языке Java, который представляет класс MainActivity, запускаемый по умолчанию при старте приложения
  • res : содержит используемые в приложении ресурсы. Все ресурсы разбиты на подпапки.
    • папка drawable предназначена для хранения изображений, используемых в приложении
    • папка layout предназначена для хранения файлов, определяющих графический интерфейс. По умолчанию здесь есть файл activity_main.xml , который определяет интерфейс для класса MainActivity в виде xml
    • папки mipmap содержат файлы изображений, которые предназначены для создания иконки приложения при различных разрешениях экрана.
    • папка values хранит различные xml-файлы, содержащие коллекции ресурсов — различных данных, которые применяются в приложении. По умолчанию здесь есть два файла и одна папка:
      • файл colors.xml хранит описание цветов, используемых в приложении
      • файл strings.xml содержит строковые ресурсы, используемые в приложении
      • папки themes хранит две темы приложения — для светлую (дневную) и темную (ночную)

      Отдельный элемент Gradle Scripts содержит ряд скриптов, которые используются при построении приложения.

      Во всей этой структуре следует выделить файл MainActivity.java, который открыт в Android Studio и который содержит логику приложения и собственно с него начинается выполнение приложения. И также выделим файл activity_main.xml , который определяет графический интерфейс — по сути то, что увидит пользователь на своем смартфоне после загрузки приложения.

      Запуск проекта

      Созданный выше проект уже содержит некоторый примитивный функционал. Правда, этот функционал почти ничего не делает, только выводит на экран строку «Hello world!». Тем не менее это уже фактически приложение, которое мы можем запустить.

      Для запуска и тестирования приложения мы можем использовать эмуляторы или реальные устройства. Но в идеале лучше тестировать на реальных устройствах. К тому же эмуляторы требуют больших аппаратных ресурсов, и не каждый компьютер может потянуть требования эмуляторов. А для использования мобильного устройства для тестирования может потребоваться разве что установить необходимый драйвер.

      Режим разработчика на телефоне

      По умолчанию опции разработчика на смартфонах скрыты. Чтобы сделать их доступными, надо зайти в Settings > About phone (Настройки > О телефоне) (в Android 8 это в Settings > System > About phone (Настройки > Система > О телефоне) ) и семь раз нажать Build Number (Номер сборки) .

      Включение параметров разработчика на Android

      Теперь необходимо включить отладку по USB. Для этого перейдем в Settings > System > Advanced > Developer options или Настройки > Система > Дополнительно > Для разработчиков (в Android 8 это в Settings > System > Developer options или Настройки > Система > Для разработчиков ).

      Параметры разработчика на Android

      И включим возможность отладки по USB:

      Отладка по USB на Android

      Запуск приложения

      Подключим устройство с ОС Android (если мы тестируем на реальном устройстве) и запустим проект, нажав на зеленую стрелочку на панели инструментов.

      Запуск приложения в Android Studio

      Выберем устройство и нажмем на кнопку OK. И после запуска мы увидим наше приложение на экране устройства:

      проблемы с синхронизацией проекта с gradle

      введите сюда описание изображения

      Помогите пожалуйста не могу синхронизировать проект с gradle пишет bad_certificates хотя у меня в настройках сертификации с сервером принимаются автоматически недоверенные сертификаты. В поиске нет решения подобной проблемы.

      Отслеживать
      32.2k 15 15 золотых знаков 61 61 серебряный знак 93 93 бронзовых знака
      задан 16 июн 2019 в 14:49
      47 8 8 бронзовых знаков
      что за синхронизация, какие сертификаты ?
      16 июн 2019 в 15:54
      File — Sync project with gradle files дает подобную ошибку.
      16 июн 2019 в 16:22

      первый раз такое вижу.. проверьте параметры в org.gradle.jvmargs, там какие-то пробелы, русские буквы

      16 июн 2019 в 16:27
      Дело в том, что эту строку я добавил уже после имеющейся ошибки(((
      17 июн 2019 в 7:32
      недостаточно информации
      17 июн 2019 в 12:30

      0

      Сортировка: Сброс на вариант по умолчанию

      Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

      • java
      • android-studio
      • gradle
        Важное на Мете
      Похожие

      Подписаться на ленту

      Лента вопроса

      Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

      Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

      Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

      Пошаговое руководство. Привязка библиотеки Kotlin для Android

      В настоящее время рассматривается возможность использования настраиваемых привязок на платформе Xamarin. Примите участие в этом опросе, чтобы помочь определить дальнейшие направления разработки.

      Xamarin позволяет разработчикам мобильных приложений создавать собственные кросс-платформенные мобильные приложения с использованием Visual Studio и C#. Вы можете использовать готовые компоненты пакета SDK для платформы Android, но во многих случаях вам также может понадобиться использовать сторонние пакеты SDK, написанные для этой платформы, и Xamarin позволяет сделать это с помощью привязок. Чтобы внедрить стороннюю платформу Android в приложение Xamarin.Android, необходимо создать привязку Xamarin.Android, чтобы использовать ее в приложениях.

      Платформа Android, а также ее машинные языки и средства постоянно развиваются. К примеру, недавно введен язык Kotlin, который, в конечном итоге, заменяет Java. Существует ряд сторонних пакетов SDK, которые уже перенесены с Java на Kotlin, и это ставит перед нами новые задачи. Несмотря на то, что процесс привязки Kotlin аналогичен этому процессу на Java, он требует дополнительных шагов и параметров конфигурации для успешной сборки и запуска в рамках приложения Xamarin.Android.

      Цель этого документа — описать общий подход для подготовки такого сценария и предоставить подробные пошаговые инструкции с простым примером.

      Фон

      Kotlin выпущен в феврале 2016 г. и представлен в качестве альтернативы стандартному компилятору Java в Android Studio к 2017 г. Позднее в 2019 г. корпорация Google объявила о том, что язык Kotlin стал предпочтительным языком для разработчиков приложений Android. Общий подход на основе привязки аналогичен процессу привязки регулярных библиотек Java, но при использовании в Kotlin необходимы несколько важных специальных шагов.

      Предварительные требования

      Для выполнения данного пошагового руководства требуется:

      • Android Studio
      • Visual Studio для Mac
      • Декомпилятор Java

      Сборка собственной библиотеки

      Первым шагом является сборка собственной библиотеки Kotlin с помощью Android Studio. Библиотека обычно предоставляется сторонним разработчиком или доступна в репозитории Google Maven и других удаленных репозиториях. Например, в этом учебнике создается привязка для библиотеки Kotlin Bubble Picker:

      Демонстрация GitHub BubblePicker

      Открытый проект Android Studio

      1. Скачайте исходный код из GitHub для библиотеки и распакуйте его в локальной папке Bubble-Picker.
      2. Запустите Android Studio, выберите пункт меню Open an existing Android Studio project (Открыть существующий проект Android Studio) и укажите локальную папку Bubble-Picker:
      3. Убедитесь, что Android Studio не устарела, в том числе Gradle. Исходный код можно успешно собрать в Android Studio версии 3.5.3, Gradle версии 5.4.1. Инструкции по обновлению Gradle до последней версии можно найти здесь.
      4. Убедитесь, что установлен обязательный пакет SDK для Android. Исходный код требует пакет SDK для Android версии 25. Откройте меню Диспетчер пакетов SDK для инструментов>, чтобы установить компоненты пакета SDK.
      5. Обновите и синхронизируйте главный файл конфигурации build.gradle, расположенный в корне папки проекта:
      6. Задайте параметру версии Kotlin значение 1.3.10.

      buildscript
      allprojects < repositories < jcenter() maven < url "https://maven.google.com" >> > 

      Синхронизация Android Studio Gradle

      После обновления файла конфигурации он не синхронизирован, и в Gradle будет отображаться кнопка Sync Now (Синхронизировать сейчас), нажмите ее и дождитесь завершения процесса:

      Совет Кэш зависимостей Gradle может быть поврежден, это иногда происходит после истечения времени ожидания сетевого подключения. Повторно скачайте зависимости и синхронизируйте проект (требуется подключение к сети).

      Совет У процесса сборки Gradle (управляющей программ) может быть поврежденное состояние. Остановка всех управляющих программ Gradle может решить эту проблему. Остановите процессы сборки Gradle (требуется перезапуск). В случае повреждения процессов Gradle можно также закрыть интегрированную среду разработки, а затем завершить все процессы Java.

      Совет Возможно, ваш проект использует сторонний подключаемый модуль, который несовместим с другими подключаемыми модулями в проекте или версии Gradle, запрошенной проектом.

  • Откройте меню Gradle справа, перейдите в меню задачи bubblepicker>, выполните задачу сборки, дважды коснувшись ее, и дождитесь завершения процесса сборки: Задача
  • Откройте браузер файлов корневой папки и перейдите в папку сборки : Bubble-Picker -> bubblepicker -> build -> outputs -> aar, сохраните файл bubblepicker-release.aar как bubblepicker-v1.0.aar. Этот файл будет использоваться позже в процессе привязки: Выходные данные AAR Android Studio
  • Файл AAR — это архив Android, который содержит скомпилированный исходный код и ресурсы Kotlin, необходимые Android для выполнения приложения с использованием этого пакета SDK.

    Подготовка метаданных

    Вторым шагом является подготовка файла преобразования метаданных, который используется Xamarin.Android для создания соответствующих классов C#. Проект привязки Xamarin.Android будет обнаруживать все собственные классы и члены из заданного архива Android с последующим созданием файла XML с соответствующими метаданными. Затем созданный вручную файл преобразования метаданных необходимо применить к ранее созданному базовому плану, чтобы создать окончательный файл XML определения, используемый для создания кода C#.

    Метаданные используют синтаксис XPath и используются генератором привязок, чтобы повлиять на создание сборки привязки. В статье Метаданные привязок Java приведены дополнительные сведения о преобразованиях, которые могут быть применены:

      Создайте пустой файл Metadata.xml:

    Зависимости декомпилатора Java

  • Определите файл XML преобразований:
    • У собственной библиотеки Kotlin есть две зависимости, которые вам не нужно предоставлять в коде C#, задайте два преобразования, чтобы полностью их игнорировать. Важно отметить, что собственные члены не будут удалены из результирующего двоичного файла, только не будут создаваться классы C#. Декомпилятор Java можно использовать для определения зависимостей. Запустите средство и откройте созданный ранее файл AAR, в результате чего будет показана структура архива Android со всеми зависимостями, значениями, ресурсами, манифестами и классами: Преобразования для пропуска обработки этих пакетов определяются с помощью инструкций XPath:
    BackgroundColor BackgroundColor 
    public open fun fooUIntMethod(value: UInt) : String < return "fooUIntMethod$" > 

    Этот код компилируется в следующий байтовый код Java:

    @NotNull public String fooUIntMethod-WZ4Q5Ns(int value)

    Более того, связанные типы, такие как UIntArray, UShortArray, ULongArray, UByteArray , также затрагиваются Kotlin. Имя метода изменяется и включает в себя дополнительный суффикс, а параметры изменяются на массив элементов подписанных версий тех же типов. В примере ниже параметр типа UIntArray преобразуется автоматически в int[] , а имя метода изменяется с fooUIntArrayMethod на fooUIntArrayMethod—ajY-9A . Имя метода обнаруживается средствами Xamarin.Android и формируется как допустимое имя метода:

    public open fun fooUIntArrayMethod(value: UIntArray) : String < return "fooUIntArrayMethod$" > 

    Этот код компилируется в следующий байтовый код Java:

    @NotNull public String fooUIntArrayMethod--ajY-9A(@NotNull int[] value)

    Чтобы дать ему понятное имя, в Metadata.xml можно добавить следующие метаданные, которые обновят имя на исходное, определенное в коде Kotlin:

    fooUIntArrayMethod 
    public open fun fooGenericMethod(value: T) : String < return "fooGenericMethod$" > 

    После создания привязки Xamarin.Android метод предоставляется в C# следующим образом:

    [Register ("fooGenericMethod", "(Ljava/lang/Object;)Ljava/lang/String;", "GetFooGenericMethod_Ljava_lang_Object_Handler")] [JavaTypeParameters (new string[] < "T" >)] public virtual string FooGenericMethod (Java.Lang.Object value); 

    Универсальные шаблоны Java и Kotlin не поддерживаются привязками Xamarin.Android, поэтому создается обобщенный метод C# для доступа к универсальному API. В качестве обходного решения можно создать библиотеку-оболочку Kotlin и предоставить необходимые API строго типизированным способом без универсальных шаблонов. Кроме того, можно создавать вспомогательные приложения на C# для решения проблемы таким же образом с помощью строго типизированных API.

    Совет При преобразовании метаданных к созданной привязке можно применить любые изменения. В статье Привязка библиотеки Java подробно объясняется, как создаются и обрабатываются метаданные.

    Сборка библиотеки привязки

    Следующим шагом является создание проекта привязки Xamarin.Android с помощью шаблона привязки Visual Studio, добавления необходимых метаданных, собственных ссылок и последующая сборка проекта для создания готовой к использованию библиотеки:

    Создание привязки в Visual Studio

    1. Откройте Visual Studio для Mac и создайте проект библиотеки привязки Xamarin.Android, присвойте ему имя, в этом случае — testBubblePicker.Binding, и завершите работу мастера. Шаблон привязки Xamarin.Android расположен по следующему пути: Библиотека привязки библиотеки > Android>: В папке Transformations есть три основных файла преобразования:
      • Metadata.xml — позволяет вносить изменения в окончательный API, например изменять пространство имен созданной привязки.
      • EnumFields.xml — содержит сопоставление константами int Java и перечислениями C#.
      • EnumMethods.xml — позволяет изменять параметры метода и типы возвращаемых значений с целочисловых констант Java на перечисления C#.

    Сохраните пустые файлы EnumFields.xml и EnumMethods.xml, а затем обновите Metadata.xml для определения преобразований.

  • Замените существующий файл Metadata.xml в папке Transformations файлом Metadata.xml, созданным на предыдущем шаге. В окне свойств убедитесь, что для файла Build Action задано значение TransformationFile: Метаданные Visual Studio
  • Добавьте файл bubblepicker-v1.0.aar, созданный на шаге 1 для проекта привязки в качестве собственной ссылки. Чтобы добавить ссылки на собственную библиотеку, откройте систему поиска и перейдите в папку с архивом Android. Перетащите архив в папку Jars в обозревателе решений. Кроме того, можно использовать команду контекстного меню Добавить для папки Jars и выбрать пункт Существующие файлы. . Скопируйте файл в каталог для дальнейшего использования в этом пошаговом руководстве. Не забудьте убедиться, что Build Action задано значение LibraryProjectZip: Справочник по Visual Studio Native
  • Добавьте ссылку на пакет Xamarin.Kotlin.StdLib NuGet. Этот пакет является привязкой стандартной библиотеки Kotlin. Без этого пакета привязка будет работать только в том случае, если библиотека Kotlin не использует специфические типы Kotlin, иначе все эти члены не будут предоставлены в коде C#, а любое приложение, пытающееся использовать привязку, завершится сбоем во время выполнения.

    Совет Из-за ограничения Xamarin.Android средства привязки можно добавить только в один архив Android (AAR) для каждого проекта привязки. Если необходимо добавить несколько файлов AAR, требуется несколько проектов Xamarin.Android, по одному на каждый AAR. Если бы мы столкнулись с этим в этом пошаговом руководстве, то предыдущие четыре действия этого шага надо было бы повторить для каждого архива. В качестве альтернативного варианта можно вручную объединить несколько архивов Android в один, и в результате можно использовать один проект привязки Xamarin.Android.

    Использование библиотеки привязки

    Последним шагом является использование библиотеки привязки Xamarin.Android в приложении Xamarin.Android. Создайте проект Xamarin.Android, добавьте ссылку на библиотеку привязки и визуализируйте пользовательский интерфейс Bubble Picker:

    1. Создайте проект Xamarin.Android. Используйте приложение Android > для android > в качестве отправной точки и выберите последняя и самая большая версия в качестве целевой платформы, чтобы избежать проблем с совместимостью. Все последующие шаги предназначены для этого проекта: Создание приложения в Visual Studio
    2. Добавьте ссылку на проект в проект привязки или добавьте ссылку на созданную ранее библиотеку DLL: Добавление Reference.pngпривязки в Visual Studio
    3. Добавьте ссылку на пакет Xamarin.Kotlin.StdLib NuGet, который вы ранее добавили в проект привязки Xamarin.Android. Этот пакет поддерживает любые специальные типы Kotlin, которые должны обрабатываться в среде выполнения. Без этого пакета приложение можно скомпилировать, но произойдет сбой во время выполнения: Visual Studio Add StdLib NuGet
    4. Добавьте элемент управления BubblePicker в макет Android для MainActivity . Откройте файл testBubblePicker/Resources/layout/content_main.xml и добавьте узел элементов управления BubblePicker в виде последнего элемента корневого элемента управления RelativeLayout:

    protected override void OnCreate(Bundle savedInstanceState) < . var picker = FindViewById(Resource.Id.picker); picker.BubbleSize = 20; picker.Adapter = new BubblePickerAdapter(); picker.Listener = new BubblePickerListener(picker); . > 

    BubblePickerAdapter и BubblePickerListener — это два класса, создаваемые с нуля. Они обрабатывают данные пузырьков и управляют взаимодействием:

    public class BubblePickerAdapter : Java.Lang.Object, IBubblePickerAdapter < private List_bubbles = new List(); public int TotalCount => _bubbles.Count; public BubblePickerAdapter() < for (int i = 0; i < 10; i++) < _bubbles.Add($"Item "); > > public PickerItem GetItem(int itemIndex) < if (itemIndex < 0 || itemIndex >= _bubbles.Count) return null; var result = _bubbles[itemIndex]; var item = new PickerItem(result); return item; > > public class BubblePickerListener : Java.Lang.Object, IBubblePickerListener < public View Picker < get; >public BubblePickerListener(View picker) < Picker = picker; >public void OnBubbleDeselected(PickerItem item) < Snackbar.Make(Picker, $"Deselected: ", Snackbar.LengthLong) .SetAction("Action", (Android.Views.View.IOnClickListener)null) .Show(); > public void OnBubbleSelected(PickerItem item) < Snackbar.Make(Picker, $"Selected: ", Snackbar.LengthLong) .SetAction("Action", (Android.Views.View.IOnClickListener)null) .Show(); > > 

    Демонстрация BubblePicker

  • Запустите приложение, которое должно визуализировать пользовательский интерфейс Bubble Picker: Для примера требуется дополнительный код для визуализации стиля элементов и обработки взаимодействий, но элемент управления BubblePicker успешно создан и активирован.
  • Поздравляем! Вы успешно создали приложение Xamarin.Android и библиотеку привязок, которая использует библиотеку Kotlin.

    Теперь у вас должно быть базовое приложение Xamarin.Android, которое использует собственную библиотеку Kotlin через библиотеку привязки Xamarin.Android. В этом пошаговом руководстве намеренно используется простой пример для выделения основных понятий. В реальных сценариях, скорее всего, потребуется предоставить большее количество API и применить к ним преобразования метаданных.

    Связанные ссылки

    • Android Studio
    • Установка Gradle
    • Visual Studio для Mac
    • Декомпилятор Java
    • Библиотека Kotlin BubblePicker
    • Привязка библиотеки Java
    • XPath
    • Метаданные привязки Java
    • Xamarin.Kotlin.StdLib NuGet
    • Репозиторий примеров проектов

    Синхронизация проекта при работе с Android Studio и Bitbucket?

    Работаем над проектом небольшой командой — 4 программиста.
    Используем Android Studio.
    Для работы используем Bitbucket.
    В проекте используем mapsforge. Библиотека требует версию Gradle 1.1
    После обновления Android Studio, версия Gradle обновилась до 2.1, что теперь вызывает ошибки.
    При этом, программисты используют ОС Win7 и различные версии Linux.
    Под контролем находятся только файлы проекта, файлы настроек находятся в игноре, т.к. в противном случае возникают конфликты на разных ОС. Причину, почему так происходит я пояснить не могу.

    Это максимум информации, которую я готов на данный момент предоставить, в случае, если для ответа на вопрос нужна будет еще какая то информация, прошу написать в комменте или ЛС и я ее предоставлю.

    Теперь суть вопроса — можете посоветовать способ синхронизации данных проекта между нами, такие, чтобы это позволило работать в Android Studio без риска обрушения проекта в результате обновлений самой Studio или Gradle?

    Может кто-то сталкивался с аналогичной проблемой, или встречал в интернете примеры или инструкции. Будем рады любой информации, включая ссылки на возможные решения или инструкции.

    В свою очередь, мы вдвоем продолжаем гуглить и пробовать различные варианты. Пока решения не нашли. Вариант понизить Gradle до версии 1.1 вызывает падения проекта, т.к. уже сама Android Studio отказывается работать с Gradle версии ниже 2.1 в нашем проекте. Новые проекты запускаются без проблем. Причину пояснить я так же не могу, т.к. не пойму что именно не устраивает Studio.

    • Вопрос задан более трёх лет назад
    • 5150 просмотров

    1 комментарий

    Оценить 1 комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *