защо се генерират множество R.java

Разбрах решението на проблемите. Отговорите са в моя отговор. И промених малко въпроса.


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

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

Да, ще генерира R.java за всяка библиотека, която е импортирана.

Как да го предпазя от генериране на допълнителните 2 R.java файла

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

Проблемът по-долу обаче е отстранен... Eclipse все още генерира 3 R.java файла и моят ant скрипт генерира само 1. За въпросния проект всичко се компилира добре и в двата сценария (ant или eclipse), но това може да е причина проблем в друг проект и бих искал да знам отговора на въпроса по-горе.


По-долу е старият проблем, който донякъде е решен

Опитвам се да създам някои скриптове за изграждане на мравки за няколко приложения. Когато се опитвате да стартирате този код:

<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, като кажа build project, той генерира 3 R.java файла. Когато се опитам да използвам моя скрипт, той се проваля с тази грешка. - person prolink007; 25.01.2012
comment
Проблемът донякъде беше разрешен, но все още имам друг проблем. - person prolink007; 25.01.2012