【问题标题】:I have updated Android SDK to rev. 22 yesterday and there is no apkbuilder in tools我已将 Android SDK 更新为 rev。昨天 22 日,工具中没有 apkbuilder
【发布时间】:2013-05-13 07:22:28
【问题描述】:

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

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

【问题讨论】:

    标签: android build apk


    【解决方案1】:

    你可能想看看this

    更新到 SDK 工具以修订后。 22 第一次,你可以 需要重新启动 Android SDK Manager 并安装一个新项目: Android SDK 构建工具

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

    【讨论】:

    • 你检查了吗?构建工具不包括 apkbuilder。
    • 我已经这样做了。并且build.xml是存在的,我想找到apkbuilder的替代工具。sdk工具ver.22如何构建apk?没有apkbuilder?
    • 同时执行“android update project -p”。在您的项目目录中。这将更新您的 build.xml。
    • “com.android.sdklib.build.ApkBuilderMain”周围的 apkbuilder/apkbuilder.bat 包装器在 rev 22 中不再退出。
    • 我希望在更新后修复我的重建问题。谢谢!
    【解决方案2】:

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

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

    1. 来自蚂蚁 下面有一个 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 %*
      

    【讨论】:

    • 这是解释如何现在调用 ApkBuilder 的唯一答案。
    【解决方案3】:

    您可以将 apkbuilder.bat 复制到您的 path_to_sdk_home/tools/,然后继续构建。 我找到了一份 here 的副本,并且成功了。

    【讨论】:

      【解决方案4】:

      针对 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 和它将像以前一样工作。

      【讨论】:

      • THX。我想找到一种方法来编辑我的 build.xml 以适应新版本的工具。或者我应该将 builder 更改为 gradle 还是其他?
      • 在不会回滚我的sdk工具版本21的情况下?实际上我想知道如何在工具版本22中构建apk?最好的方式?
      • 我只知道这个解决方案。也许其他人知道 rev.22 的更好方法
      【解决方案5】:

      对此进行了一些研究,似乎 APKBuilder.bat 尽管已弃用,但仍可以使用,但将不再受支持/增强。 [1]

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

      【讨论】:

      • 查看 liuyong 的答案以获得蝙蝠的链接。
      • 确实看起来好像脚本已被删除。目前,使用旧版本是可行的,因为命令行界面仍然作为 Java 类的一部分存在,但如果这也是如此,我不会感到惊讶。
      【解决方案6】:

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

      【讨论】:

      • 您可以重新创建项目 build.xml 以使用新方法,但运行“android update project -p”。在您的项目目录中。
      猜你喜欢
      • 1970-01-01
      • 2013-07-03
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多