13

我已经与拥有 Android SDK 工具版本 21 的朋友核实过,apkbuilder那里有。我已将 Android SDK 工具更新到版本 22,但我再也找不到apkbuilder了。

所以看起来Andorid SDK工具已经apkbuilder用别的东西代替了?如何在没有 apkbuilder 的情况下制作 ant build.xml?还有其他方法可以为 Android 构建未签名的 apk 吗?

4

6 回答 6

9

你可能想看看这个

更新到 SDK 工具后进行修订。22 第一次,你可能需要重新启动 Android SDK Manager 并安装一个新项目: Android SDK Build-tools在此处输入图像描述

安装后,清理您的项目并重建。

于 2013-05-18T04:27:00.227 回答
6

在旧版本的AndroidSDK中,apkbuilder就像一个shell,实际上它调用:${sdk.dir}/tools/lib/sdklib.jar

所以,如果你深入 apkbuilder 的根目录,你会发现有两种调用它的方法:

  1. 从 ant 下有一个 ant-extend 库: ${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 %*
    
于 2013-08-07T07:50:58.997 回答
5

您可以将 apkbuilder.bat 复制到您的 path_to_sdk_home/tools/,然后继续构建。我在这里找到了一份副本,并且有效。

于 2013-06-07T02:45:29.480 回答
2

rev.22 状态的 Android SDK 注释:

通过添加新的构建工具 SDK 组件来更改 SDK 的结构,该组件基于现有的平台工具组件。此更改将构建工具版本与 IDE 版本分离,允许在不需要 IDE 更新的情况下更新工具。

临时选项之一是将您的 SDK 工具回滚到存在 apkbuilder 的 rev.21。您可以通过备份工具文件夹(例如,将其重命名为 tools_22)并从 rev.21 下载以前的工具:dl-ssl.google.com/android/repository/tools_r20-windows.zip,将其解压缩到您的 SDK 和它会像以前一样工作。

于 2013-05-18T18:31:47.787 回答
1

围绕这一点进行一些研究,似乎 APKBuilder.bat 虽然已被弃用,但仍然可以使用,但将不再受支持/增强。[ 1 ]

现在应该使用新的 com.android.sdklib.build.APKBuilder Java 类 [ 2 ],因为这是未来将要开发的。

于 2013-07-23T06:38:41.820 回答
0

我找到了一种方法,但我不太确定。我在 tools 目录中看到了一个 ant 目录,发现一个 build.xml 包含构建 apk 的新方法。我还在 tools/lib 目录中看到了 ant_task.jar。当我解压缩 jar 时,我找到了一些类,如 Apk ApkBuilderTask.class CheckEnvTask.class 等等......所以我认为改变方式以使用 ant 构建 apk任务,我将尝试使用模板来构建 apk,如果它有效,我将在此处发布解决方案。谢谢!

于 2013-05-20T01:58:04.313 回答