63
задан 19 July 2013 в 12:31

7 ответов

Это происходит, потому что Вы не установили minSdkVersion или targetSdkVersion в you’re компьютере. Я протестировал его прямо сейчас.

, Например, если у Вас есть те строки в Вашем Manifest.xml:

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

И Вы установили только API17 в своем компьютере, он сообщит о Вас ошибка. Если Вы хотите протестировать его, попытайтесь установить другую версию API (в этом случае, API 8).

, Несмотря на это, это не важная ошибка. Это не означает, что Ваше приложение является неправильным.

Извините за мое выражение. Английский язык не является моим языком. До свидания!

10
ответ дан 31 October 2019 в 13:00

Я думаю, что это - проблема

Немного фона

, Traceview является графическим средством просмотра для журналов выполнения, которые Вы создаете при помощи класса Отладки для входа информации о трассировке в коде. Traceview может помочь Вам отладить свое приложение и представить его производительность. Включение его создает .trace файл в sdcard корневой папке, которая может затем быть извлечена ADB и обработана traceview bat-файлом для обработки. Это также может быть добавлено DDMS.

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

, Как делают я включаю его:

существует два способа генерировать журналы трассировки:

  1. Включают класс Отладки в Ваш код и называют его методы таким как startMethodTracing() и stopMethodTracing(), чтобы запустить и прекратить регистрироваться трассировочной информации к диску. Эта опция очень точна, потому что можно указать точно, где запустить и прекратить регистрировать данные трассировки в коде.

  2. Используют метод профильная функция 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, и я мог быть неправым. Было бы полезно, чтобы перенаправить этот вопрос инженеру андроида или отправить его как ошибку

[еще 1141] в эти документы

8
ответ дан 31 October 2019 в 13:00

Попытайтесь удалить uses-sdk форма части AndroidManifest.xml файл. это работало на меня!

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

6
ответ дан 31 October 2019 в 13:00

Напишите весь свой код ниже этих 2 lines:-

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

, которые Он работал на меня, не переустанавливая снова.

5
ответ дан 31 October 2019 в 13:00

Я не хотел переустанавливать все, потому что у меня есть столько установленных версий SDK, и моя среда разработки настраивается просто право. Получение настроенного снова берет слишком долго.

то, Что работало на меня, удаляло, затем воссоздавая Виртуальное устройство Android, будучи убеждающимся вставить значение для Размера SD-карты (я использовал 200 мебибайт).

screenshot of the AVD creation screen

Дополнительная информация:

, в то время как вышеупомянутое действительно решает проблему временно, это повторяется. Я просто попробовал свое приложение в 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-карте.

4
ответ дан 31 October 2019 в 13:00

У Вас не будет доступа к Вашей реальной SD-карте в эмуляторе. Необходимо будет выполнить шаги в этом учебное руководство для направления эмулятора к каталогу на среде разработки, действующей как SD-карта.

3
ответ дан 31 October 2019 в 13:00

На самом деле проблема состоит в том, что или /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);
    }
}

сообщение журнала могло определенно быть немного более информативным.

1
ответ дан 31 October 2019 в 13:00

Другие вопросы по тегам:

Похожие вопросы: