почему генерируются несколько R.java

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


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

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

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

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

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

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


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

Я пытаюсь создать несколько сценариев сборки 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. альфа.бета.чарли.дельта
  2. alpha.beta.charley.delta.echo.booger.ui
  3. alpha.beta.charley.datamodel

person prolink007    schedule 25.01.2012    source источник
comment
Каковы полные пути к различным файлам R.Java?   -  person nwaltham    schedule 25.01.2012
comment
Добавил это в вопрос внизу.   -  person prolink007    schedule 25.01.2012


Ответы (2)


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

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


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

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

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

person prolink007    schedule 25.01.2012

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

person SeanPONeil    schedule 25.01.2012
comment
Когда я пытаюсь построить проект в eclipse, говоря, что проект сборки создает 3 файла R.java. Когда я пытаюсь использовать свой скрипт, он терпит неудачу с этой ошибкой. - person prolink007; 25.01.2012
comment
Проблема была вроде как решена, но у меня есть еще одна проблема. - person prolink007; 25.01.2012