1

我想出了解决问题的办法。答案在我的回答中。我稍微修改了这个问题。


问题仍未解决。

当使用 Eclipse 构建一个 android 项目时,它应该生成多个 R.java文件吗?

是的,它将R.java为每个已导入的库生成。

如何防止它生成额外的 2 个R.java文件

不要,导入其他 2 个库,但您可能需要修复您的依赖项。多个不是问题。

但是,下面的问题已得到修复... 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. alpha.beta.charley.delta
  2. alpha.beta.charley.delta.echo.booger.ui
  3. alpha.beta.charley.datamodel
4

2 回答 2

1

最近的问题答案

这样做的原因是,当您将库导入 android 时,它会自动生成R.java附加到这些库的库。所以是的,多个R.java很好。


原始问题答案

我们找到了解决方案。有人R.java从另一个项目导入了一个文件。取出这个导入,解决了这个问题。

这实际上解决了它返回错误代码 1 的问题。但是,当使用 Eclipse 构建项目时,它仍然构建 3 个 R.java 文件。在主要帖子中添加有关这种情况的详细信息。

于 2012-01-25T16:38:27.343 回答
0

我的猜测是,除了您的脚本正在制作的 R.java 之外,ADT 插件还试图生成自己的 R.java。如果您使用的是 Eclipse 而不是命令行,只需使用 ADT 插件来构建您的应用程序。

于 2012-01-25T15:46:43.533 回答