繁体   English   中英

改变R类包android / eclipse

[英]Change R class package android/eclipse

我正在研究android中的一个小界面,当我运行它时,“xxx应用程序意外停止”出现了。 我正在寻找可能的错误,但我找不到任何东西。

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

要更改生成的R类的包名,请在AndroidManifest.xml更改<manifest>标记的package属性

可以通过自定义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>

我已经定制了一个ant脚本,以便在构建应用程序时可以更改R.java的包名。 我所做的是覆盖-code-gen目标并在-code-gen执行aapt时修改projectLibrariesPackageName属性。 (一种替代方法是更改​​eclipse正在使用的构建build.xml,我认为它可以在/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>
  1. 看看你的LogCat。 它应该有你的错误的堆栈跟踪。
    • 要从Eclipse查看LogCat,请转到Window> Show View> Other> Android> LogCat。
    • 要从命令行查看LogCat,请转到SDK / tools文件夹并运行“adb logcat”
  2. 无法更改R类包。

将您的Eclips视角从Java Perspective(右上角)更改为DDMS Perspective。 你会在Android Build中找到LogCat来查看错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM