“Hello world”Android应用程序,具有尽可能少的文件,没有IDE,只有文本编辑器总结设置细节如何签署已编译的apk手动过程:

在我使用过的几乎所有语言(Python,C,C++等)中,都可以仅使用文本编辑器编写“hello world”应用程序,并从命令行(解释型语言)运行它,或者从命令行编译/构建它(编译语言),例如。cl.exe helloworld1.cpp

另一方面,每次我做一个Android应用程序,我都需要使用Android Studio(在我的机器上很慢),使用IDE创建一个新项目,等等。

问:生成.apk Android 应用程序的最低 Java 源代码文件/项目文件数量是多少?如何从命令行构建它?(并且永远不必打开 IDE)

NB:我读过很多关于Android的hello world,但所有这些都涉及使用IDE。

NB2:我正在寻找用Java编写的标准应用程序,而不是像Kivy这样的解决方案。

NB3:即使IDE可能更方便地编写Android应用程序,我也没有看到任何技术原因,因为编译/构建许多文件绝对需要IDE /使用GUI进行编程。有些人(像我一样)只喜欢命令行和文本编辑器,这种无IDE的解决方案会有所帮助。

NB4:我正在Windows平台上工作,我已经根据这个答案在这里启动了一个“没有IDE的Hello World”github存储库,但我有一些问题,比如这个。另一方面,那里使用的方法似乎已被弃用...


答案 1

是的,您可以从命令行轻松完成所有操作(不涉及,我保证)。
这使用了旧的忠实Apache Ant。它不使用 ,这需要更多的工作。IDEGradle

总结

您键入的内容是(只需2行即可生成apk):

    android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj 

(这将生成一个名为 file 的构建文件,该文件与该文件类似。现在写一些代码,但测试活动.java已经存在,并将编译)Apache Antbuild.xmlbuild.gradle

    ant debug

设置

(注意:自构建工具 v26 以来,“”命令已弃用,因此请使用旧命令(请参阅下面的链接),在这种情况下已弃用意味着完全删除!{顽皮的谷歌})。android.bat

  1. 如果尚未安装,请安装Java JDK(例如,您可以使用jdk-8u151-windows-x64.exe),并确保定义了环境变量,例如:JAVA_HOME

    JAVA_HOME=C:\Program Files\Java\jdk1.8.0_112
    JAVA_PATH=C:\Program Files\Java\jre1.8.0_112\bin

JDK是Java开发工具包。
JRE 是 Java 运行时环境。

  1. 如果尚未安装(例如installer_r24.4.1-windows.exe,请参阅此答案),然后在SDK管理器GUI中,取消选择所有内容并选择“Android SDK构建工具”(例如)+一个(或多个)平台(例如)。为了证明你不需要,不打算下载它!(仅限 SDK)。Android SDK ToolsAndroid SDK Build-Tools 19.1Android 4.1.2 (API 16) JELLY_BEANAndroid Studio

  2. 下载 Apache Ant(例如 apache-ant-1.9.9-bin.zip)

细节

要使用 以下命令从命令行创建项目:Android SDK

确定放置项目的位置:

cd c:\android
mkdir antTest
cd antTest

运行以下命令:

C:\Android\sdk1\tools\android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj 
              ^
              |
--------------+ (here's where I keep an old version of tools (version 25 in my case)

以下是创建的目录结构(以及您需要构建的所有文件):

C:.
+---basj
    +---bin
    +---libs
    +---res
    ¦   +---drawable-hdpi
    ¦   +---drawable-ldpi
    ¦   +---drawable-mdpi
    ¦   +---drawable-xhdpi
    ¦   +---layout
    ¦   +---values
    +---src
        +---com
            +---android
                +---basj

创建项目的详细输出:

Created project directory: C:\Android\antTest\basj
Created directory C:\Android\antTest\basj\src\com\android\basj
Added file C:\Android\antTest\basj\src\com\android\basj\TestActivity.java
Created directory C:\Android\antTest\basj\res
Created directory C:\Android\antTest\basj\bin
Created directory C:\Android\antTest\basj\libs
Created directory C:\Android\antTest\basj\res\values
Added file C:\Android\antTest\basj\res\values\strings.xml
Created directory C:\Android\antTest\basj\res\layout
Added file C:\Android\antTest\basj\res\layout\main.xml
Created directory C:\Android\antTest\basj\res\drawable-xhdpi
Created directory C:\Android\antTest\basj\res\drawable-hdpi
Created directory C:\Android\antTest\basj\res\drawable-mdpi
Created directory C:\Android\antTest\basj\res\drawable-ldpi
Added file C:\Android\antTest\basj\AndroidManifest.xml
Added file C:\Android\antTest\basj\build.xml
Added file C:\Android\antTest\basj\proguard-project.txt

http://ant.apache.org/ 下载Apache Ant

有关设置,请参阅本教程:http://www.vogella.com/tutorials/ApacheAnt/article.html

另请参阅本教程:http://blog.vogella.com/2011/03/16/creating-android-applications-via-the-command-line-ant/

编写你的代码(Hello world)。

运行此命令,您可以从另一端获得一个Android Apk(称为TestActivity-debug.apk):

ant debug

嘿普雷斯托,你有一个机器人apk!
添加新结构后:

C:.
├───bin
│   ├───classes
│   │   └───com
│   │       └───android
│   │           └───basj
│   ├───dexedLibs
│   └───res
│       ├───drawable-hdpi
│       ├───drawable-ldpi
│       ├───drawable-mdpi
│       └───drawable-xhdpi
├───gen
│   └───com
│       └───android
│           └───basj

对于最终版本:

ant release

如果您对更广泛的示例感兴趣,或文件,以及Android的更深层次的工作原理,请查看此处Ant build.xmlDEX

如何签署已编译的apk

了解如何签署已编译的apk,以及
@for3st的答案,这是该帖子的相关部分:

手动过程:

步骤 1:生成密钥库(仅生成一次)

您需要生成一次密钥库,然后使用它来签署您的apk。使用由 JDK 提供的键工具unsigned%JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

第 2 步或第 4 步:Zipalign

zipalign,这是由Android SDK提供的工具,例如 是一个强制性的优化步骤,如果你想上传apk到Play商店。%ANDROID_HOME%/sdk/build-tools/24.0.2/

zipalign -p 4 my.apk my-aligned.apk

注意:使用旧版时,您需要在签名后进行。使用新方法时,您可以在签名之前进行签名(我知道令人困惑)。apksigner之前调用zipaignign工作正常,因为保留了对齐和压缩(与 )。jarsignerzipalignapksignerapksignerAPKjarsigner

您可以通过以下方式验证是否对齐:

zipalign -c 4 my-aligned.apk

第3步:签名和验证

使用构建工具 24.0.2 及更早版本

使用 jarsigner,它和 keytool 一样,也附带了 JDK 发行版,并像这样使用它:%JAVA_HOME%/bin/

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

并可以使用

jarsigner -verify -verbose my_application.apk

使用构建工具 24.0.3 及更高版本

Android 7.0介绍 ,这是一种新的应用程序签名方案,可提供更快的应用程序安装时间,并防止未经授权更改APK文件(有关详细信息,请参阅此处此处)。因此,实现了自己的apk签名者,名为:apksigner(duh!脚本文件可以在(.jar位于子文件夹中)中找到。像这样使用它:APK Signature Scheme v2Google%ANDROID_HOME%/sdk/build-tools/24.0.3//lib

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

并可以通过以下方式进行验证:

apksigner verify my-app.apk

答案 2

这是一种即用型方法,可以构建Android应用程序,甚至不必安装/打开Android Studio一次(这是一个很酷的IDE,但像我这样的一些人只是更喜欢文本编辑器+命令行)。您将在最后获得一个完全签名/对齐的APK,随时可以在Google Play商店中使用。

完全归功于JonGoodwin的答案,我只是在这里用一个可以完成所有事情的批处理来总结它。createproject.bat

先决条件(有关先决条件的更多详细信息,请参阅他的答案):您需要安装以下工具:

  • Java JDK

  • 安卓 SDK 工具

  • 阿帕奇蚂蚁

现在只需修改它的第一行,以设置您自己的 、 , 并根据您的系统更改 、 等 的路径。createproject.batAPPNAMEVENDORNAMEadb.exekeytool.exe

然后运行 。它将创建一个新文件夹 。你会在那里找到一些文件,可以构建你的应用程序!createproject.bathelloworld.bat


创建项目.bat

@echo off
SET APPNAME=helloworld
SET VENDORNAME=demo
SET SIGNKEYPASSWORD=abcdef12
SET ANTBATPATH="..\..\apache-ant-1.9.9-bin\bin\ant.bat"
SET ADBPATH="C:\Users\User\AppData\Local\Android\android-sdk\platform-tools\adb.exe"
SET KEYTOOLPATH="C:\Program Files\Java\jdk1.8.0_151\bin\keytool.exe"
SET JARSIGNERPATH="C:\Program Files\Java\jdk1.8.0_151\bin\jarsigner.exe"
SET ZIPALIGNPATH="C:\Users\User\AppData\Local\Android\android-sdk\build-tools\19.1.0\zipalign.exe"
SET ANDROIDBATPATH="C:\Users\User\AppData\Local\Android\android-sdk\tools\android.bat"

call %ANDROIDBATPATH% create project --target "android-16" --path %APPNAME% --activity %APPNAME% --package com.%VENDORNAME%.%APPNAME%

(
echo call %ANTBATPATH% debug
echo copy bin\*debug.apk .
) > %APPNAME%\1makedebug.bat


echo %ADBPATH% logcat > %APPNAME%\2adb_logcat.bat
echo %ADBPATH% devices > %APPNAME%\2adb_devices.bat
echo %ADBPATH% install -r %APPNAME%-debug.apk > %APPNAME%\2adb_install.bat
echo %ADBPATH% shell > %APPNAME%\2adb_shell.bat

(
echo call %ANTBATPATH% release
echo %JARSIGNERPATH% -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore "bin\%APPNAME%-release-unsigned.apk" app -storepass %SIGNKEYPASSWORD%
echo %ZIPALIGNPATH% 4 "bin\%APPNAME%-release-unsigned.apk" "%APPNAME%-release.apk"
echo pause
) > %APPNAME%\3makerelease_signed.bat

%KEYTOOLPATH% -genkey -keystore %APPNAME%\my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app -dname "cn=Unknown, ou=Unknown, o=Unknown, c=Unknown" -storepass %SIGNKEYPASSWORD% -keypass %SIGNKEYPASSWORD%

echo Finished.
pause

推荐