Я обновил Android SDK до версии. 22 вчера и в инструментах нет apkbuilder

Я проверил с моим другом, у которого есть Android SDK tools версии 21, apkbuilder есть. Я обновил инструменты Android SDK до версии 22, и я больше не могу найти apkbuilder .

Похоже, что инструмент Andorid SDK заменил apkbuilder чем-то еще? Как я могу сделать ant build.xml без apkbuilder? Есть ли какой-нибудь другой способ создания без знака apk для Android?

Вы можете посмотреть на это .

После обновления до SDK Tools до версии. 22 в первый раз вам может потребоваться перезапустить Android SDK Manager еще раз и установить новый элемент: Android SDK Build-tools . Введите описание изображения здесь

После установки, очистите свои проекты и перестройте.

Вы можете скопировать apkbuilder.bat в свой путь_to_sdk_home / tools /, а затем продолжить сборку. Я нашел копию здесь , и это сработало.

В старой версии AndroidSDK apkbuilder похож на оболочку, на самом деле он вызывает: $ {sdk.dir} /tools/lib/sdklib.jar

Итак, если вы глубоко входите в корень apkbuilder, вы можете найти два способа вызвать его:

  1. From ant Существует ant-extend lib под: $ {sdk.dir} /tools/lib/ant-tasks.jar Итак, вы можете вызвать его следующим образом:

     <path id="android.antlibs"> <pathelement path="${sdk.dir}/tools/lib/ant-tasks.jar" /> </path> <!-- Custom tasks --> <taskdef resource="anttasks.properties" classpathref="android.antlibs" /> <apkbuilder outfolder="${out.absolute.dir}" resourcefile="${resource.package.file.name}" apkfilepath="${out.packaged.file}" debugpackaging="${build.is.packaging.debug}" debugsigning="${build.is.signing.debug}" verbose="${verbose}" hascode="${manifest.hasCode}" previousBuildType="${build.last.is.packaging.debug}/${build.last.is.signing.debug}" buildType="${build.is.packaging.debug}/${build.is.signing.debug}"> <dex path="${intermediate.dex.file}"/> <sourcefolder path="${source.absolute.dir}"/> <jarfile refid="project.all.jars.path" /> <nativefolder path="${native.libs.absolute.dir}" /> <nativefolder refid="project.library.native.folder.path" /> <extra-jars/> </apkbuilder> 
  2. Для скрипта или другой разработки. Вы можете использовать $ {sdk.dir} /tools/lib/sdklib.jar, включенный apkbuilder. Взгляните на apkbuild.bat в предыдущей версии, в конце файла:

     set jarfile=sdklib.jar set frameworkdir= if exist %frameworkdir%%jarfile% goto JarFileOk set frameworkdir=lib\ if exist %frameworkdir%%jarfile% goto JarFileOk set frameworkdir=..\framework\ :JarFileOk set jarpath=%frameworkdir%%jarfile% call %java_exe% -classpath %jarpath% com.android.sdklib.build.ApkBuilderMain %* 

Android SDK отмечает для версии.22:

Изменена структура SDK, добавив компонент SDK нового инструмента построения, который основан на существующем компоненте платформы-инструментов. Это изменение отделяет версии инструментов сборки от версий IDE, что позволяет обновлять инструменты без необходимости обновления IDE.

Один из временных вариантов – откат ваших SDK-инструментов обратно до rev.21, где существовал apkbuilder. Вы можете сделать это, выполнив резервное копирование папки с инструментами (например, переименуйте ее в tools_22) и загрузите предыдущие инструменты из rev.21: dl-ssl.google.com/android/repository/tools_r20-windows.zip, распакуйте его в свой SDK, и он Будет работать как раньше.

Проводя немного исследований вокруг этого, кажется, APKBuilder.bat, хотя и не рекомендуется, все еще можно использовать, но больше не будет поддерживаться / улучшаться. [ 1 ]

Новый класс com.android.sdklib.build.APKBuilder Java теперь должен использоваться [ 2 ], поскольку это то, что будет развиваться, в будущем.

Я нахожу способ, но я не очень уверен в этом. Я видел каталог ant в каталоге tools и нашел build.xml, который содержит новый способ сборки apk. Я также видел ant_task.jar в каталоге tools / lib.Когда я разархивирую jar, я собираю некоторые классы, такие как Apk ApkBuilderTask.class CheckEnvTask.class и т. Д. Итак, я думаю, что путь будет изменен для сборки apk с муравьем Задачу, я попытаюсь использовать шаблон для сборки apk, и если он будет работать, я опубликую решение здесь. благодаря!