Android: отсутствует ресурс в промежуточном каталоге (виноват ли Gradle?)
Я очень плохо знаком с Android Studio и OpenCV, поэтому, пожалуйста, прости меня, если это плохой вопрос.
Загрузив и установив общие библиотеки OpenCV, а также OpenCV SDK для Android, я хочу использовать Android Studio и Android NDK для компиляции одного из примеров проектов OpenCV для использования на моем телефоне Android.
Я следовал инструкциям на этой странице, но все еще сталкиваюсь с ошибками сборки с Gradle. Оператор вывода ошибок выглядит следующим образом:
... / AndroidStudioProjects / MyProject / приложение / сборки / промежуточный / манифесты / полный / отлаживать /AndroidManifest.xml
Ошибка:(13, 23) Не найдено ни одного ресурса, соответствующего данному имени (в значке "icon" со значением "@drawable/ic_launcher").
Ошибка:(15, 24) Не найден ресурс, который соответствует указанному имени (в 'theme' со значением '@ style / AppTheme').
"Не удалось выполнить задачу":app:ProcessDebugResources "
С моим базовым пониманием, я предполагаю, что это означает, что gradle читает AndroidManifest.xml в каталоге build / промежуточные / manifest / full / debug, и этот манифест ссылается на ресурсы, которые не существуют.
Если бы это был созданный мной каталог и XML-файл, я хотел бы заменить отсутствующие ресурсы или отредактировать манифест. Но так как все файлы и каталоги в каталоге сборки генерируются Gradle, я понятия не имею, что делать.
Почему Gradle генерирует один каталог и файл (например, AndroidManifest.xml), а не другой (то есть отсутствующие ресурсы)?
Мое лучшее предположение источника проблемы состоит в том, что что-то в файле build.gradle, которое предоставляет вышеупомянутая ссылка, не соответствует моей конкретной установке. Я пытался настроить build.gradle, чтобы использовать разные версии SDK и buildTools, но это не помогло.
Я использую Android Studio 1.0.1 на Mac OSX 10.10.4
Если кто-то может указать мне правильное направление, я был бы очень признателен.
Редактировать: это текст из основного файла AndroidManifest.xml, который находится в каталоге app / src / main.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.baneofsociety.pleasework">
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme">
</application>
</manifest>
Все в app / src / main / res копируется непосредственно из файлов примеров OpenCV, согласно инструкциям, которые я следовал в ссылке. Я не нашел файл styles.xml в app / src / main / res / values, только strings.xml.
2 ответа
Проблема в том, что вы пытаетесь сослаться на ресурс ic_launcher
а также AppTheme
в вашем AndroidManifest.xml
которых на самом деле не существует в вашем проекте. Это обычно происходит, когда вы слепо копируете код вставки.
Измените свой значок в AndroidManifest.xml
следующим образом, потому что вы сказали, что у вас есть icon.png
:
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@drawable/icon" android:theme="@style/AppTheme">
Вы также должны добавить styles.xml
файл. Для этого создайте новый проект в вашей IDE и скопируйте автоматически сгенерированный styles.xml
подать в res/values/
каталог. Обычно styles.xml
содержит что-то вроде этого:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
Надеюсь, поможет! Пожалуйста, прочитайте больше документации.:)
Вопрос Аваниса Радж "Откуда вы скопировали AndroidManifest.xml?" это то, что поставило меня на правильный путь. Я все еще использовал общий файл AndroidManifest.xml, сгенерированный Android Studio, а не копировал XML-файл из образца OpenCV. Замена общего xml на образец устраняет проблему.