2013-03-04 3 views
4

Есть ли способ превзойти команду Eclipse «Инструменты Android -> Переименовать пакет приложений» в качестве скрипта из оболочки?Android: переименование пакета в Eclipse

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

+0

Я не думаю, что это возможно, самый быстрый способ - использовать сочетание клавиш (cmd + option + r on os x) – vault

+0

Хороший вопрос, это было бы очень удобно. Тем не менее, я нашел инструмент пользовательского интерфейса менее чем на 100%, поэтому я не уверен, что буду использовать его как часть автоматической сборки. –

+0

«Все решения, такие как библиотеки, не помогут, потому что нужно сделать несколько вещей вручную» - что это за «несколько вещей»? – CommonsWare

ответ

1

Да, это возможно. Вам нужно вручную вызвать aapt инструмент для упаковки скомпилированного проекта, затем снова вызовите aapt, чтобы добавить классы, подпишите его с помощью jarsigner и выровняйте его с помощью zipalign. Обычно плагин Eclipse ADT выполняет цепочки шагов сборки для вас.

Ниже приведены примеры шагов.

  1. Упаковка приложение с другим названием пакета:

    aapt package -f -M ./AndroidManifest.xml -S res/ \ 
        -I android.jar -F renamed_project.apk.unaligned \ 
        --rename-manifest-package "com.example.some_new_package" -v 
    
  2. Затем добавьте классы:

    aapt add -f renamed_project.apk.unaligned classes.dex -v 
    
  3. Подпиши:

    jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 \ 
        -keystore "some_keystore_file" \ 
        renamed_project.apk.unaligned "key_name" 
    
  4. Выровняйте:

    zipalign -v 4 renamed_project.apk.unaligned renamed_project.apk 
    

Некоторые более подробную информацию можно найти, например, here.

Также вы можете сделать это проще с помощью Ant. Here вы можете найти дополнительную информацию.

+0

Простите, но это не решение. После переименования и добавления classes.dex (шаг 1 + 2) приложение имеет размер в два раза меньше, чем раньше. Установка на эмулятор вызывает ошибку «Ошибка [INSTALL_FAILED_DEXOPT]». – Marcel

+0

Я написал только пример упаковки. Возможно, для вашей сборки потребуется добавить еще несколько параметров для вызовов, например. проектные библиотеки. – Tomik

Смежные вопросы