2010-11-30 47 views
4

我在Android的一个小界面上工作,当我运行它时,“xxx应用程序意外停止”出现。我正在寻找可能的错误,但我没有找到任何东西。更改R类包android/eclipse

无论如何,我想改变R类包名,当我重构 - >重命名它时,eclipse会在旧包中生成另一个包,即使我删除该包后eclipse会再次生成它,我无法摆脱它!

回答

0
  1. 看看你的LogCat。它应该有你的错误的堆栈跟踪。
    • 要从Eclipse中查看LogCat,请转到窗口>显示视图>其他> Android> LogCat。
    • 要查看命令行的logcat的,去你的SDK/tools文件夹,然后运行“亚行logcat”
  2. 这是不可能改变R类包。
18

要改变产生R类的包名称,更改<manifest>标签的package财产AndroidManifest.xml

+0

非常感谢! – Flanagan1 2010-11-30 11:49:03

5

它可以通过自定义工具AAPT命令行成为可能。 aapt支持--custom-package选项,该选项指定将生成R类的包。

使用ANT,这样就可以实现这种方式:

  <exec executable="aapt" failonerror="true"> 
       <arg value="package" /> 
       <arg value="-m" /> 
       <arg value="-J" /> 
       <arg path="${gen.absolute.dir}" /> 
       <arg value="-M" /> 
       <arg path="AndroidManifest.xml" /> 
       <arg value="-I" /> 
       <arg path="${android.jar}" /> 
       <arg value="-A" /> 
       <arg path="${asset.absolute.dir}" /> 
       <arg value="-S" /> 
       <arg path="${resource.absolute.dir}" /> 
       <arg value="--custom-package" /> 
       <arg value="my.custom.package" /> 
      </exec> 
+0

非常感谢这个提示。大卫,我认为对我来说,处理几个项目分支将非常有用。你能否完成一些答案?我的意思是,我需要将该XML代码放在哪里? – 2012-07-18 11:23:57

+0

我的评论不适用于最近的Android SDK,因为aapt ANT任务已经在Android工具中引入,并且它在Android ANT脚本中使用。 我在我身边做的是定制/tools/ant目录中提供的ANT脚本,并且我定制了诸如-resource-src,-package-resources之类的目标。 – david 2012-07-19 19:26:33

2

我已经定制了一个Ant脚本,这样我可以构建我的应用程序时R.java更改包名。我所做的是覆盖-code-gen目标,并在-code-gen执行aapt时修改projectLibrariesPackageName属性。 (一个替代方案是更改构建build.xml文件,Eclipse是使用,我认为它可以在/tools/ant/build.xml找到)

<!-- Code Generation: compile resources (aapt -> R.java), aidl, renderscript --> 
    <target name="-code-gen"> 
     <do-only-if-manifest-hasCode 
       elseText="hasCode = false. Skipping aidl/renderscript/R.java"> 
      <echo>...........</echo> 
      <echo>Handling aidl files...</echo> 
      <aidl executable="${aidl}" framework="${android.aidl}" 
        genFolder="${gen.absolute.dir}"> 
       <source path="${source.absolute.dir}"/> 
      </aidl> 

      <!-- renderscript generates resources so it must be called before aapt --> 
      <echo>...........</echo> 
      <echo>Handling RenderScript files...</echo> 
      <renderscript executable="${renderscript}" 
        framework="${android.rs}" 
        genFolder="${gen.absolute.dir}" 
        resFolder="${resource.absolute.dir}/raw" 
        targetApi="${target.api}"> 
       <source path="${source.absolute.dir}"/> 
      </renderscript> 

      <echo>...........</echo> 
      <echo>Handling Resources...</echo> 
      <aapt executable="${aapt}" 
       command="package" 
       verbose="${verbose}" 
       manifest="AndroidManifest.xml" 
       androidjar="${android.jar}" 
       rfolder="${gen.absolute.dir}" 
       nonConstantId="${android.library}" 
       projectLibrariesResName="project.libraries.res" 
       projectLibrariesPackageName="package.internal"> <!-- Put custom package name here --> 
        <res path="${resource.absolute.dir}" /> 
      </aapt> 
     </do-only-if-manifest-hasCode> 
    </target> 
0

更改您的视角从文摘Java透视图(右上角)到DDMS视角。在那里你会发现LogCat在Android Build中查看错误。

检查它,然后发布错误,以便我们可以帮助你。