Android development at home

Android Development Tutorial. Часть 1/?

Ларс Вогель — евангелист Eclipse.
Под катом Вы обнаружите перевод его статьи, которая описывает процесс создания Android-приложений с помощью Eclipse. Используется Eclipse 3.6, Java 1.6 и Android 2.3 (Gingerbread).
Часть 2

1. Разработка под Android

1.1. Операционная система Android

Android — операционная система, основанная на Linux с интерфейсом программирования Java. Это предоставляет нам такие инструменты, как компилятор, дебаггер и эмулятор устройства, а также его (Андроида) собственную виртуальную машину Java (Dalvik Virtual Machine — DVM). Android создан альянсом Open Handset Alliance, возглавляемым компанией Google.

Android использует специальную виртуальную машину, так званую Dalvik Virtual Machine. Dalvik использует свой, особенный байткод. Следовательно, Вы не можете запускать стандартный байткод Java на Android. Android предоставляет инструмент «dx», который позволяет конвертировать файлы Java Class в файлы «dex» (Dalvik Executable). Android-приложения пакуются в файлы .apk (Android Package) программой «aapt» (Android Asset Packaging Tool) Для упрощения разработки Google предоставляет Android Development Tools (ADT) для Eclipse. ADT выполняет автоматическое преобразование из файлов Java Class в файлы dex, и создает apk во время развертывания.

Android поддерживает 2D и 3D графику, используя библиотеки OpenGL, а также хранение данных в базе данных SQLite.

Каждое Android-приложение запускается в своем собственном процессе и под своим собственным userid, который автоматически генерируется Android-ом во время развертывания. Поэтому приложение изолировано от других запущенных приложений, и неправильно работающее приложение не может беспрепятственно навредить другим Android-приложениям.

1.2. Основные компоненты Android

Android-приложения состоят из следующих частей:

  • Activity/Деятельность (далее Активити) — представляет собой схему представления Android-приложений. Например, экран, который видит пользователь. Android-приложение может иметь несколько активити и может переключаться между ними во время выполнения приложения.
  • Views/Виды — Пользовательский интерфейс активити, создаваемый виджетами классов, наследуемых от «android.view.View». Схема views управляется через «android.view.ViewGroups».
  • Services/Службы — выполняет фоновые задачи без предоставления пользовательского интерфейса. Они могут уведомлять пользователя через систему уведомлений Android.
  • Content Provider/Контент-провайдеры — предоставляет данные приложениям, с помощью контент-провайдера Ваше приложение может обмениваться данными с другими приложениями. Android содержит базу данных SQLite, которая может быть контент-провайдером
  • Intents/Намерения (далее Интенты) — асинхронные сообщения, которые позволяют приложению запросить функции из других служб или активити. Приложение может делать прямые интенты службе или активити (явное намерение) или запросить у Android зарегистрированные службы и приложения для интента (неявное намерение). Для примера, приложение может запросить через интент контакт из приложения контактов (телефонной/записной книги) аппарата. Приложение регистрирует само себя в интентах через IntentFilter. Интенты — мощный концепт, позволяющий создавать слабосвязанные приложения.
  • Broadcast Receiver/Широковещательный приемник (далее просто Приемник) — принимает системные сообщения и неявные интенты, может использоваться для реагирования на изменение состояния системы. Приложение может регистрироваться как приемник определенных событий и может быть запущено, если такое событие произойдет.

Другими частями Android являются виджеты, или живые папки (Live Folders), или живые обои (Live Wallpapers). Живые папки отображают источник любых данных на «рабочем столе» без запуска соответствующих приложений.

1.3. Безопасность и разрешения

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

1.4. AndroidManifest.xml

Android-приложения описываются файлом «AndroidManifest.xml». В этих файлах должны быть объявлены все активити, службы, приемники и контент-провайдеры приложения. Также он должен содержать требуемые приложением разрешения. Например, если приложению требуется доступ к сети, то это должно быть определено здесь. «AndroidManifest.xml» можно рассматривать, как описание для развертывания Android-приложения.

Атрибут «package» — базовый пакет для следующих элементов Java. Он также обязан быть уникальным, т.к. Android Marketplace только единожды принимает заявку на каждый «package». Следовательно, хорошей привычкой будет использование Вашего обратного доменного имени как «package», для избежания конфликтов с другими разработчиками.

«android:versionName» и «android:versionCode» определяют версию Вашего приложения. «versionName» — то, что видит пользователь и может быть любой строкой. «versionCode» должен быть целым, и Android Market использует это для определения, предоставили ли Вы новую версию, чтобы запустить обновления на устройствах, на которых установлено Ваше приложение. Как правило. начинается с 1 и увеличивается на единицу, если Вы выпускаете новую версию приложения.

Читайте также:  Vlc android codec pack

«activity» определяет активити, в этом примере указывает на класс «de.vogella.android.temperature.Convert». Для этого класса зарегистрирован фильтр интентов, определяющий, что это активити запускается при запуске приложения (действие android:name=«android.intent.action.MAIN»). Определение категории (категория android:name=«android.intent.category.LAUNCHER» ) определяет, что это приложение добавлено в директорию приложений на Android-устройстве. Значения со знаком @ ссылаются на файлы ресурсов, которые содержат актуальные значения. Это упрощает работу с разными ресурсами, такими как строки, цвета, иконки, для разных устройств и упрощает перевод приложений.

Часть «uses-sdk» из «AndroidManifest.xml» определяет минимальную версию SDK, на котором можно запускать Ваше приложение. Это предотвращает установку Вашего приложения на устройства с более старой версией SDK.

1.5. R.java, Resources и Assets

Каталог «gen» в Android-проекте содержит генерированные значения. «R.java» — генерированный класс, который содержит ссылки на ресурсы из папки «res» проекта. Эти ресурсы содержатся в директории «res» и могут быть значениями, меню, схемами, иконками или рисунками, или анимациями. Например, ресурсом могут быть рисунок или XML-файлы, содержащие определенные строки.

Если Вы создаете новые ресурсы, то соответствующие ссылки будут автоматически созданы в «R.java». Ссылки являются статическими значениями типа int (целочисленными константами), система Android предоставляет методы доступа к соответствующим ресурсам. Например, для доступа к строке с идентификатором ссылки «R.string.yourString» используйте метод getString(R.string.yourString)); Пожалуйста, не пробуйте изменять «R.java» в ручную.

Тогда как каталог „res“ хранит структурированные значения, известные платформе Android, каталог „assets“ может быть использован для хранения любых данных. В Java Вы можете получить доступ к этим данным через AssetsManager и метод getAssets().

1.6. Активити и Макеты (layout)

Пользовательский интерфейс для деятельности (Activity) определяется с помощью макетов. Во время исполнения макеты — экземпляры «android.view.ViewGroups». Макет определяет элементы пользовательского интерфейса, их свойства и расположение. Элементы UI основываются на классе «android.view.View». ViewGroup — подкласс View. Макеты может содержать компоненты UI (Views/Виды) или другие макеты (ViewGroups). Вам не следует делать большую вложенность дочерних элементов во ViewGroups, так как это влияет на производительность.

Макет может быть определен с помощью Java-кода или с помощью XML. Как правило, используйте Java-код для генерирования макета, если не знаете про содержимое заранее. Например, если Ваш макет зависит от содержимого, которое Вы читаете из интернета.

Макеты, основанные на XML определяются с помощью файла ресурсов в папке «/res/layout». Этот файл определяет группу видов (см. пункт 1.2), виды, их отношения и атрибуты для отдельных макетов. Если элемент UI требует доступа с помощью Java-кода, дайте элементу UI уникальный идентификатор (id) с помощью атрибута «android:id». Для того, чтобы назначить новый идентификатор элементу UI, используйте конструкцию «@+id/yourvalue». Условно это создаст и назначит новый id «yourvalue» соответствующему элементу UI. Позже, в Java-коде Вы можете получить доступ к этим элементам UI с помощью метода findViewById(R.id.yourvalue).

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

Источник

Top 20 Tools for Android Development

This is a guest story by Sydney Stone, a writer for a software development company iTechArt.

According to Statista, the Google Play store had over 2.8 million Android apps available for download as of March 2017. That’s higher than the Apple App Store’s 2.2 million and Microsoft Windows’ 669,000 available apps.

Given that there are way more Android mobile devices on the market today than any other operating system, the demand for apps and experienced Android application developers is only going to continue to increase in the future. If you’ve already learned the pros and cons of developing for Android from our dedicated article, you will be interested in this topic as well.

Android developers are able to churn out all these apps much faster and more efficiently thanks to a profusion of sophisticated, integrated development environments (IDEs) as well as other time-saving tools and applications. There are a few Android development solutions that tend to show up over and over again on Android developers’ “favorites” lists.

Here are the top 20 favorite tools currently being used for Android application development.

1. Android Studio

As the official integrated development environment for all Android applications, Android Studio always seems to top the list of preferred tools for developers.

Читайте также:  Как перепрошить андроид через рекавери пошаговая инструкция

Google created Android Studio back in 2013. It replaced – or should we say it eclipsed? – Eclipse Android Development Tools (ADT) as the primary IDE for native Android app development.

Android Studio provides code editing, debugging, and testing tools all within an easy-to-use drag-and-drop interface. It is free to download and is supported not only by Google, but also by a large and actively engaged community of Android developers.

2. ADB (Android Debug Bridge)

Android Studio includes the Android Debug Bridge, which is a command-line tool or “bridge” of communication between Android devices and other computers that can be used during development and the overall debugging and QA process.

By connecting an Android device to the development PC and entering a series of terminal commands, a developer is able to make modifications as needed to both devices.

3. AVD Manager

Another useful feature of Android Studio is the AVD Manager, the short form for Android Virtual Device. The AVD Manager is an emulator used to run Android apps on a computer. This allows developers the ability to work with all types of Android devices to test responsiveness and performance on different versions, screen sizes, and resolutions.

4. Eclipse

As we mentioned above, there was Eclipse before there was Android Studio. For a long time, Eclipse was the officially preferred IDE for all Android application development.

Even though Google no longer offers support for Eclipse, many developers still use it to create Android and other cross-platform apps, as it works very well with many different programming languages.

5. Fabric

Crashlytics kit on Fabric platform
Source

Fabric is the development platform behind Twitter’s mobile application. It gives developers the ability to build better mobile apps by providing them with a suite of “kits” that they can pick and choose from. These kits include everything from beta-testing to marketing and advertising tools.

Google purchased Fabric from Twitter in January of 2017. Uber, Spotify, Square, Groupon, Yelp, and more big-name companies have utilized Fabric in developing their mobile applications.

6. FlowUp

FlowUp allows you to monitor the performance of all your production apps. Handy dashboards let you keep track of your stats and metrics, including CPU and disk usage, memory usage, frames per second, bandwidth, and more.

FlowUp is a monthly subscription-based SaaS solution with pricing determined by the total number of users in the company.

7. GameMaker: Studio

For Android game app developers, one of the most popular development tools is GameMaker: Studio. GameMaker provides everything you need to create 2D games using very little code. It is an extremely user-friendly application with a simple drag-and-drop interface.

GameMaker: Studio is targeted to beginner and novice gaming developers.

8. Genymotion

Another Android emulator, Genymotion helps developers test and preview an application on over 3,000 device scenarios. Genymotion is popular among gaming developers because it comes with pre-installed standard Android images and graphics that are quite useful in the testing process. It also provides greater speed than testing an app on an actual Android device.

Genymotion is a cross-platform development tool and supports many different programming languages and environments.

9. Gradle

Back in 2013, Google endorsed Gradle as a build system for Android apps.

Based on Apache Maven and Apache Ant, Gradle is one of the most popular development tools for creating large-scale applications involving Java.

Developers like using Gradle in conjunction with Android Studio because it’s very easy to add external libraries using a single line of code.

10. IntelliJ IDEA

From the developers at JetBrains, IntelliJ IDEA is designed for ultimate programmer productivity. It’s extremely fast and features a full suite of development tools right out of the box.

At $149 per year, IntelliJ IDEA certainly isn’t cheap. However, there is a free, open source community edition available and the full extended version is free to students for one year.

11. Instabug

Instabug is used by some of the most recognizable names in the tech world, including Yahoo, PayPal, Lyft, BuzzFeed, and Mashable for beta testing and bug reporting. Instabug allows beta testers and user groups to share screenshots and detailed error logs with developers during the QA and debugging process.

You can sign up for a free trial of Instabug and then it’s custom-priced based on the number of team members, apps, and overall length of the project engagement.

Читайте также:  Не могу прошить андроид планшет

12. LeakCanary

Developed by the folks behind Square, LeakCanary is an open-source Java library that makes it easier to detect and correct memory leaks in your application. Whenever a leak happens, LeakCanary immediately notifies you. Then you can utilize the built-in stack trace to fix the problem or issues.

LeakCanary is available on GitHub.

13. NimbleDroid

NimbleDroid is a testing platform that allows you to check your finished Android app for memory leaks, bugs, and other issues prior to publishing on Google Play. Using NimbleDroid helps to free up app developers’ time and speed up the overall QA process, helping to get the app to market faster.

Companies such as Mozilla, Yahoo, and Pinterest have all used NimbleDroid to test their applications. Personalized pricing is available based on customers’ specific needs and number of users.

14. RAD Studio

RAD Studio is an integrated development environment that allows you to write, compile, package, and deploy cross-platform applications. It provides support for the full development lifecycle resulting in a single source codebase that can be recompiled and redeployed.

RAD Studio is the most expensive solution on the list, with the professional edition starting at $2,286.00. A free trial is also available.

15. Stetho

Stetho is an Android debugging tool created by Facebook. It is a free open-source platform that allows access to a Chrome Developer Tools feature native to the desktop browser.

Stetho features a network inspection function for image preview, JSON response helpers, and exporting traces to the HAR format.

16. Source Tree

SourceTree is a free, open-source tool that allows you to manage Git repositories through its simple Git GUI. See all of your changes and branches clearly without having to write a single command line. SourceTree also allows you to stage and discard changes by the file, hunk, or line.

SourceTree is compatible with both Windows and Mac.

17. Unity 3D

Unity 3D is a cross-platform game development environment used for creating complicated, graphics-intensive mobile games such as those containing virtual or augmented reality.

You can still use Unity 3D to create simpler 2D-based gaming experiences, but it is more typically used for advanced gaming development.

18. Unreal Engine

Another advanced gaming development platform, Unreal Engine is a free, open-source, cross-platform solution for creating high-level interactive games.

Unreal Engine is popular among game designers because it features the Blueprint system that limits the need for a lot of coding. Designers with minimal development or coding experience can utilize Unreal Engine to create their own advanced gaming experiences.

19. Visual Studio with Xamarin

Visual Studio is Microsoft’s official integrated development environment and is a free tool for developers to use. It supports several different programming languages and when combined with Xamarin, it can be utilized to create native Windows, Android, and iOS applications.

Backed by Microsoft’s legendary support, Visual Studio is the go-to choice for developers looking to create cross-platform applications and games.

20. Vysor

Vysor is an emulator solution that lets you “mirror” an Android device to a computer so that you can control it from your keyboard. It also allows you to screencast from your device during meetings and demos.

Vysor is compatible with all operating systems. It’s not free but it is very affordable at $2.50 per month, $10 per year, or $40 for a lifetime license.

In conclusion

There are literally hundreds of other useful tools such as these available for Android development. Each developer has their own personal preference for what tools and environments they work with based on the particular application they are developing.

As the demand for Android applications continues to grow, the pool of platforms and solutions that help save developers time while helping to produce higher quality apps will continue to increase as well.

Also, consider checking other mobile and web tools comparison articles:

Sydney Stone is a freelance writer and editor. She has written various startup and B2B technology companies, currently writing for iTechArt, a NYC-based company specializing in Android development and other custom software development services for startups.

Want to write an article for our blog? Read our requirements and guidelines to become a contributor.

Источник

Оцените статью