Я обновил Android SDK до версии. 22 вчера, и нет никаких apkbuilder в инструментах
Я проверил с моим другом, у которого есть Android SDK tools версии 21, есть apkbuilder
. Я обновил инструменты Android SDK до версии 22, и больше не могу найти apkbuilder
.
Итак, похоже, что инструмент Andorid SDK заменил apkbuilder
на что-то еще?
Как я могу сделать ant build.xml без apkbuilder?
Есть ли еще какой-нибудь способ создания без знака apk для Android?
Ответы
Ответ 1
Вы можете посмотреть .
После обновления до SDK Tools до версии. 22 в первый раз, вы можете необходимо снова запустить Android SDK Manager и установить новый элемент: Конструкторы Android SDK. ![enter image description here]()
После установки, очистите свои проекты и перестройте.
Ответ 2
Вы можете скопировать apkbuilder.bat в свой путь_to_sdk_home/tools/, а затем продолжить сборку.
Я нашел копию здесь, и она сработала.
Ответ 3
В старой версии AndroidSDK apkbuilder похож на оболочку, на самом деле она вызывает:
$ {Sdk.dir}/tools/lib/sdklib.jar
Итак, если вы глубоко в корне apkbuilder, вы можете найти два способа вызвать его:
-
из ant
Существует ant -extend lib под:
$ {Sdk.dir}/инструменты/Library/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>
-
для script или другой разработки
Вы можете использовать ${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 %*
Ответ 4
Примечания Android SDK для состояния rev.22:
Изменена структура SDK, добавив новый инструмент построения SDK Компонент, основанный на существующем компоненте платформы-инструментов. Это изменение отделяет версии инструментов сборки от версий IDE, позволяя обновлять инструменты без необходимости обновления IDE.
Один из временных вариантов - откат ваших SDK-инструментов обратно до rev.21, где существовал apkbuilder. Вы можете сделать это, создав резервную копию папки с инструментами (например, переименуйте ее в tools_22) и загрузите предыдущие инструменты из rev.21: dl-ssl.google.com/android/repository/tools_r20-windows.zip, распакуйте его в свой SDK, и он будет работать как раньше.
Ответ 5
Проведя немного исследований вокруг этого, кажется, APKBuilder.bat, хотя и не рекомендуется, все еще можно использовать, но больше не будет поддерживаться/улучшаться. [1]
Новый класс com.android.sdklib.build.APKBuilder Java теперь должен использоваться [2], поскольку это то, что будет развивается, продвигаясь вперед.
Ответ 6
Я нахожу способ, но я не очень уверен в этом. Я увидел каталог ant в каталоге инструментов и нашел build.xml, содержащий новый способ сборки apk. Я также видел ant_task.jar в каталоге tools/lib.Когда я разархивирую jar, я собираю некоторые классы, такие как Apk ApkBuilderTask.class CheckEnvTask.class и т.д. Итак, я думаю, что путь был изменен для сборки apk с помощью ant Задача, я попытаюсь использовать шаблон для сборки apk, и если он будет работать, я опубликую решение здесь.
спасибо!