Это происходит, потому что Вы не установили minSdkVersion или targetSdkVersion в you’re компьютере. Я протестировал его прямо сейчас.
, Например, если у Вас есть те строки в Вашем Manifest.xml:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
И Вы установили только API17 в своем компьютере, он сообщит о Вас ошибка. Если Вы хотите протестировать его, попытайтесь установить другую версию API (в этом случае, API 8).
, Несмотря на это, это не важная ошибка. Это не означает, что Ваше приложение является неправильным.
Извините за мое выражение. Английский язык не является моим языком. До свидания!
Я думаю, что это - проблема
Немного фона
, Traceview является графическим средством просмотра для журналов выполнения, которые Вы создаете при помощи класса Отладки для входа информации о трассировке в коде. Traceview может помочь Вам отладить свое приложение и представить его производительность. Включение его создает .trace
файл в sdcard корневой папке, которая может затем быть извлечена ADB и обработана traceview bat-файлом для обработки. Это также может быть добавлено DDMS.
Это - система, используемая внутренне регистратором. В целом, если Вы не используете traceview для извлечения файла трассировки, эта ошибка не должна беспокоить Вас. необходимо посмотреть на ошибку/журналы, непосредственно связанную с приложением
, Как делают я включаю его:
существует два способа генерировать журналы трассировки:
Включают класс Отладки в Ваш код и называют его методы таким как
startMethodTracing()
иstopMethodTracing()
, чтобы запустить и прекратить регистрироваться трассировочной информации к диску. Эта опция очень точна, потому что можно указать точно, где запустить и прекратить регистрировать данные трассировки в коде.Используют метод профильная функция DDMS для генерации журналов трассировки. Эта опция менее точна, потому что Вы не изменяете код, а скорее указываете, когда запустить и прекратить регистрироваться с DDMS. Хотя Вы имеете меньше контроля на точно, где вход запускается и останавливается, эта опция полезна, если у Вас нет доступа к коду приложения, или если Вам не нужна точная синхронизация журнала.
, Но следующие ограничения существуют для вышеупомянутого
, Если Вы используете класс Отладки, Ваше приложение должно иметь разрешение записать во внешнее устройство хранения данных (
WRITE_EXTERNAL_STORAGE
)., Если Вы используете DDMS: Android 2.1 и более ранние устройства должны иметь существующую SD-карту, и Ваше приложение должно иметь разрешение записать в SD-карту. Android 2.2 и более поздним устройствам не нужна SD-карта. Файлы журнала трассировки передаются потоком непосредственно к Вашей машине разработки.
, Таким образом, в сущности доступ файла трассировки требует двух вещей
1.) Разрешение записать файл журнала трассировки т.е.
WRITE_EXTERNAL_STORAGE
иREAD_EXTERNAL_STORAGE
в придачу2.) Эмулятор с SDCard, присоединенным с достаточным пространством. В документе не говорится, только ли это для DDMS, но также и для отладки, таким образом, я предполагаю, что это также верно для отладки с помощью приложения.
, Что, я делаю с этой ошибкой:
Теперь ошибка является по существу падением или из не наличия пути sdcard для создания файла трассировки или из не наличия разрешения получить доступ к нему. Это - старый поток, но dev позади щедрости, проверьте, встречают ли эти две предпосылки. Можно затем пойти, ищут .trace
файл в sdcard папке в эмуляторе. Если это существует, это не должно давать Вам эту проблему, если это не пытается создать его путем добавления startMethodTracing
к приложению.
я не уверен, почему это автоматически ищет этот файл, когда регистратор умирает. Я думаю, когда событие ошибки/журнала имеет место, регистратор внутренне пытается записать в файл трассировки и не находит его, в этом случае это бросает ошибку. Обыскивая через документы, я не нахожу слишком много ссылок на то, почему это автоматически включено. Но в целом это не влияет на Вас непосредственно, необходимо проверить прямые журналы/ошибки приложения. Также как в стороне Android 2.2 и более поздним устройствам не нужна SD-карта для входа трассировки DDMS. Файлы журнала трассировки передаются потоком непосредственно к Вашей машине разработки.
Дополнительная информация о Traceview:
Копирование Файлов трассировки к Хост-машине
После Вашего приложения работало, и система создала Ваши файлы трассировки .trace на устройстве или эмуляторе, необходимо скопировать те файлы в компьютер разработчика. Можно использовать получение по запросу adb для копирования файлов. Вот пример, который показывает, как скопировать файл в качестве примера, calc.trace, от местоположения по умолчанию на эмуляторе к/tmp каталогу на хост-машине эмулятора:
adb вытягивают/sdcard/calc.trace/tmp Просматривающий Файлы трассировки в Traceview, Чтобы выполнить Traceview и просмотреть файлы трассировки, вводят traceview. Например, для выполнения Traceview на файлах в качестве примера, скопированных в предыдущем разделе, используйте:
traceview/tmp/calc Примечание: При попытке просмотреть журналы трассировки приложения, которое создается с включенным ProGuard (сборка режима выпуска), некоторые имена методов и имена элемента могли бы быть запутаны. Можно использовать Прозащиту файл mapping.txt для выяснения исходных незапутываемых имен. Для получения дополнительной информации об этом файле см. Прозащитную документацию.
я думаю любой другой ответ относительно расположения oncreate
, операторы или удаление uses-sdk
не связаны, но это - Android, и я мог быть неправым. Было бы полезно, чтобы перенаправить этот вопрос инженеру андроида или отправить его как ошибку
Попытайтесь удалить uses-sdk
форма части AndroidManifest.xml
файл. это работало на меня!
не используют Виртуальное устройство Android со слишком низкой конфигурацией. Позвольте ему быть средним.
Напишите весь свой код ниже этих 2 lines:-
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
, которые Он работал на меня, не переустанавливая снова.
Я не хотел переустанавливать все, потому что у меня есть столько установленных версий SDK, и моя среда разработки настраивается просто право. Получение настроенного снова берет слишком долго.
то, Что работало на меня, удаляло, затем воссоздавая Виртуальное устройство Android, будучи убеждающимся вставить значение для Размера SD-карты (я использовал 200 мебибайт).
, в то время как вышеупомянутое действительно решает проблему временно, это повторяется. Я просто попробовал свое приложение в Studio Android и видел это в выходном журнале, который я не заметил прежде в Eclipse:
"/Applications/Android Studio.app/sdk/tools/emulator" -avd AVD_for_Nexus_S_by_Google -netspeed full -netdelay none
WARNING: Data partition already in use. Changes will not persist!
WARNING: SD Card image already in use: /Users/[user]/.android/avd/AVD_for_Nexus_S_by_Google.avd/sdcard.img
ko:Snapshot storage already in use: /Users/[user]/.android/avd/AVD_for_Nexus_S_by_Google.avd/snapshots.img
я подозреваю, что изменения в журнале не сохраняют к SD-карте, поэтому когда LogCat пытается получить доступ к журналам, они не там, вызывая сообщение об ошибке. Действие удаления AVD и воссоздания его удаляет файлы, и следующий запуск является новым запуском, позволяя LogCat получить доступ к виртуальной SD-карте.
У Вас не будет доступа к Вашей реальной SD-карте в эмуляторе. Необходимо будет выполнить шаги в этом учебное руководство для направления эмулятора к каталогу на среде разработки, действующей как SD-карта.
На самом деле проблема состоит в том, что или /sys/kernel/debug
не смонтирован, или что рабочее ядро не имеет никаких ftrace трассировщиков, скомпилированных в том, так, чтобы /sys/kernel/debug/tracing
было недоступно. Это - код, бросающий ошибку (platform_frameworks_native/libs/utils/Trace.cpp
):
void Tracer::init() {
Mutex::Autolock lock(sMutex);
if (!sIsReady) {
add_sysprop_change_callback(changeCallback, 0);
const char* const traceFileName =
"/sys/kernel/debug/tracing/trace_marker";
sTraceFD = open(traceFileName, O_WRONLY);
if (sTraceFD == -1) {
ALOGE("error opening trace file: %s (%d)", strerror(errno), errno);
sEnabledTags = 0; // no tracing can occur
} else {
loadSystemProperty();
}
android_atomic_release_store(1, &sIsReady);
}
}
сообщение журнала могло определенно быть немного более информативным.