использовать библиотеку ActionBarSherlock, ошибка после использования sherlock в качестве библиотеки

В моем собственном проекте используется Android 2.1 API 7.

Для реализации панели действий я использую библиотеку ActionBarSherlock. Я импортировал библиотеку sherlock в свой Eclipse как существующий проект. Для sherlock целевой платформой является Android v3.2 API 13 .

Затем я добавил sherlock в качестве проекта библиотеки в свой собственный проект. Затем я замечаю, что в моем собственном проекте нет файла R.java в папке gen/, и я получил ошибку, подобную следующей в консоли eclipse:

JakeWharton-ActionBarSherlock-436230d/library/res/values-v11/abs__styles.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Holo'.

JakeWharton-ActionBarSherlock-436230d/library/res/values-v11/abs__styles.xml:48: error: Error: No resource found that matches the given name: attr 'android:actionBarSize'.

JakeWharton-ActionBarSherlock-436230d/library/res/values-v11/abs__styles.xml:49: error: Error: No resource found that matches the given name: attr 'android:actionBarStyle'.

...

Я подумал, что это, вероятно, из-за того, что sherlock должен использовать API более высокой версии, поэтому я попытался установить целевую платформу на 4.03 API 15 в проекте sherlock. . Но это не помогает.

Кто-нибудь использует Шерлок, сталкивался с такой же ошибкой?? Как я могу решить эту проблему?

P.S. файл манифеста моего собственного проекта:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="my.frag.test"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MyActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

person Leem.fin    schedule 07.02.2012    source источник
comment
Ваш собственный проект нацелен на уровень API 7 или это минимальное значение SDK? Попробуйте также установить цель на 15 уровень.   -  person Alex Curran    schedule 07.02.2012
comment
@ Эспиандев, я тебя не понимаю. Какой смысл ставить собственный проект на 15 уровень?? Я имею в виду, что sherlock должен использоваться для встроенной панели действий в старой версии API, такой как мой проект (API 7), если я настрою свой собственный проект на использование API 15, какой смысл тогда иметь библиотеку sherlock на земле ?? ?   -  person Leem.fin    schedule 07.02.2012


Ответы (2)


Вы должны установить цель сборки на API13 в своем собственном проекте.

Минимальный уровень API, на котором работает ваше приложение, определяется android:minSdkVersion в вашем манифесте, а НЕ целью сборки.

Установка цели сборки на API13 НЕ делает ActionBar доступным на устройствах 2.1, и именно поэтому у вас есть ActionBarSherlock.

person SimonVT    schedule 07.02.2012
comment
Итак, если я установлю цель сборки на API 13 в своем собственном проекте, можно ли запустить мое собственное приложение на устройстве Android 2.1? и как установить цель сборки? - person Leem.fin; 07.02.2012
comment
Да, ваше приложение по-прежнему сможет работать в версии 2.1. Какую версию вы поддерживаете, определяется android:minSdkVersion в вашем манифесте. Вы должны иметь возможность изменить цель сборки из свойств проекта в Eclipse. - person SimonVT; 07.02.2012

И ваше приложение, и библиотека должны быть скомпилированы с Android 3.2 для надлежащей поддержки.

Однако вы можете установить свой minSdkVersion в манифесте на уровне «4», чтобы по-прежнему поддерживать Android 1.6. Значение targetSdkVersion также должно быть равно "11" или выше.

Взгляните на примеры в папке samples/ проекта, чтобы понять, как это делается.

person Jake Wharton    schedule 07.02.2012
comment
Итак, если я установлю цель сборки на API 13 в своем собственном проекте, можно ли запустить мое собственное приложение на устройстве Android 2.1? - person Leem.fin; 07.02.2012
comment
При условии, что minSdkVersion равно «7» или ниже, да. - person Jake Wharton; 07.02.2012
comment
Было бы неплохо упомянуть об этом на странице использования. - person David Snabel-Caunt; 07.02.2012
comment
Сайт будет переделан для версии 4 в течение следующих двух недель, и на нем будет намного лучше документация, включая ключевые факты, подобные этой. - person Jake Wharton; 07.02.2012
comment
@JakeWharton, я пробую это на эмуляторе. У меня на эмуляторе не установлен API 15, поэтому я использую API 14 в качестве цели сборки. Но библиотека, которую я скачал, это 4.1.0. Это дает мне ту же ошибку, что и в вопросе. Это потому, что у меня не установлен API 15 или что-то еще? - person Archie.bpgc; 20.08.2012