Изменить пакет R класса Android / Eclipse - PullRequest
4 голосов
/ 30 ноября 2010

Я работаю над небольшим интерфейсом в Android, и когда я запускаю его, приложение xxx неожиданно остановилось. Я ищу возможные ошибки, но ничего не нахожу.

В любом случае, я хотел бы изменить имя пакета класса R, когда я произвожу рефакторинг-> переименовать его. Eclipse создает другое в старом пакете, даже если я удаляю этот пакет, eclipse генерирует его снова, я не могу от него избавиться !

Ответы [ 5 ]

18 голосов
/ 30 ноября 2010

Чтобы изменить имя пакета сгенерированного класса R, измените свойство package тега <manifest> в AndroidManifest.xml

5 голосов
/ 24 мая 2011

Это может быть возможно путем настройки командной строки инструментов 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>
2 голосов
/ 06 декабря 2011

Я настроил ant-скрипт, чтобы при сборке приложения я мог изменить имя пакета для R.java.Я переопределил цель -code-gen и изменил атрибут projectLibrariesPackageName, когда -code-gen выполняет aapt.(одна альтернатива - изменить сборку 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 голосов
/ 06 декабря 2011

Измените свою перспективу в Eclips с перспективы Java (верхний правый угол) на перспективу DDMS. Там вы найдете LogCat для просмотра ошибок в вашей сборке Android.

Проверьте, а затем опубликуйте сообщения об ошибках, чтобы мы могли вам помочь.

0 голосов
/ 30 ноября 2010
  1. Посмотрите на свой LogCat.Он должен иметь трассировку стека вашей ошибки.
    • Чтобы увидеть LogCat из Eclipse, перейдите в «Окно»> «Показать представление»> «Другое»> «Android»> «LogCat».
    • Чтобы увидеть LogCat из командной строки, перейдите в папку SDK / tools и запустите"adb logcat"
  2. Невозможно изменить пакет класса R.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...