Как создать apk в visual studio
Это руководство поможет вам приступить к работе с Xamarin.Android в Windows для создания кроссплатформенного приложения, которое будет работать на устройствах Android.
В этой статье вы создадите простое приложение Android с помощью Xamarin.Android и Visual Studio 2019.
Требования
Чтобы использовать это руководство, вам потребуется следующее:
- Windows 11 или Windows 10 (см. примечание)
- Рабочая нагрузка "Разработка мобильных приложений с помощью .NET" для Visual Studio 2019 г.
Это руководство работает с Visual Studio 2022, Visual Studio 2019 и Visual Studio 2017. Если вы используете Visual Studio 2017, некоторые инструкции могут быть неверными из-за различий в пользовательском интерфейсе между версиями Visual Studio.
Вам также потребуется телефон Android или настроенный эмулятор для запуска приложения. См. раздел "Настройка эмулятора Android".
Создание проекта Xamarin.Android
Запустите среду Visual Studio. Выберите "Создать > файл>" Project для создания нового проекта.
В диалоговом окне создания проекта выберите шаблон приложения Android (Xamarin) и нажмите кнопку "Далее".
Назовите проект TimeChangerAndroid и нажмите кнопку "Создать".
Xamarin создаст новое решение с одним проектом с именем TimeChangerAndroid.
Создание пользовательского интерфейса с помощью ANDROID XML
В каталоге Resources\layout проекта откройте activity_main.xml. XML в этом файле определяет первый экран, который пользователь увидит при открытии TimeChanger.
Пользовательский интерфейс TimeChanger прост. Он отображает текущее время и имеет кнопки для настройки времени приращения в течение одного часа. Он использует вертикальную LinearLayout ориентацию по времени над кнопками и горизонтальным LinearLayout расположением кнопок рядом. Содержимое находится в центре экрана, задав для атрибута android:gravityцентрироваться по вертикали LinearLayout .
Замените содержимое activity_main.xml следующим кодом.
На этом этапе можно запустить TimeChangerAndroid и просмотреть созданный пользовательский интерфейс. В следующем разделе вы добавите функциональные возможности в пользовательский интерфейс, отображая текущее время и включив кнопки для выполнения действия.
Откройте файл MainActivity.cs. Этот файл содержит логику программной части, которая добавит функциональные возможности в пользовательский интерфейс.
Установка текущего времени
Сначала получите ссылку на TextView время. Используйте FindViewById для поиска всех элементов пользовательского интерфейса с правильным android:id (который был задан "@+id/timeDisplay" в xml из предыдущего шага). Это будет отображать текущее TextView время.
Элементы управления пользовательского интерфейса должны обновляться в потоке пользовательского интерфейса. Изменения, внесенные из другого потока, могут неправильно обновлять элемент управления при отображении на экране. Так как этот код всегда будет выполняться в потоке пользовательского интерфейса, используйте метод RunOnUiThread , чтобы убедиться, что все обновления отображаются правильно. Вот полный UpdateTimeLabel метод.
Обновление текущего времени каждые секунды
На этом этапе текущее время будет точным в течение большей части секунды после запуска TimeChangerAndroid. Метка должна периодически обновляться, чтобы обеспечить точность времени. Объект Таймера периодически вызывает метод обратного вызова, который обновляет метку с текущим временем.
Добавление HourOffset
Кнопки вверх и вниз настраивают время приращения в течение одного часа. Добавьте свойство HourOffset для отслеживания текущей корректировки.
Теперь обновите метод UpdateTimeLabel, чтобы узнать о свойстве HourOffset.
Создание обработчиков событий click
Все кнопки вверх и вниз должны выполняться, это увеличение или уменьшение свойства HourOffset и вызов UpdateTimeLabel.
Переключите кнопки вверх и вниз к соответствующим обработчикам событий
Чтобы связать кнопки с соответствующими обработчиками событий, сначала используйте FindViewById, чтобы найти кнопки по идентификаторам. Получив ссылку на объект button, вы можете добавить обработчик событий в его Click событие.
Завершен файл MainActivity.cs
По завершении файл MainActivity.cs должен выглядеть следующим образом:
Запустите приложение.
Чтобы запустить приложение, нажмите клавишу F5 или нажмите кнопку "Отладка > начать отладку". В зависимости от настройки отладчика приложение запустится на устройстве или в эмуляторе.
это руководство поможет приступить к работе с Xamarin. forms на Windows для создания кросс-платформенного приложения, которое будет работать на устройствах Android.
в этой статье вы создадите простое приложение Android с помощью Xamarin. forms и Visual Studio 2019.
Требования
Для работы с этим руководством вам потребуется следующее:
- Windows 11 или Windows 10 (см. примечание)
- рабочая нагрузка "разработка мобильных приложений с помощью .net" для Visual Studio 2019
это руководством работает с Visual Studio 2022, Visual Studio 2019 и Visual Studio 2017. если вы используете Visual Studio 2017, некоторые инструкции могут быть неправильными из-за различий в пользовательском интерфейсе между версиями Visual Studio.
Вам также потребуется телефон Android или настроенный эмулятор для запуска приложения. См. статью тестирование на устройстве или эмуляторе Android.
Создание нового проекта Xamarin. Forms
Запустите Visual Studio. щелкните файл > создать > Project, чтобы создать новый проект.
В диалоговом окне Новый проект выберите шаблон мобильное приложение (Xamarin. Forms) и нажмите кнопку Далее.
Присвойте проекту имя тимечанжерформс и нажмите кнопку создать.
Xamarin создаст новое решение с двумя проектами: тимечанжерформс и тимечанжерформс. Android.
Создание пользовательского интерфейса с помощью XAML
Разверните проект тимечанжерформс и откройте MainPage. XAML. XAML в этом файле определяет первый экран, который пользователь увидит при открытии Тимечанжер.
Пользовательский интерфейс Тимечанжер прост. Он отображает текущее время и содержит кнопки для корректировки времени с шагом в один час. Он использует вертикальный StackLayout для выравнивания времени над кнопками, а горизонтальное StackLayout — для параллельного расположения кнопок. Содержимое выравнивается по центру экрана путем установки параметра вертикальной StackLayout хоризонталоптионс и Вертикалоптионс в значение центерандекспанд.
Замените содержимое файла MainPage. XAML следующим кодом.
На этом этапе пользовательский интерфейс завершен. Однако Тимечанжерформс не будет собираться, так как в XAML имеются ссылки на методы UpButton_Clicked и DownButton_Clicked , но не определены в любом месте. Даже если приложение было запущено, текущее время не будет отображаться. В следующем разделе вы исправите эти ошибки и добавите функции в пользовательский интерфейс.
в Обозреватель решений щелкните правой кнопкой мыши MainPage. xaml и выберите пункт просмотреть код. Этот файл содержит код программной части, который будет добавлять функции в пользовательский интерфейс.
Установка текущего времени
Код в этом файле может ссылаться на элементы управления, объявленные в XAML, с помощью значения атрибута x:Name элемента управления. В этом случае вызывается time Метка, отображающая текущее время.
Элементы управления ИП должны быть обновлены в основном потоке. Изменения, внесенные из другого потока, могут неправильно обновлять элемент управления, как он отображается на экране. Поскольку нет никакой гарантии, что этот код всегда будет выполняться в основном потоке, используйте метод бегининвокеонмаинсреад , чтобы убедиться, что обновления отображаются правильно. Ниже приведен полный метод Упдатетимелабел.
Обновлять текущее время каждую секунду
На этом этапе текущее время будет точным для (не более одной секунды после запуска Тимечанжерформс). Для сохранения точности времени метка должна быть периодически обновлена. Объект таймера будет периодически вызывать метод обратного вызова, который обновляет метку текущим временем.
Добавить Хауроффсет
Кнопки вверх и вниз корректируют время с шагом в один час. Добавьте свойство хауроффсет для контроля текущей корректировки.
Теперь обновите метод Упдатетимелабел, чтобы он знал о свойстве Хауроффсет.
Обработчики событий нажатия кнопки "Добавить"
Все кнопки вверх и вниз необходимо выполнить, увеличив или уменьшая свойство Хауроффсет и вызовите Упдатетимелабел.
По завершении MainPage. XAML. cs должен выглядеть следующим образом:
Запустите приложение
Чтобы запустить приложение, нажмите клавишу F5 или кнопку Отладка > начать отладку. В зависимости от настройки отладчикаприложение запустится на устройстве или в эмуляторе.
В этом состоящем из двух частей руководстве вы узнаете, как создать первое приложение Xamarin.Android в Visual Studio. Вы также получите представление об основах разработки приложений Android с помощью Xamarin.
Вы создадите приложение, которое преобразовывает введенный пользователем буквенно-цифровой телефонный номер в числовой телефонный номер и отображает результат пользователю. Окончательный вариант приложения выглядит примерно так:
Требования к Windows
Для выполнения данного пошагового руководства необходимо следующее:
Visual Studio 2019 или Visual Studio 2017 версии 15.8 или более поздней: Community, Professional или Enterprise.
Требования к macOS
Для выполнения данного пошагового руководства необходимо следующее:
Последняя версия Visual Studio для Mac.
Компьютер Mac под управлением macOS HIgh Sierra 10.13 или более поздней версии.
В этом пошаговом руководстве предполагается, что на вашей платформе установлена и запущена последняя версия Xamarin.Android. Инструкции по установке Xamarin.Android см. в разделе Установка Xamarin.Android.
Настройка эмуляторов
Если вы используете эмулятор Android, рекомендуем настроить в нем использование аппаратного ускорения. Инструкции по настройке аппаратного ускорения см. в разделе Аппаратное ускорение для производительной работы эмулятора.
Создание проекта
Запустите Visual Studio. Щелкните "Создать > файл>" Project, чтобы создать новый проект.
В диалоговом окне Новый проект выберите шаблон Приложение Android. Задайте для нового проекта имя Phoneword и нажмите кнопку ОК:
В диалоговом окне Новое приложение Android щелкните Пустое приложение и нажмите кнопку ОК, чтобы создать новый проект.
Создание макета
Новые выпуски Visual Studio поддерживают открытие XML-файлов в Android Designer.
Android Designer поддерживает как файлы AXML, так и XML.
После создания проекта разверните папку Ресурсы и затем папку макета в обозревателе решений. Дважды щелкните файл activity_main.axml, чтобы открыть его в Android Designer. Это файл макета для экрана приложения:
Более новые выпуски Visual Studio содержат немного другой шаблон приложений.
- Макет находится в content_main.axml, а не в activity_main.axml.
- Макет по умолчанию — RelativeLayout . Чтобы выполнить остальные шаги на этой странице, нужно изменить тег на и добавить другой атрибут android:orientation="vertical" в открывающий тег LinearLayout .
На панели элементов (область слева) введите text в поле поиска и перетащите мини-приложение Text (Large) (Крупный текст) в область конструктора (в центре):
Выбрав элемент управления Крупный текст в области конструктора, используйте область Свойства, чтобы изменить свойство Text мини-приложения Крупный текст на Enter a Phoneword: :
Перетащите мини-приложение Обычный текст из панели элементов в область конструктора и поместите его под мини-приложением Крупный текст. Размещение мини-приложения не будет выполняться, пока вы не переместите указатель мыши на место в макете, которое может принять мини-приложение. На снимках экрана ниже мини-приложение нельзя разместить (как показано в левой части), пока указатель мыши не переместится под предыдущий TextView (как показано в правой части):
Когда Обычный текст (мини-приложение EditText ) будет помещен правильно, он будет отображаться, как показано на следующем снимке экрана:
Выбрав мини-приложение Обычный текст в области конструктора, используйте область Свойства, чтобы изменить свойство Id мини-приложения Обычный текст на @+id/PhoneNumberText , а свойство Text на 1-855-XAMARIN :
Перетащите элемент Кнопка из панели элементов в область конструктора и поместите его под мини-приложением Обычный текст:
Выбрав элемент Кнопка в области конструктора, используйте область Свойства, чтобы изменить свойство Text на Translate , а свойство Id — на @+id/TranslateButton :
Перетащите элемент TextView из панели элементов в область конструктора и поместите его под мини-приложением Кнопка. Задайте для свойства Text элемента TextView пустую строку, а для свойства Id — значение @+id/TranslatedPhoneword :
Сохраните изменения, нажав клавиши CTRL+S.
Написание кода
Следующим шагом является добавление кода для преобразования телефонных номеров из буквенно-цифровых в цифровые. Добавьте в проект новый файл, щелкнув правой кнопкой мыши проект Phoneword в области Обозреватель решений и выбрав команду "Добавить > новый элемент", как показано ниже:
Сохраните изменения в файле PhoneTranslator.cs, нажав кнопку "Сохранить файл > " (или нажав клавиши CTRL+S), а затем закройте файл.
Подключение пользовательского интерфейса
Следующим шагом является добавление кода для подключения пользовательского интерфейса путем вставки вспомогательного кода в класс MainActivity . Начните с подключения кнопки Translate (Преобразование). В классе MainActivity найдите метод OnCreate . Следующим шагом является добавление кода кнопки в OnCreate , под вызовами base.OnCreate(savedInstanceState) и SetContentView(Resource.Layout.activity_main) . Сначала измените код шаблона, чтобы метод OnCreate принял следующий вид:
Получите ссылку на элементы управления, созданные в файле макета с помощью Android Designer. Добавьте следующий код внутрь метода OnCreate после вызова SetContentView :
Добавьте код, который реагирует на нажатие пользователем кнопки Translate (Преобразовать). Добавьте следующий код в метод OnCreate (после строк, добавленных на предыдущем шаге):
Сохраните работу, выбрав команду "Сохранить все файл" > (или нажав клавиши CTRL-SHIFT-S) и создав приложение, выбрав "Построить > перестроение решения" (или нажав клавиши CTRL-SHIFT-B).
При наличии ошибок просмотрите предыдущие шаги и исправьте все ошибки, пока сборка приложения не будет проходить успешно. Если возникает ошибка сборки, например Resource does not exist in the current context (Ресурс не существует в текущем контексте), убедитесь, что имя пространства имен в MainActivity.cs совпадает с именем проекта ( Phoneword ), после чего полностью перестройте решение. Если по-прежнему возникают ошибки сборки, убедитесь, что установлены последние обновления Visual Studio.
Задайте имя приложения
Теперь у вас должно быть рабочее приложение— пришло время задать имя приложения. Разверните папку values (в папке Resources) и откройте файл strings.xml. Измените строку имени приложения на Phone Word , как показано здесь:
Запуск приложения
Протестируйте приложение, запустив его на устройстве или эмуляторе Android. Коснитесь кнопки TRANSLATE, чтобы преобразовать 1-855-XAMARIN в телефонный номер:
Чтобы запустить приложение на устройстве Android, см., как настроить устройство для разработки.
Запустите Visual Studio для Mac из папки Applications (Приложения) или из Spotlight.
Щелкните Создать проект. , чтобы создать проект.
В диалоговом окне "Выбор шаблона для нового проекта" щелкните "Приложение Android>" и выберите шаблон приложения Android. Щелкните Далее.
В диалоговом окне Настройте приложение Android назовите новое приложение Phoneword и нажмите кнопку Далее.
В диалоговом окне Настройте приложение Android оставьте имена проекта и решения в виде Phoneword и нажмите кнопку Создать для создания проекта.
Создание макета
Новые выпуски Visual Studio поддерживают открытие XML-файлов в Android Designer.
Android Designer поддерживает как файлы AXML, так и XML.
После создания проекта разверните папку Ресурсы и затем папку макета на Панели решения. Дважды щелкните Main.axml, чтобы открыть его в Android Designer. Это файл макета для экрана при просмотре в Android Designer:
На панели элементов (область справа) введите text в поле поиска и перетащите мини-приложение Text (Large) (Крупный текст) в область конструктора (в центре):
Выбрав мини-приложение Text (Large) (Крупный текст) в области конструктора, используйте область Свойства, чтобы изменить свойство Text мини-приложения Text (Large) (Крупный текст) на Enter a Phoneword: , как показано ниже:
После этого перетащите мини-приложение Обычный текст из панели элементов в область конструктора и поместите его под мини-приложением Text (Large) (Крупный текст). Обратите внимание, что можно использовать поле поиска для поиска мини-приложений по имени:
Выбрав мини-приложение Обычный текст в области конструктора, используйте область Свойства, чтобы изменить свойство Id мини-приложения Обычный текст на @+id/PhoneNumberText , а свойство Text на 1-855-XAMARIN :
Перетащите элемент Кнопка из панели элементов в область конструктора и поместите его под мини-приложением Обычный текст:
Выбрав элемент Кнопка в области конструктора, используйте область Свойства, чтобы изменить свойство Id элемента Кнопка на @+id/TranslateButton , а свойство Text на Translate :
Перетащите элемент TextView из панели элементов в область конструктора и поместите его под мини-приложением Кнопка. Выбрав TextView, задайте для свойства id элемента TextView значение @+id/TranslatedPhoneWord и измените text на пустую строку:
Сохраните работу, нажав клавиши ⌘ + S.
Написание кода
Теперь добавьте код для преобразования телефонных номеров из буквенно-цифровых в цифровые. Добавьте новый файл в проект, щелкнув значок шестеренки рядом с проектом Phoneword на панели решения и выбрав "Добавить > новый файл". :
Удалите весь код шаблона в новом классе и замените его следующим:
Сохраните изменения в файле PhoneTranslator.cs, нажав кнопку "Сохранить файл > " (или нажав клавиши ⌘ + S), а затем закройте файл. Убедитесь, что ошибки времени компиляции отсутствуют, перестроив решение.
Подключение пользовательского интерфейса
Следующим шагом является добавление кода для подключения пользовательского интерфейса путем добавления вспомогательного кода в класс MainActivity . Дважды щелкните MainActivity.cs на Панели решения, чтобы открыть его.
Сначала добавьте обработчик событий для кнопки Translate (Преобразование). В классе MainActivity найдите метод OnCreate . Добавьте код кнопки в OnCreate , под вызовами base.OnCreate(bundle) и SetContentView (Resource.Layout.Main) . Удалите любой имеющийся код для обработки кнопок (т. е. код, который ссылается на Resource.Id.myButton и создает соответствующий обработчик щелчка), чтобы метод OnCreate принял следующий вид:
После этого нужно получить ссылку на элементы управления, созданные в файле макета с помощью Android Designer. Добавьте следующий код внутрь метода OnCreate после вызова SetContentView :
Добавьте код, который реагирует на нажатие пользователем кнопки Translate (Преобразовать), добавив следующий код в метод OnCreate (после строк, добавленных на предыдущем шаге):
При наличии ошибок просмотрите предыдущие шаги и исправьте все ошибки, пока сборка приложения не будет проходить успешно. Если возникает ошибка сборки, например Resource does not exist in the current context (Ресурс не существует в текущем контексте), убедитесь, что имя пространства имен в MainActivity.cs совпадает с именем проекта ( Phoneword ), после чего полностью перестройте решение. Если по-прежнему возникают ошибки сборки, убедитесь, что установлены последние обновления Xamarin.Android и Visual Studio для Mac.
Настройка метки и значка приложения
Теперь, когда вы получили работающее приложение, пора внести последние штрихи. Сначала измените Label для MainActivity . Label — это то, что Android отображает в верхней части экрана, чтобы пользователи знали, что они находятся в приложении. В начале класса MainActivity измените Label на Phone Word , как показано ниже:
Пришло время задать значок приложения. По умолчанию Visual Studio для Mac предоставляет для проекта значок по умолчанию. Удалите эти файлы из решения и замените их другим значком. Разверните папку Ресурсы на Панели решения. Обратите внимание, что имеется 5 папок, которые начинаются с префикса mipmap- , и каждая из них содержит один файл Icon.jpg:
Нужно удалить каждый из этих файлов значков из проекта. Щелкните правой кнопкой мыши каждый из файлов Icon.jpg и выберите пункт Удалить в контекстном меню:
Затем скачайте и распакуйте набор значков приложения Xamarin. Этот ZIP-файл содержит значки для приложения. Все значки выглядят одинаково, но имеют разное разрешение и правильно отображаются на разных устройствах с различной плотностью экрана. Этот набор файлов нужно скопировать в проект Xamarin.Android. В Visual Studio для Mac на панели решения щелкните правой кнопкой мыши папку mipmap-hdpi и выберите "Добавить > файлы".
Из диалогового окна выбора перейдите в каталог с распакованными значками Xamarin AdApp и откройте папку mipmap-hdpi. Выберите Icon.jpg и нажмите кнопку Открыть.
В диалоговом окне Добавить файл в папку выберите Copy the file into the directory (Копировать файл в каталог) и нажмите кнопку ОК:
Повторите эти шаги для каждой папки mipmap- , пока не скопируете содержимое папок mipmap- со значками приложения Xamarin в аналогичные папки mipmap- в проекте Phoneword.
Скопировав все значки в проект Xamarin.Android, откройте диалоговое окно Параметры проекта, щелкнув правой кнопкой мыши проект на Панели решения. Выберите "Создать > приложение Android " и в @mipmap/icon поле со списком значка приложения :
Запуск приложения
Наконец, протестируйте приложение, запустив его на устройстве или эмуляторе Android и преобразовав слово-номер:
Чтобы запустить приложение на устройстве Android, см., как настроить устройство для разработки.
Поздравляем! Вы создали свое первое приложение Xamarin.Android! Пришло время закрепить и углубить приобретенные знания и навыки. Следующий раздел Привет, Android: теперь подробнее.
You finished your app, tested on debug mode and it is working perfect. Now, you want to prepare it to publish in the Google Play Store.
Android Manifest
First, in Visual Studio, right-click your Xamarin.Android project in the Solution Explorer and select Properties. Then, go to the Android Manifest tab, to see this screen:
Unlike in Android Studio or Eclipse, you don't need the set the AndroidManifest.xml file by writing; Xamarin and Visual Studio do that for you. Activities, BroadcastReceivers and Services are inserted into Android Manifest by declaring specific attributes in their classes.
- Application name: This is the app name that will be visible for the user.
- Package name: This is the package name. It must be unique, meaning that it must not use the same package name of other apps in the Google Play Store.
- Application Icon: This is the icon that will be visible to the user, equivalent to the @drawable/ic_launcher used in Android Studio or Eclipse projects.
- Version number: The version number is used by Google Play for version control. When you want to publish an APK for an updated version of your app, you must add 1 to this number for each new upgrade.
- Version name: This is the version name that will be displayed to the user.
- Install location: This determines where your APK will be installed, in the device storage or SD Card.
- Required permissions: Here you determine which permissions are necessary for your app.
Android Options
In the screen below, you can configure the compiler options. Using the right options here can reduce a lot your APK size and also prevent errors.
Important
Xamarin.Linker may sometimes remove classes that are not seemed to be used by your code, especially if they are in the project's Core (PCL library). To avoid that, you can either set the Linking to "Sdk Assemblies Only" or use the Preserve attribute in your classes, example:
PreserveAttribute.cs
In a class:
- Supported architectures: Select all, for compatibility reasons.
After configuring everything, Rebuild the Project to make sure that it builds successfully.
Creating the APK for Release mode
To create the APK file, right-click the Xamarin.Android project in the Solution Explorer and select Archive.
This will open the Archive manager and begin archiving the project, preparing to create the APK file.
When it finishes archiving the project, click in Distribute. to proceed.
The Distribute screen will present you two options: Ad-hoc and Google Play. The first will create an APK and save it in your computer. The second will directly publish the app in Google Play.
Choosing the first is recommended, so you can test the APK in other devices if you want.
In the following screen, an Android Key Store is needed to sign the APK. If you already have one, you can use it by clicking in Import. ; if you don't, you can create a new Android Key Store by clicking in +.
Creating a new Android Key Store screen:
To create the APK, click in Save As. You may be prompted to type the Key Store password.
When it completes, you can click in Open Folder on the Archives screen to see your generated APK file.
В этом разделе представлена информация о том, как подготовить приложение Xamarin.Android для режима выпуска и как его оптимизировать.
Подготовка APK в Visual Studio
Вы закончили свое приложение, протестировали его в режиме отладки и отлично работали. Теперь вы хотите подготовить его для публикации в Google Play Store.
Документация Xamarin обеспечивает хорошую информацию здесь:
Android Manifest
Во-первых, в Visual Studio щелкните правой кнопкой мыши проект Xamarin.Android в обозревателе решений и выберите «Свойства». Затем перейдите на вкладку манифеста Android, чтобы увидеть этот экран:
В отличие от Android Studio или Eclipse, вам не нужно установить файл AndroidManifest.xml, написав; Xamarin и Visual Studio делают это за вас. Мероприятия, BroadcastReceivers и Services вставляются в Android Manifest путем объявления определенных атрибутов в своих классах .
На этом экране доступны следующие опции:
- Имя приложения : это имя приложения, которое будет отображаться для пользователя.
- Имя пакета : это имя пакета. Он должен быть уникальным, что означает, что он не должен использовать одно и то же имя пакета других приложений в Google Play Store.
- Значок приложения : это значок, который будет отображаться для пользователя, что эквивалентно @ drawable / ic_launcher, используемому в проектах Android Studio или Eclipse.
- Номер версии : номер версии используется Google Play для контроля версий. Если вы хотите опубликовать APK для обновленной версии вашего приложения, вы должны добавить 1 к этому номеру для каждого нового обновления.
- Название версии : это имя версии, которое будет отображаться для пользователя.
- Место установки : определяет, где будет установлен ваш APK, в хранилище устройств или на SD-карте.
- Необходимые разрешения : здесь вы определяете, какие разрешения необходимы для вашего приложения.
Настройки Android
На приведенном ниже экране вы можете настроить параметры компилятора. Использование правильных параметров здесь может значительно уменьшить ваш размер APK, а также предотвратить ошибки.
Важный
Xamarin.Linker иногда может удалять классы, которые, похоже, не используются вашим кодом, особенно если они находятся в ядре проекта (библиотека PCL). Чтобы этого избежать, вы можете установить привязку только к «Sdk Assemblies Only» или использовать атрибут Preserve в своих классах, например:
PreserveAttribute.cs
В классе:
- Поддерживаемые архитектуры : выберите все по соображениям совместимости.
После настройки всего, перестройте проект, чтобы убедиться, что он успешно работает.
Создание режима APK для выпуска
Вы закончили настройку своего Android-проекта для выпуска. В следующем уроке показано, как сгенерировать APK в Visual Studio. Полный учебник по документации Xamarin можно найти здесь:
Чтобы создать файл APK, щелкните правой кнопкой мыши проект Xamarin.Android в обозревателе решений и выберите Archive .
Это откроет диспетчер архива и начнет архивирование проекта, готовясь к созданию файла APK.
Когда он завершит архивирование проекта, нажмите «Распространять» . чтобы продолжить.
На экране «Распределить» будут представлены два варианта: «Ad-hoc» и «Google Play». Первый создаст APK и сохранит его на вашем компьютере. Второй будет публиковать приложение прямо в Google Play.
Рекомендуется выбрать первый, поэтому вы можете протестировать APK на других устройствах, если хотите.
На следующем экране для подписывания APK необходим магазин Android Key. Если у вас уже есть, вы можете использовать его, нажав «Импортировать . »; если вы этого не сделаете, вы можете создать новый Android Key Store, нажав +.
Чтобы создать APK, нажмите «Сохранить как». Возможно, вам будет предложено ввести пароль хранилища ключей.
По завершении нажмите «Открыть папку» на экране «Архивы», чтобы увидеть сгенерированный файл APK.
Включение MultiDex в вашем Xamarin.Android APK
MultiDex - это библиотека в Android APK, которая позволяет приложению иметь более 65 536 методов.
В Android APK есть исполняемые файлы Dalvik (.dex), которые содержат сгенерированные байт-коды, скомпилированные из вашего Java-кода. Каждый файл .dex может содержать до 65 536 методов (2 ^ 16).
В версиях ОС Android до Android 5.0 Lollipop (API 21) используется среда исполнения Dalvik, которая поддерживает только один файл .dex на APK, ограничивая 65 536 методов на APK. Начиная с Android 5.0, ОС Android использует время выполнения ART, которое может поддерживать более одного файла .dex на APK, избегая ограничений.
Чтобы превзойти предел 65k-методов в версиях Android ниже API 21, разработчики должны использовать библиотеку поддержки MultiDex. MultiDex создает дополнительные файлы classes.dex (classes2.dex, classes3.dex, . ), ссылаясь на них в файле classes.dex. Когда приложение начинает загрузку, он использует класс MultiDexApplication для загрузки дополнительных файлов .dex.
Если ваше приложение для Android нацелено на минимальную версию SDK выше или равную API 21 (Android 5.0 Lollipop), нет необходимости использовать библиотеку MultiDex, потому что ОС обрабатывает изначально дополнительные файлы .dex. Однако, если по соображениям совместимости разработчик хочет поддерживать устаревшую ОС Android, он должен использовать библиотеку MultiDex.
Как использовать MultiDex в приложении Xamarin.Android
Во-первых, чтобы включить MultiDex в приложении Xamarin.Android, перейдите в свой проект «Свойства» -> «Настройки Android» -> «Упаковка» -> «Включить многоэкранный режим», как на экране печати ниже:
Затем вы должны создать класс MultiDexApplication в своем приложении. В корне проекта создайте новый класс (в обозревателе решений щелкните правой кнопкой мыши в проекте Add .. -> Class или Shift + Alt + C). В новом файле класса скопируйте следующий код, заменив пространство имен Sample на имя пространства имен проектов Xamarin.Android.
Перейдите в папку Android SDK, откройте папку с инструментами создания и установите папки с номерами компиляторов Android SDK, например:
C: \ Android-SDK \ сборки-инструменты \ 23.0.3 \
C: \ Android-SDK \ сборки-инструменты \ 24.0.1 \
C: \ Android-SDK \ сборки-инструменты \ 25.0.2 \
Внутри каждой из этих папок есть файл mainClassesDex.bat , пакетный скрипт, используемый для создания файлов classes.dex. Откройте каждый файл mainClassesDex.bat с помощью текстового редактора (Notepad или Notepad ++) и в его скрипте найдите и замените блок:
Сохраните каждый mainClassesDex.bat в текстовом редакторе после изменений.
После описанных выше шагов вы сможете успешно создать приложение Xamarin.Android с помощью MultiDex.
Включение ProGuard в ваш Xamarin.Android APK
ProGuard - это инструмент, используемый в процессе построения для оптимизации и обфускации кода Java вашего APK, а также удаления неиспользуемых классов. Полученный APK при использовании ProGuard будет иметь меньший размер и будет сложнее перепроектировать (декомпиляция).
Как использовать ProGuard в приложении Xamarin.Android
Во-первых, чтобы включить ProGuard в вашем приложении Xamarin.Android, перейдите в свой проект Properties -> Android Options -> Packaging -> Включите ProGuard, как на экране печати ниже:
Это позволяет ProGuard при создании приложения.
Xamarin.Android по умолчанию устанавливает свои собственные конфигурации для ProGuard, которые можно найти внутри папок obj/Debug/proguard или obj/Release/proguard в файлах proguard_project_primary.cfg , proguard_project_references.cfg и proguard_xamarin.cfg . Эти три файла объединены в качестве конфигураций для ProGuard, и они автоматически создаются Xamarin при построении.
Если разработчик хочет дополнительно настроить параметры ProGuard, он может создать файл в корне проекта с именем proguard.cfg (другие имена также действительны, если расширение является .cfg) и устанавливают его действие Build на ProguardConfiguration, как на рисунке ниже:
В файле могут быть вставлены пользовательские параметры ProGuard, такие как -dontwarn , -keep class и другие .
Важный
Чтобы устранить эту проблему, вы должны загрузить последнюю версию ProGuard ( здесь ) и скопировать содержимое .zip-файла в android-sdk\tools\proguard\ . Это позволит обновить ProGuard, и процесс сборки должен работать без проблем.
После этого вы сможете успешно создать приложение Xamarin.Android с помощью ProGuard.
«Таинственные» ошибки, связанные с ProGuard и Linker
Вы сделали отличное приложение и протестировали его в Debug с хорошими результатами. Все работает нормально!
Но тогда вы решили подготовить свое приложение для выпуска. Вы создали MultiDex, ProGuard и Linker, а затем перестали работать.
Этот учебник призван помочь вам найти общие проблемы, связанные с ProGuard и Linker, которые могут вызвать загадочные ошибки.
Понимание Xamarin.Linker
Нет : код не удаляется.
Sdk Assemblies Only : этот параметр позволяет Xamarin.Linker проверять неиспользуемый код только в библиотеках Xamarin. Этот параметр безопасен.
Sdk и User Assemblies : этот параметр позволяет Xamarin.Linker проверять неиспользуемый код в библиотеках Xamarin и в коде проекта (включая PCL, компоненты Xamarin и пакеты NuGet). Этот вариант не всегда безопасен!
При использовании опций Sdk и User Assemblies Xamarin.Linker может думать, что части кода не используются, когда на самом деле они очень используются! Это может привести к тому, что некоторые библиотеки перестанут работать должным образом и вызывают ошибки в вашем приложении.
Чтобы Xamarin.Linker не удалял код, есть 3 варианта:
- Установка параметра «Связывание» на «Нет» или «Только Sdk»;
- Пропустить соединительные сборки;
- Использование атрибута Preserve.
Пример для 2. Пропустить соединительные сборки:
В приведенном ниже примере использование Xamarin.Linker вызвало пакет NuGet ( Octokit ), который отлично работает, чтобы перестать работать, потому что он больше не может подключаться к Интернету:
Чтобы библиотека снова начала работать, необходимо было добавить имя ссылки пакета в поле «Связывание сборок», расположенное в проекте -> «Свойства» -> «Настройки Android» -> «Линкер», как показано на рисунке ниже:
После этого библиотека начала работать без каких-либо проблем.
Пример для 3. Использование атрибута Preserve:
Xamarin.Linker воспринимает как неиспользуемый код, в основном, код классов моделей в ядре вашего проекта.
Чтобы класс сохранялся в процессе связывания, вы можете использовать атрибут Preserve.
Во-первых, создайте в своем ядре проекта класс PreserveAttribute.cs , вставьте следующий код и замените пространство имен пространством имен вашего проекта:
В каждом модельном классе ядра вашего проекта вставьте атрибут Preserve, как в приведенном ниже примере:
После этого процесс связывания больше не удалит сохраненный код.
Понимание ProGuard
ProGuard - это инструмент в процессе построения, который удаляет неиспользуемый код и классы из вашего Java-кода . Он также запутывает и оптимизирует код.
Однако ProGuard иногда может удалить код, который он воспринимает как неиспользуемый, когда это не так. Чтобы этого избежать, разработчик должен отладить приложение (в Android Device Monitor и Visual Studio Debug) и определить, какой класс был удален, а затем настроить конфигурационный файл ProGuard для сохранения класса.
пример
В приведенном ниже примере ProGuard удалил два класса (Android.Support.V7.Widget.FitWindowsLinearLayout и Android.Support.Design.Widget.AppBarLayout), используемые в файлах макетов AXML, но которые были восприняты как неиспользуемые в коде. При удалении вызвало ClassNotFoundException в коде Java при отображении макета активности:
LogCat показывает ошибку при создании макета в SetContentView:
После этого при создании макета больше не было ошибок.
Предупреждения ProGuard
ProGuard иногда показывает предупреждения в списке ошибок после создания вашего проекта. Хотя они поднимают вопрос о том, хорошо ли ваше приложение или нет, не все их предупреждения указывают на проблемы, особенно если ваше приложение успешно создает.
Читайте также: