Android studio import error

Fix “Module not specified” Error in Android Studio

Whenever we try to debug the application on Android Studio we may encounter the error “Module not specified” in the Android Studio. So, In this article, we will discuss 4 different methods for fixing the “Module not specified” error in Android Studio.

Method 1

All you need to do is Resync your project Gradle files to add the app module through Gradle. Following are the steps:

  • In the root folder of your project, open the settings.gradle file for editing.
  • Delete the line include ‘:app’ from your file.
  • On Android Studio, click on the File Menu, and select Sync Project with Gradle files.
  • After step 3, Add again, include ‘:app’ to the settings.gradle file.
  • Re-run Sync Project with Gradle files again.

After this, your error “Module not specified” will be resolved.

Method 2

Another best method to resolve this error is to try to delete the app.iml in your project directory and restart android studio. This will definitely work out and your error of “Module not specified” will be resolved.

Method 3

If the above two methods did not work for you, you can follow the below steps to resolve your issue.

  • Firstly, close all the android studio projects.
  • then, remove the project from the recent projects in android studio wizard.
  • Restart Android Studio.
  • Instead of open an existing project Android Studio project, use the import option (Import project- Gradle, Eclipse ADT, etc).
  • File ->Sync project with gradle files.

Method 4

And at last, if all of the above methods did not work for you, you can also clean your project and do invalidate caches/restart from the menu bar. After that, your project might be fixed and the error will be resolved.

Источник

Методы лечения различных ошибок в Android Studio при разработке проекта

Сегодня хотел бы поделиться своим анализом и способами лечением разных ошибок при разработке своего продукта в Android Studio. Лично я, не раз сталкивался с различными проблемами и ошибками при компиляции и/или тестировании мобильного приложения. Данный процесс, всегда однообразный и в 99% случаев и всегда нужно тратить n-колличество времени на его устранение. Даже, когда ты уже сталкивался с данной проблемой, ты все равно идешь в поисковик и вспоминаешь, как же решить ту или иную ситуацию.

Я для себя завел файлик, в котором отметил самые частые ошибки — потратив на это несколько часов и перечислил самые популярные ошибки (в дальнейшем планирую просто их запомнить), чтоб сократить свое время в дальнейшем.

Итак, начну по порядку с самой распространенной проблемы и дальше буду перечислять их по мере появления:

1) Если подчеркивает красным код, где используются ресурсы: R. — попробовать (но вероятно не поможет): Build -> Clean Project.

В принципе на Build -> Clean Project можно не терять времени, а лучше всего — слева переключиться на Project, открыть каталог .idea, затем каталог libraries и из него удалить все содержимое. Затем нажать кнопку Sync Project. А затем (если все еще красное, но скорее всего уже будет все ок ) Build -> Clean Project.

2) После внезапного выключения компьютера, после перезапуска может быть во всех проектах весь код красным. Перед этим может быть ошибка: Unable to create Debug Bridge: Unable to start adb server: Unable to obtain result of ‘adb version’. Есть три решения — первое помогло, второе нет (но может быть для другого случая), а третье — не пробовал:

а) File — Invalidate Caches/Restart — Invalidate and Restart

б) Закрыть студию. В корне папки проекта удалить файл(ы) .iml и папку .idea. Вновь запустить студию и импортировать проект.

в) Нажать Ctrl-Alt-O и запустить оптимизацию импорта.

Кстати, adb сервер можно проверить на версию (и работоспособность) и затем перезапустить:

3) Если Android Studio выдает приблизительно такую ошибку: Error:Execution failed for task ‘:app:dexDebug’.

Надо слева переключиться на опцию Project, найти и удалить папку build которая лежит в папке app, т.е. по пути app/build. Затем перестроить весь проект заново: Build -> Rebuild Project.

Такое же решение если ошибка типа: «не могу удалить (создать) папку или файл» и указан путь, который в ведет в app/build. Тоже удаляем папку build и ребилдим проект.

4) В сообщении об ошибке упоминается heap — виртуальная память. А ошибка обычно вызвана ее нехваткой, т.е. невозможностью получить запрашиваемый объем. Поэтому этот запрашиваемый объем надо уменьшить, т.е. переписать дефолтное значение (обычно 2048 MB которое можно изменить в настройках), на меньшее 1024 MB.

В файле проекта gradle.properties пишем:

5) Android Studio пришет примерно такую ошибку: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to «83648b99316049d63656d7276cb19cc7e95d70a5»

Возможные причины (кроме необходимости регулярного обновления SDK):

а) Загруженный проект был скомпилирован с помощью уже несовместимого старого gradle плагина. В этом случае надо найти и подключить в своем build.gradle проекта этот более старый плагин. т.е. попробовать более старые версии, например: 1.1.3 (часто именно 1.1.x и подходит).

Найти все версии можно здесь.

б) Если в build.gradle проекта используется beta-версия плагина — это означает, что срок ее истек. Посмотреть последние релизы (продакшн и бета) можно также здесь:

6) Иногда при подключении сторонних библиотек могут дублироваться некоторые файлы (обычно связанные с лицензированием). В сообщении будет что-то содержащее слова: duplicate files. Решение — надо посмотреть в сообщении об ошибке или в документации подключенной сторонней библиотеки — какие именно файлы стали избыточными, и перечислить их в build.gradle модуля для исключения (exclude) из билда.

Это делается в директиве packagingOptions (которая, в свою очередь, находится в директиве android).

Источник

«Пакет android.support.v7.app не существует» ошибка в androidStudio

Я только начинаю разработку под Android с использованием androidStudio. Я следую учебному пособию по udacity, где они попросили нас скопировать, вставить некоторый код и запустить его. Я не могу запустить код после вставки. Я думаю, что основная проблема заключается в импорте

Я проверил интернет для решения этой проблемы, включая stackoverflow но кажется, что это отличается для каждого случая я пытался импортировать import androidx.appcompat.app.AppcompatActivity; вместо import android.support.v7.app.AppCompatActivity; но это не помогло я использую androidStudio версии 3.4

Module.App (сборка gradle):

3 ответа

Вы используете androidx библиотеки.

Тогда вы не сможете использовать импорт классов библиотек поддержки .

С тех пор, как в июне 2019 года появилась библиотека androidx, все изменилось . Чтобы решить эту простую проблему, сделайте следующее:

перейдите к файлу gradle.properties и включите androidx, как вы можете видеть на моем примере изображения ниже step1

Теперь перейдите в верхнее меню вашей студии android, нажмите Refactor и нажмите «Перейдите на androidx» .

Android студия автоматически выполнит все исправления синтаксиса импорта androidx в вашем Gradle

Обратите внимание на отсутствие заглавных букв в импорте C вашего приложения:

Вместо приложения C ompatActivity

Источник

Android studio import error

Здесь собраны решения проблем, которые возникают с IDE Eclipse, Android Studio, и другие вопросы программирования под Android. Все непонятные термины и сокращения ищите в статье «Словарик Android» [7].

[131228]

Специальный плагин для Android Studio, позволяющий автоматизировать сборку приложений на Java. Именно с ним больше всего головной боли у разработчиков при переходе на разные версии Android Studio и JDK, особенно при импорте Android-приложений, созданных в среде разработки Eclipse.

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

Читайте также:  Нав бар андроид что это

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

1. Перед запуском отладки нужно дождаться полной загрузки AVD в эмуляторе, и только потом запускать отладку. Наберитесь терпения, первая загрузка новой машины может занимать до 10 минут и более, в зависимости от её свойств и мощности Вашего компьютера. Чтобы ускорить загрузку эмулятора, используйте снапшоты для AVD (при создании AVD поставьте галочку Snapshot).
2. Создать другую AVD, требующую меньше ресурсов (выбрать модель смартфона с меньшим разрешением экрана и с меньшим API level).
3. Запустить отладку на виртуальной машине, см. [4].
4. Установить Google USB Driver и отлаживаться на реальном устройстве с операционной системой Android.

Почти никакие телефоны и смартфоны общего производства не позволят HierarchyViewer получать доступ к ним. Обычно специальные телефоны разработчика и эмуляторы оснащены функциями, работающими с HierarchyViewer. Есть обходной способ решения проблемы, если использовать класс ViewServer в разрабатываемом приложении (см. ViewServer Local server for Android’s HierarchyViewer site:github.com).

На Андроид файл /proc/kmsg является аналогом dmesg в Linux, однако для просмотра файла /proc/kmsg (например, командой cat /proc/kmsg) нужны права root. Есть также файл /proc/last_kmesg, для его просмотра права root не нужны.

[140126]

Удалите точку из имени, и переменная создастся нормально.

Проблему можно решить так: C/C++ Build -> Settings -> Linker (link) -> Libraries -> Additional Libpath (/libpath) -> нажать на кнопочку с зеленым плюсиком -> указать папку c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib.

Или так: C/C++ General -> Paths and Symbols -> Libraries -> Add. -> File system. -> c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\kernel32.lib.

Ошибка скорее всего в том, что в конфигурации проекта добавлен путь до библиотеки, содержащий двойные кавычки, например «c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\kernel32.lib». Пути до линкуемых библиотек настраиваются в свойствах проекта C/C++ Build -> Settings -> Linker (link) -> Libraries -> Additional Libpath (/libpath), C/C++ Build -> Settings -> Linker (link) -> Libraries -> Libraries, C/C++ General -> Paths and Symbols -> Libraries -> Add. -> File system.

Уберите кавычки из пути, и ошибка LNK1104 исчезнет (поменяйте «c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\kernel32.lib» на c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\kernel32.lib).

Решение проблемы: закройте Eclipse. Зайдите в каталог Android SDK (c:\Program Files\Android\android-studio\sdk\tools\), выполните команду android sdk. Запустится SDK Manager. Удалите Android SDK Build-tools 19, и установите Android SDK Build-tools 18.1.1. Снова запустите Eclipse, и выполните отладку в эмуляторе, проблема исчезнет.

• Из Eclipse (с установленным плагином ADT) выполните команду меню Window -> Android SDK Manager.
• Перейдите в папку tools пакета Android SDK (полный путь может быть наподобие c:\Program Files\Android\android-studio\sdk\tools\) и выполните команду android.bat sdk.

[140204]

Проверьте, на какой уровень API скомпилировано приложение. Уровень API Android (API Level [1]) на сегодняшний день может меняться от 1 до 19, что соответствует версии Android от Android 1.0 до Android 4.4. Если приложение рассчитано на более современную версию (более высокий уровень API), чем установленная система на Вашем устройстве Android, то программа не установится и не запустится. Версию системы устройства можно узнать через Настройки -> Об устройстве -> Версия Android (версия обычно состоит из нескольких цифр и точек, наподобие 4.1.2). Уровень API, соответствующий версии, можно узнать из таблицы [1].

[140221]

1. Откройте визуальный редактор формы Вашего приложения, для чего сделайте двойной щелчок на XML-файле описания внешнего вида интерфейса Вашей программы (этот файл находится в Project Explorer -> Имя проекта -> res -> layout -> activity_blabla.xml). Переключитесь на графический вид просмотра формы (закладка Graphical Layout).

2. В визуальном редакторе бросьте на форму кнопку. Выберите её, и в редакторе свойств Properties дайте более подходящее Id и введите нужный текст, отображаемый на кнопке. К примеру, Id по умолчанию будет @+id/button1, Вы можете задать что-то типа @+id/MyButtonId.

3. Разрешите Вашему классу Activity прослушивать события кликов на визуальных компонентах реализацией OnClickListener. Для этого откройте файл ИмяПроектаActivity.java (Project Explorer -> Имяпроекта -> src -> имяпакета), и расширьте определение класса Activity:

4. В классе Activity задайте глобальную переменную, которая будет олицетворять Вашу кнопку.

Примечание: если система будет ругаться на то, что не может найти определение Button, то перед объявлением класса добавьте строчку:

5. В коде onCreate класса Activity добавьте инициализацию переменной myButton.

Понятно, что в параметре должно быть передано значение, которое Вы назначили в качестве Id кнопки.

6. Сразу после инициализации переменной добавьте создание прослушивателя события клика с помощью вызова setOnClickListener:

По аналогии можно добавить прослушивание и для других кнопок (конечно же, для них должны быть созданы экземпляры переменных, и сделана инициализация):

7. Теперь нужно создать обработчик события клика onClick на внешнем виде формы (View). Для этого добавьте в класс Activity определение нового метода onClick:

Вот полный пример листинга кода Activity:

Когда запускается конфигурация компиляции или внешний инструментарий, то значение переменных вычисляется по выбранному месту в окне Project Explorer. Обычно достаточно выбрать имя проекта (корневую папку), к которому относится запуск, и тогда ошибка исчезнет.

Нераспознанные символы в редакторе кода появляются потому, что плагин CDT не может найти подходящие заголовочные файлы. Чтобы редактор кода нормально видел подключенные символы, необходимо настроить (добавить) пути поиска файлов include в плагине CDT. Откройте свойства проекта, перейдите в раздел C/C++ General -> Path and Symbols -> на закладке Includes добавьте директории, где нужно искать заголовочные файлы. Вот пример добавленных путей поиска:

При добавлении путей учитывайте API Level целевой системы, для которой будет компилироваться приложение. В этом примере учтен API Level 16 (в составе пути имеется папка android-16).

Если после добавления путей все равно появляются «нераспознанные» символы, щелкните правой кнопкой мыши на имени проекта и выберите в контекстном меню Index -> Reresolve Unresolved Includes. Пункт меню Index -> Search for Unresolved Includes поможет Вам найти заголовочные файлы, которые не может подключить редактор.

Достаточно вызвать метод requestFocus. Пример куска кода из обработчика создания Activity onCreate:

[140221]

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

1. Попробуйте принудительно разрешить отладку добавлением атрибута android:debuggable=»true» в тег файла AndroidManifest.xml. Вообще-то с этой задачей должен автоматически справляться плагин ADT, однако это почему-то не всегда происходит.

2. Проверьте состояние кнопки «Skip all breakpoints» (пропустить все точки останова), которая находится на панели инструментов перспективы Debug (кнопка должна быть отжата). На всякий случай понажимайте на эту кнопку, и убедитесь, что все Ваши точки останова разрешены. Если перспектива Debug не открывается или не работает, то это означает, что Ваше отлаживаемое устройство некорректно подключено. Откройте перспективу DDMS и убедитесь, что Ваше устройство и работающее приложение перечислено в окне Devices, и доступно для отладки.

3. Если Вы пользуетесь для отладки эмулятором (виртуальным устройством, не реальным Android), то проблему старта отладки может вызывать долгий запуск эмулятора (эмулятор для запуска может требовать слишком много ресурсов, что конечно зависит от настроек виртуального устройства). Можно попробовать увеличить таймаут сессии ожидания adb от 3000 до 60000 мс и более.

Имя пакета для приложения указывается в полном соответствии стилю языка Java, имя должно быть уникальным. Имя может содержать буквы верхнего и нижнего регистра (от ‘A’ до ‘Z’), цифры и подчеркивания (‘_’). Однако индивидуальные части имени пакета должны начинаться с буквы.

Во избежание конфликтов с другими разработчиками Вы должны использовать принцип организации имен наподобие доменного, но с указанием частей имени в обратном порядке. Например, приложения, опубликованные Google, будут иметь имя пакета, начинающееся на com.google. Также не нужно использовать для публикации пространство имен com.example.

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

Читайте также:  Медиаплеер для андроида рейтинг

[Способ 1]

Чтобы сделать копию проекта, сделайте копию его корневой папки (той папки, где находятся файлы AndroidManifest.xml и project.properties), и затем переименуйте её. Копия проекта готова, теперь необходимо импортировать её в дерево проектов Eclipse.

Чтобы открыть копию проекта или любого готового проекта (который скачали из Интернета, к примеру), используйте меню File -> Import, далее выберите General -> Existing Projects into Workspace. Затем кликните Next и выберите корневую папку (root directory) проекта. Нажмите Finish, и через несколько секунд импорт завершится. Все, проект открыт.

[Способ 2]

• В дереве Package Explorer выделите мышью проект, который хотите скопировать (щелчком левой кнопки мыши на корневой папке проекта), нажмите Ctrl+C и Ctrl+V. Появится окно, в котором нужно задать новое имя проекта.

После подтверждения нового имени через несколько секунд в дереве проектов появится новый проект — копия имеющегося проекта под новым именем.

• Щелкните правой кнопкой на новой корневой папке проекта, и выберите в контекстном меню Android Tools -> Rename Application Package. Откроется окно, где нужно указать новое имя пакета, укажите имя и нажмите OK. Затем запустится мастер переименования имени пакета в различных исходных файлах проекта, в этом окне просто нажмите Finish.

• В дереве Package Explorer раскройте папку src проекта, щелкните правой кнопкой на имени пакета и выберите в контекстном меню Refactor -> Rename. укажите новое имя пакета, щелкните OK.

• Выполните очистку проекта, для этого выберите в меню Project -> Clean.

• Если необходимо, то в атрибуте package поменяйте имя пакета приложения (файл AndroidManifest.xml ):

• Если необходимо, то поменяйте имя приложения в файле values/strings.xml , имя приложения задается строкой app_name :

[140223]

Причина в том, что среда Eclipse не синхронизировалась с файловой системой, поэтому файл guava-16.0.1.jar не виден. Чтобы исправить это, после копирования файла guava-16.0.1.jar в папку libs поставьте курсор на имя проекта и нажмите F5 (обновить), и только потом заходите в свойства проекта, чтобы добавить guava-16.0.1.jar в Java Build Path.

Если Вы иногда редактируете файлы вне среды Eclipse, то можете установить автообновление (auto-refresh) через меню Window -> Preferences, перейдите в раздел General -> Workspace, и поставьте 2 галочки «Refresh using native hooks or polling» и «Refresh on access».

[140301]

Общее правило для поиска заголовочного файла, который нужно подключить: среди заголовочных файлов NDK выбранной платформы (к примеру для платформы API Level 16 это будет папка c:\android-ndk-r9c\platforms\android-16\arch-arm\usr) найдите файл с расширением *.h, где определен нужный тип.

[140302]

Ошибка исчезла, когда переопределил тип возврата метода без &:

Предупреждение генерирует система Android Lint. Она сообщает о том, что режим совместимости будет применен к тем функциям, которые возможно стали недоступны в более свежих версиях, чем указано в targetSdkVersion.

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

Чтобы исправить эту проблему, установите значение targetSdkVersion в самое высокое доступное значение. Затем протестируйте приложение, чтобы убедиться, что все возможности работают корректно. Можно проконсультироваться по теме проблем совместимости и узнать, какие произошли изменения при переходе по версиям по ссылке http://developer.android.com/reference/android/os/Build.VERSION_CODES.html. При исправлении этого предупреждения путем увеличения версии android:maxSdkVersion нужно помнить о том, что если к примеру установлено android:maxSdkVersion=»17″, и пользователь обновил свою систему Android на версию больше, чем 17, то Ваше приложение будет автоматически удалено, потому что оно будет относиться к неподдерживаемой версии.

Чтобы исправить ошибку, зайдите в свойства проекта, перейдите в раздел C/C++ General -> Paths and Symbols, и на закладке Symbols кликните на GNU C, затем на кнопке «Add», и введите __ANDROID__ в поле имени «Name». Поставьте галочки «Add to all configurations» и «Add to all languages», и нажмите OK.

Можно также узнать установленные версии SDK, запустив SDK Manager (см. вопрос Q016). Когда SDK Manager запустится, в разделе Installed packages Вы можете найти информацию об SDK. Кроме того, в среде Eclipse можно открыть окно Help -> Install New Software. и открыть ссылку What is already installed? в правой нижней части окна. То же самое окно можно открыть через Help -> About Eclipse -> Installation Details.

В проекте Eclipse строка Build.VERSION.RELEASE даст Вам строку, удобочитаемую для пользователя, которая предоставит информацию о версии (например 1.5, 1.6, 2.0), в то время как Build.VERSION.SDK_INT даст числовое значение из Build.VERSION_CODES, которое удобнее использовать программно — например для сравнения версий.

В общем случае все проблемы, связанные с проверкой в условных операторах переменной SDK_INT (или android.os.Build.VERSION.SDK_INT) решаются увеличением версии API Level в свойствах проекта. Причем вовсе необязательно, что программа, скомпилированная на высоком уровне API Level, не будет работать на младших устройствах Android — все зависит от вызовов API, которая делает программа. Для этого программа должна во время выполнения проверять значение текущего API Level, и в соответствии с уровнем API предпринимать нужные действия.

[140309]

Подробнее хорошо написано в книге «Android NDK. Разработка приложений под Android на C/C++», автор Сильвен Ретабоуил.

1. Корректно указывайте имя для Activity в командной строке. Имя должно составляться таким образом:
com.имя_проекта_в_нижнем_регистре.имя_Activity, например:

«%JAVA_HOME%\bin\javah.exe» -classpath bin\classes;»%ANDROID_SDK%\platforms\android-16\android.jar» -d jni com.myproject.MainActivity

В этом примере MainActivity можно узнать из файла MainActivity.java, который находится в корне проекта. См. в этом файле строку объявления класса Activity наподобие:

public class MainActivity extends Activity

2. В опциях javah.exe все пути с пробелами должны быть указаны в кавычках, например:

«%JAVA_HOME%\bin\javah.exe» -classpath bin\classes;»%ANDROID_SDK%\platforms\android-16\android.jar» -d jni com.myproject.MainActivity

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

3. Ошибка «Error: no classes specified» или «Could not find class file for ‘com.myproject.MainActivity'». Вы не указали в опции -classpath, где находятся классы Вашего приложения. Обычно это папка имя_проекта\bin\classes. Вот пример содержимого опции:

«%JAVA_HOME%\bin\javah.exe» -classpath bin\classes -d jni com.myproject.MainActivity

4. Ошибка «Error: cannot access android.app.Activity», «class file for android.app.Activity not found». В пути опции -classpath через точку с запятой нужно добавить путь до файла android.jar, относящегося к целевой платформе, для которой Вы компилируете приложение. Например, если Вы делаете приложение для Android 4.1.2 (API Level 16), то это будет файл %ANDROID_SDK%\platforms\android-16\android.jar. Переменная окружения %ANDROID_SDK% указывает на каталог, где находится SDK (к примеру, это может быть папка c:\Program Files\Android\android-studio\sdk). Вот пример командной строки строки javah.exe с указанием целевого android.jar:

C:\Program Files\Android\workspace\MyProject>»%JAVA_HOME%\bin\javah.exe» -verbose -classpath bin\classes;»%ANDROID_SDK%\platforms\android-16\android.jar» -d jni com.myproject.MainActivity

a) Run -> External Tools -> External Tools Configurations. откроется окно для настройки конфигураций запуска внешнего инструментария компиляции.

b) Слева щелкните на раздел Program, добавьте новую конфигурацию кнопкой New launch configuration. В поле Name укажите любое произвольное имя, например MyProject javah.

c) В поле Location: укажите полный путь для запуска утилиты javah.exe. Не стесняйтесь пользоваться кнопкой Variables. которая позволяет использовать изначально настроенные переменные. В этом примере используется env_var для распаковки пути до места расположения каталога JDK через переменную окружения JAVA_HOME. Пример пути до javah.exe:
$\bin\javah.exe

d) В поле Working Directory: укажите путь до рабочей директории. Обычно это папка bin, расположенная в корневом каталоге проекта. Пример указания рабочего каталога:
$

e) В поле Arguments: укажите аргументы для запуска утилиты javah.exe. Здесь должны быть указаны опция -classes (пути, где расположены классы проекта), опция -d (задает рабочий каталог), и имя для Activity приложения. Пример указания аргументов javah.exe:
-classpath «$«/MyProject/bin/classes;»$«\platforms\android-16\android.jar -d «$» com.myproject.MainActivity

f) Перейдите на закладку Refresh, поставьте галочку Refresh resources upon completion, выберите радиокнопку Specific resources и через кнопку Specify Resources. укажите на каталог jni, где будет размещаться модуль C/C++, для которого javah.exe должна генерировать заголовок.

1. Имя проекта -> Properties -> Android -> поставьте галочку на выбранную версию Android (например Android 4.1.2, API Level 16).
2. Имя проекта -> Properties -> C/C++ General -> Paths and Symbols -> Includes -> настройте пути поиска заголовочных файлов Android NDK. Пример настроенных путей для Assembly, GNU C, GNU C++:
$/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.8/include
$/sources/android/native_app_glue
$/platforms/android-16/arch-arm/usr/include
3. AndroidManifest.xml -> android:minSdkVersion=»16″, android:targetSdkVersion=»16″. В этом примере настроено использование SDK для API Level 16.

Читайте также:  Девайс полис андроид что это

[140315]

Direct Subclass — класс, который является прямым, непосредственным производным от какого-то класса.
Indirect Subclass — класс, который является наследником какого-то класса через цепочку промежуточных наследников.

Например, есть следующая иерархия наследования классов (для Java-класса TextView):

java.lang.Object -> android.view.View -> android.widget.TextView

Здесь класс TextView является прямым наследником (Direct Subclass) от класса View, и непрямым наследником (Indirect Subclass) класса Object.

Файл XML, сохраненный в res/values/strings.xml:

Этот XML файл применяется в строке TextView (здесь приведен фрагмент файла activity_main.xml):

Вот так приложение может получить строку:

Для получения строки можно использовать либо getString(int), либо getText(int). Функция getText(int) возвратит вместе с текстом стили и форматирование, которые применены к строке.

Для этой цели можно использовать класс StringBuilder. Пример:

Кроме StringBuilder можно также использовать StringBuffer. Оба этих класса используют для динамической манипуляции строками. Однако нужно помнить, что StringBuffer является thread-safe (можно безопасно использовать в многопоточной среде), а StringBuilder не thread-safe (можно безопасно использовать только в одном потоке). Поэтому в одном потоке используйте StringBuilder, поскольку он работает быстрее, чем StringBuffer.

Все ресурсы приложения Android (к ресурсам относятся все визуальные компоненты приложения, кнопки, галочки, слайдеры, метки, строки и т. п.) конфигурируются с помощью файлов XML, которые размещены в папке res (и распределены по подпапкам layout, menu). Из всех файлов XML, где описаны ресурсы, система Eclipse автоматически генерирует файл R, это файл класса ресурсов приложения, при этом каждый ресурс получает уникальный числовой идентификатор id. Получить доступ к ресурсу (запросить значение строки, создать объект класса, который соответствует контролу ресурса) можно с помощью этого id и соответствующих функций, которые принимают id в качестве параметра. Пример получения строки из ресурса уже был рассмотрен в вопросе Q042.

По такому же принципу, как было показано в вопросе Q042, работают со всеми ресурсами: создается объект, который соответствует ресурсу, и уже работают с методами этого объекта.

Теперь по поводу того, что же такое «@+id». С цифровыми идентификаторами, которые присвоены каждому ресурсу в файле R, конечно же работать неудобно. Поэтому каждому цифровому id поставлено в соответствие символическое имя, которое редактируется в свойстве Id, и задается в виде текста «@+id/текстовое_имя_ресурса». Плюсик означает, что должен быть создан новый ID, которому система сама назначит цифровое значение, поставленное в соответствие символическому имени ресурса «текстовое_имя_ресурса» (это соответствие автоматически генерируется и хранится в файле R).

Когда в визуальном редакторе Eclipse редактируют будущий вид приложения, то добавляют туда разные контролы (контролы это кнопки, текстовые метки, галочки и т. п.). После добавления каждого контрола в свойстве Id для удобства задают текстовый идентификатор @+id. Рассмотрим пример программной работы с интерфейсом приложения на метке TextView. Ресурсом TextView (текстовая метка) размещен визуальным редактором на экране разрабатываемого приложения, и в свойстве Id задано имя mylabel, что показано на скриншоте:

Имя идентификатора, которое через слеш добавляется к @+d, потом попадает в файл activity_main.xml. Для нашего примера с меткой TextView (показан фрагмент файла activity_main.xml):

Далее по имени mylabel можно программно работать с контролом TextView:

[140323]

LogCat поддерживает разные уровни вывода сообщений:

Благодаря наличию уровней сообщений их можно грубо отфильтровать по уровню. Например, вот так это делается в консоли LogCat в среде Eclipse:

Когда Вы запускаете свое приложение в режиме отладки из Eclipse, то Вы можете увидеть множество сообщений, которые появляются в окне консоли LogCat: как сообщения, отправленные Вашим приложением, так и сообщения системы и других приложений, которые работают в этот момент на Вашем устройстве.

Чтобы вывести что-то в лог, сначала определитесь, насколько критичным должно быть выводимое сообщение (должно ли оно быть в категории отладочной информации (d, Debug), или это должно быть просто информационное сообщение (i, Info), или это должно быть предупреждение (w, Warning) или это должно быть сообщение об ошибке (e, Error)? После этого используйте для вывода подходящий метод:

Первый параметр myApp предоставляет текстовую метку, которая позволяет дополнительно отфильтровать сообщения в логе. Это может оказаться полезным, когда сообщений слишком много, и найти нужное сообщение будет проще, если заранее знать её метку. В консоли LogCat Eclipse такой фильтр можно создать кнопкой с зеленым плюсиком «Add new logcat filter».

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

и в файл Android.mk добавьте строку

После этого для вывода в LogCat можете использовать функции __android_log_vprintf и __android_log_printf. Однако эти функции напрямую вызывать достаточно неудобно, поэтому есть смысл создать для них специальный класс Log:

[140324]

[Программное отображение в полный экран]

Вот код, который позволяет загружать Activity в полный экран.

[Отображение в полный экран, заданное в AndroidManifest.xml]

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

Отслеживание готовности можно в обработчике события setOnPreparedListener класса MediaPlayer:

Подробнее про воспроизведение звука с помощью MediaPlayer см. статью «MediaPlayer: проигрывание звука».

[140415]

Пример рисования линий:

[140418]

[Использование TextView]

1. Добавьте на форму программы виджет TextView. Это можно сделать в графическом редакторе формы, выбрав виджет в разделе Form widgets. После добавления виджета в файле activity_main.xml добавятся строки:

Здесь важно запомнить значение идентификатора виджета android:id (в нашем примере идентификатор textView1), он нам понадобится в дальнейшем для подключения к виджету в программе. Атрибут android:text можно убрать, так как начальный текст нам не нужен.

Чтобы окно с текстом занимало всю доступную область, добавьте также атрибуты:

2. Добавьте в класс Activity приложения глобальную переменную с типом TextView:

В обработчике onCreate Activity добавьте инициализацию переменной:

3. Чтобы добавить текст в поле редактирования, вызовите метод append:

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

4. Чтобы добавить справа вертикальную полосу прокрутки, в секцию TextView файла activity_main.xml добавьте атрибут android:scrollbars=»vertical»:

Также добавьте в обработчике onCreate создание пустого метода для прокрутки (без этого полоса прокрутки не появится).

5. Чтобы было проще добавлять текст в TextView, и сразу его прокручивать в конец при добавлении нового текста, целесообразно написать для этого отдельную процедуру:

Теперь добавлять текст нужно так:

[Использование EditText]

1. Добавьте на форму программы виджет Plain Text. Это можно сделать в графическом редакторе формы, выбрав виджет в разделе Text Fields (он помечен меткой abc). После добавления виджета в файле activity_main.xml добавятся строки:

Здесь важно запомнить значение идентификатора виджета android:id (в нашем примере идентификатор editText1), он нам понадобится в дальнейшем для подключения к виджету в программе.

2. Добавьте в класс Activity приложения глобальную переменную с типом EditText:

В обработчике onCreate Activity добавьте инициализацию переменной:

3. Чтобы добавить текст в поле редактирования, вызовите метод append:

В этом примере в конец текста добавлены символы CR и LF, чтобы следующий текст отображался с новой строки.

4. Чтобы добавить справа вертикальную полосу прокрутки, в секцию EditText файла activity_main.xml добавьте атрибут android:scrollbars=»vertical»:

5. Чтобы запретить редактирование текста, добавьте также атрибут android:editable=»false»:

Чтобы окно с текстом занимало всю доступную область, добавьте также атрибуты:

[140421]

[Преобразование числа в строку]

Используйте String.valueOf или Integer.toString , Float.toString и т. п. Примеры:

[Преобразование числа в HEX строку]

[Преобразование строки в число]

Используйте метод parseInt , входящий в состав классов Integer, Float и т. п. Пример:

Источник

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