如何在命令行上不使用 Gradle 构建 Android apk?

问题描述 投票:0回答:4

我写了一个 Android 应用程序,它不使用任何依赖项或模块,只有一个活动,并且只有一个布局文件。

如何在不使用 Gradle(或其他“构建系统”或“依赖管理”软件)的情况下在命令行上构建我的应用程序的 apk 文件?

android gradle build apk
4个回答
44
投票

如果您不想使用 ant/gralde 来构建,请使用以下步骤手动构建您的 apk。但你必须至少安装 Android SDK。

  • R.java
    创建

    aapt
  • 使用

    javac
    将所有java源代码编译为
    *.class

  • 使用

    dx
    将所有
    *.class
    转换为
    dex
    文件,例如输出为
    classes.dex

  • 从资产、资源和

    AndroidManfiest.mk
    创建APK的初始版本,例如输出是
    MyApplication.apk.unaligned

  • 使用

    aapt
    将第3步生成的
    classes.dex
    添加到
    MyApplication.apk.unaligned

  • 使用 jarsigner 来签名

    MyApplication.apk.unaligned
    使用调试或释放密钥

  • 使用

    zipalign
    对齐最终的 APK,例如如果使用发布密钥签名,则输出为
    MyApplication-debug.apk
    MyApplication-release.apk

  • 完成

我已经创建了一个示例脚本来完成上面的所有事情,请参阅here

其实有些文章已经讨论过这个话题,见以下链接

https://www.apriorit.com/dev-blog/233-how-to-build-apk-file-from-command-line

https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/


3
投票

尝试使用命令行支持库构建应用程序。 https://github.com/HemanthJabalpuri/AndroidExplorer


2
投票

alijandro 给出了完美的答案。我设法编写了简单的 ANT 脚本,它使用 AdMob 构建了生产 APK,并且没有使用 gradle。一些有用的评论:

  1. 如果你想混淆类,你必须对编译的类进行 jar(在

    javac
    dx
    步骤之间)并在其上运行
    proguard

  2. 对于

    AdMob
    ,您必须从 zip 存档中提取以下 jar(例如
    C:\Users\<User>\AppData\Local\Android\sdk\extras\google\m2repository\com\google\android\gms\play-services-ads\10.2.6\play-services-ads-10.2.6.aar
    ):

    • play-services-ads-10.2.6.jar
    • play-services-ads-lite-10.2.6.jar
    • play-services-base-10.2.6.jar
    • play-services-basement-10.2.6.jar
    • play-services-clearcut-10.2.6.jar
    • play-services-gass-10.2.6.jar
    • play-services-tasks-10.2.6.jar

这些档案应该通过

javac
dx

  1. 对于
    AdMob
    还有几个额外的简单配置步骤

Gradle
对 android 项目造成了很多混乱,因此对于即将投入生产的项目来说,自己的脚本看起来像是一个单一的解决方案


2
投票

不久前,我对 Android Studio 和 Gradle 感到沮丧后偶然发现了这个线程。受到 alijandro 的回答和 authmane512 的这个模板的启发,我编写了一系列脚本来在没有任何外部构建系统的情况下用 Java 或 Kotlin 编译 Android 应用程序(包括依赖项/包)。

链接:https://github.com/jbendtsen/tiny-android-template

这里涉及一些 DIY,但鉴于这是 Gradle 之类的东西可以为您做的事情,我认为了解它是有用的。此外,它就像 wayyyy 不那么慢,而且您可以更好地控制应用程序的组装方式。

© www.soinside.com 2019 - 2024. All rights reserved.