Android:许多软件包使用R.java时出错

时间:2012-03-08 07:24:40

标签: java android android-manifest package android-resources

我有两个包,例如packageApackageB。 在packageA中,我有一个名为classA的类,它从R.java获取资源:example:

TextView textView = (TextView) findViewById(R.id.textView);

与包B相同。我有一个名为classB的类,它从R.java获取资源

EditText editText = (EditText) findViewById(R.id.EditText);

当我希望android运行classB时,我必须更改Android Manifest file,将默认包从com.packageA更改为com.packageB,因此classA会在上面的行中发现错误。当我逆转时也一样。

那么,我该如何解决这个问题:使用多个包,其中很多都使用Resource data。请帮帮我。

谢谢:)

3 个答案:

答案 0 :(得分:3)

如果清单中指定的包是com.packageA,那么在packageA的文件中,您不需要做任何事情。在packageB的文件中,使用import com.packageA.R;而不更改清单中的包名称。这样,您的packageB可以访问R.java文件。

答案 1 :(得分:1)

您无需在清单文件中提及所有包。只需声明A类包并运行该程序。但是请确保在要调用它的java类中导入类B的包。清单文件默认声明您在创建新的android项目时提到的第一个包。

如果这解决了您的问题,请告诉我

答案 2 :(得分:0)

我遇到了同样的问题,因为我是用不同的资源向另一个项目分配项目,因为我使用scala(2.8.3)和treeshaker,插件不允许我正确使用android库项目。 / p>

我通过使用ant添加自定义构建步骤解决了这个问题,该步骤在我想要的包中创建了R.java的副本。

我在项目MyProjectExtended的根目录中添加了一个名为custom_rules.xml的文件,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
  <project name="MyProjectExtended" default="debug">
  <condition property="exe" value=".exe" else=""><os family="windows" /></condition>
  <property name="aapt" location="C:\Program Files (x86)\Android\android-sdk\platform-tools\aapt${exe}" />
  <property name="android.jar" location="C:\Program Files (x86)\Android\android-sdk\platforms\android-10\android.jar" />

  <!-- Generates the R.java file for this project's resources. -->
  <target name="debug">
     <echo>Generating R.java / Manifest.java from the resources...</echo>
 <exec executable="${aapt}" failonerror="true">
   <arg value="package" />
   <arg line="" />
   <arg value="-m" />
   <arg value="-J" />
   <arg path="gen" />
   <arg value="-M" />
   <arg path="AndroidManifest.xml" />
   <arg value="-S" />
   <arg path="res" />
   <arg value="-I" />
   <arg path="${android.jar}" />
   <arg value="--custom-package" />
   <arg value="com.MyProjectExtendedPackage" />
     </exec>  
  </target>
</project>

然后我添加了自定义构建步骤:

  • 右键单击项目,属性
  • 在“构建器”上,单击“新建...”
  • 选择“Ant Builder”,继续。
  • 对于BuildFile ${workspace_loc:/MyProjectExtended/custom_rules.xml}
  • 基本目录:${workspace_loc:/MyProjectExtended}

如果控制台弹出窗口很烦人,您可以在名为“构建选项”的选项卡中将其禁用