почему генерируется несколько R.java - PullRequest
1 голос
/ 25 января 2012

Я разобрался с решением проблем.Ответы в моем ответе.И я немного изменил вопрос.


Проблема все еще не решена.

При использовании Eclipse для создания проекта Android, должен ли он генерироватьбольше чем 1 R.java файл?

Да, он будет генерировать R.java для каждой импортированной библиотеки.

Как сделатьЯ не позволяю генерировать дополнительные 2 R.java файлы

Не импортируйте эти две другие библиотеки, но вам, вероятно, потребуется исправить ваши зависимости.Многократное не является проблемой.

Проблема, описанная ниже, была исправлена, однако ... Eclipse по-прежнему генерирует файлы 3 R.java, а мой ant-скрипт генерирует только 1. Для рассматриваемого проекта:все компилируется нормально в обоих сценариях (муравей или затмение), но это может быть причиной проблемы в другом проекте, и я хотел бы знать ответ на вопрос выше.


Ниже приведенстарая проблема, которая вроде как решена

Я пытаюсь создать несколько сценариев сборки Ant для нескольких приложений.При попытке запустить этот код:

<target name="resource-src" description="Generate the R.java file for this project's resources.">
    <exec executable="${aapt}" failonerror="true">
        <arg value="package"/>
        <arg value="-f"/>
        <arg value="-v"/>
        <arg value="-M"/>
        <arg path="../AndroidManifest.xml"/>
        <arg value="-A"/>
        <arg path="../assets"/>
        <arg value="-I"/>
        <arg path="${android_jar}"/>
        <arg value="-m"/>
        <arg value="-J"/>
        <arg path="../gen"/> <!-- Create R.java in the gen directory -->
        <arg value="-S"/>
        <arg path="../res"/>
    </exec>
</target>

я получаю эту ошибку:

C:\BoogerReport\builder\build.xml:76: exec returned: 1

Я заметил, что это приложение генерирует несколько файлов R.java при использовании eclipse для сборки проекта (в папке gen).Я думал, что приложения для Android должны были генерировать только 1 R.java файл.

1.Это так?

2.Если нет, в чем может быть проблема?

3.Кроме того, связаны ли эти две проблемы или что-то еще не так?


Ниже приведен файл AndroidManifest.xml для рассматриваемого проекта.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="alpha.beta.charley.delta.echo.booger.ui"
      android:versionCode="2"
      android:versionName="UnofficialBuild">
    <uses-sdk android:minSdkVersion="10" />
    <application android:icon="@drawable/booger"
        android:label="@string/app_name">
        <activity android:name=".BoogerReport"
                  android:label="@string/app_name"
                  android:configChanges="keyboardHidden|orientation"
                  android:windowSoftInputMode="stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="alpha.beta.charley.delta.message.boogerreport.CREATE" />
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="alpha.beta.charley.delta.message.category.LOCATION" /> 
            </intent-filter>
        </activity>
        <activity android:name=".BoogerReportView"
                  android:configChanges="orientation">
            <intent-filter>
                <action android:name="alpha.beta.charley.delta.message.boogerreport.OPEN" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".BoogerList" 
                  android:configChanges="orientation" /> 
    </application>
</manifest>

Дополнительная информация для ответа на заданные вопросы:

Пути к сгенерированным R.java файлам:

  1. alpha.beta.charley.delta
  2. alpha.beta.charley.delta.echo.booger.ui
  3. alpha.beta.charley.datamodel

Ответы [ 2 ]

1 голос
/ 25 января 2012

Ответ на самую последнюю проблему

Причина, по которой это происходит, заключается в том, что при импорте библиотеки в Android она автоматически сгенерирует R.java, прикрепленные к этим библиотекам.Так что да, кратно R.java нормально.


Исходный ответ на проблему

Мы нашли решение.Кто-то импортировал файл R.java из другого проекта.Извлечение этого импорта устранило проблему.

Это фактически устранило проблему, когда он возвращал код ошибки 1. Однако при использовании Eclipse для сборки проекта он все еще собирает 3 файла R.java.,Добавление подробностей в основной пост об этой ситуации.

0 голосов
/ 25 января 2012

Я предполагаю, что плагин ADT пытается сгенерировать свой собственный R.java в дополнение к R.java, который создает ваш скрипт.Если вы используете Eclipse, а не командную строку, просто используйте плагин ADT для создания приложения.

...