Как изменить имя пакета приложения для приложения Android через командную строку

Есть ли инструмент Android, который изменит имя пакета проекта с помощью командной строки. Я не хочу использовать Eclipse Android Tools → Переименовать пакет приложений.

Ответ 1

Если вы хотите сделать это как одноразовое изменение источника, вы можете использовать инструмент командной строки Android android update project Документация находится в [документах разработчика] [1].

Если вы хотите сделать это динамически во время каждой сборки, вам понадобится пользовательский ant build script для передачи аргументов в aapt К сожалению, вы не можете использовать задачу по умолчанию, поскольку она не поддерживает установку опции --rename-манифест-пакет.

Вам нужно добавить следующую цель в файл build.xml android по умолчанию android создает командную строку; добавьте его до <import file="${sdk.dir}/tools/ant/build.xml" />

<!-- Replaces the target in tools\ant\build.xml -->
<target name="-package-resources" depends="-crunch">
            <!-- this exec replicates the output of the aapt task in build.xml
                 -package-resources with the addition of a rename-manifest-package option. -->
            <exec executable="${aapt}" failonerror="true">
                <arg value="package" />
                <arg value="-f" />
                <arg value="--auto-add-overlay" />
                <arg value="-M" />
                <arg path="${basedir}/AndroidManifest.xml" />
                <arg value="-S" />
                <arg path="${resource.absolute.dir}" />
                <arg value="-S" />
                <arg path="${basedir}/${android.library.reference.1}/${resource.dir}" />
                <arg value="-A" />
                <arg path="${asset.absolute.dir}" />
                <arg value="-I" />
                <arg path="${android.jar}" />
                <arg value="-F" />
                <arg path="${out.absolute.dir}/${resource.package.file.name}" />
                <arg value="--rename-manifest-package" />
                <arg value="${package.manifest.name}" />
            </exec>
</target>

Свойство package.manifest.name будет содержать имя пакета. Вы можете установить это в файле свойств или в качестве опции командной строки -Dpackage.manifest.name=value Вы также можете расширить это, чтобы переименовать выход apk на основе свойства.

Этот вопрос охватывает получение информации о версии из манифеста для добавления в имя вывода apk: Как включить строку версии в имя файла при создании Android apk с ant?

Вам нужно посмотреть файл build.xml, который импортируется, чтобы получить представление о том, что вам нужно будет переопределить.

Вы можете продолжать добавлять переопределения правил в локальный файл build.xml, но из-за уровня настройки, который вам нужно сделать, я бы подумал о том, чтобы непосредственно скопировать файл build.xml из инструментов android и изменить его, а не используя его как импорт. Это означает больше работы, убедившись, что она по-прежнему работает с каждым обновлением в цепочке инструментов Android.