几乎所有我用过的语言(Python,C,C ++等),都可以用一个文本编辑器编写一个“hello world”应用程序,并从命令行(解释语言)或编译/构build它来自命令行(编译语言),例如cl.exe helloworld1.cpp
。
另一方面,每次我在做一个Android应用程序时,我需要使用Android Studio(在我的机器上很慢),使用IDE创build一个新项目等。
问题: 生成.apk Android应用程序的极简主义Java源代码文件/项目文件的最小数量是多less? 如何从命令行构build它? (并且永远不必打开IDE)
注意:我已经阅读了Android的许多hello world,但都涉及到使用IDE。
NB2:我正在寻找用Java编写的标准应用程序,而不是像Kivy这样的解决scheme。
NB3:即使一个IDE可能更方便编程一个Android应用程序,我也没有看到任何编译/构build大量文件的技术原因绝对需要使用GUI的IDE /编程。 有些人(比如我)更喜欢命令行和文本编辑器,而这种无IDE的解决scheme将会有所帮助。
NB4:我在Windows平台上工作,基于这个答案我开始了一个“没有IDE的Hello World”的github回购 ,但是我有一些这样的问题。 另一方面,在那里使用的方法似乎被弃用…
是的,你可以从命令行轻松地做到这一点(没有涉及的IDE
,我保证)。
这使用了旧的忠实的 Apache Ant 。 它不使用Gradle
,这需要更多的工作。
你输入的是( 只有2行来产生一个apk):
android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj
(这会生成一个名为build.xml
的Apache Ant
构建文件, 就像 build.gradle
文件一样 ,现在编写一些代码,但是TestActivity.java已经存在了并且将会被编译)
ant debug
( 注意 :从构建工具版本v26开始 ,“ android.bat
”命令已被弃用 ,所以请使用旧版本(请参阅下面的链接),在这种情况下不推荐使用 ,意味着完全删除!{ 淘气Google })。
如果尚未安装,请安装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运行时环境。
如果还没有安装Android SDK Tools
(例如installer_r24.4.1-windows.exe ,请参阅此答案 ),然后在SDK Manager GUI中取消选择所有内容并选择“Android SDK Build-Tools”(例如Android SDK Build-Tools 19.1
)+一个(或多个)平台(例如Android 4.1.2 (API 16) JELLY_BEAN
)。 为了证明你不需要Android Studio
,不会去下载它! (只有SDK)。
下载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
嘿presto,你有一个Android的apk!
添加了新的结构:
C:. ├───bin │ ├───classes │ │ └───com │ │ └───android │ │ └───basj │ ├───dexedLibs │ └───res │ ├───drawable-hdpi │ ├───drawable-ldpi │ ├───drawable-mdpi │ └───drawable-xhdpi ├───gen │ └───com │ └───android │ └───basj
对于最终构建:
ant release
如果您对Ant build.xml
或DEX
文件的更广泛的示例感兴趣,以及Android的更深入的工作,请看这里
看看如何签署一个已编译的apk ,也是如此
从@ for3st的回答可以看出这篇文章的相关部分:
您需要生成一次密钥库,并使用它来签署unsigned
apk。 使用在%JAVA_HOME%/bin/
找到的JDK提供的keytool
,
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign
是一个由Android SDK提供的工具 ,例如%ANDROID_HOME%/sdk/build-tools/24.0.2/
是一个强制优化步骤,如果你想上传apk到Play商店。
zipalign -p 4 my.apk my-aligned.apk
注意:在使用旧的jarsigner
您需要在zipalign
后进行zipalign
。 当使用新的apksigner
方法时,您可以在签名之前进行 (困惑,我知道)。 在apksigner
工作正常之前调用zipalign
,因为apksigner
保留APK
对齐和压缩(不像jarsigner
)。
您可以通过
zipalign -c 4 my-aligned.apk
使用jarsigner
,像keytool一样,在%JAVA_HOME%/bin/
找到JDK发行版 ,并像这样使用它:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
并可以用来验证
jarsigner -verify -verbose my_application.apk
Android 7.0
引入了APK Signature Scheme v2
,这是一种新的应用签名方案,可提供更快的应用安装时间,并可防止对APK文件进行未经授权的更改(请参阅此处和此处了解更多详细信息)。 因此, Google
实现了自己的apk
签名器: apksigner
(duh!)脚本文件可以在%ANDROID_HOME%/sdk/build-tools/24.0.3/
(.jar位于/lib
子文件夹中)。 像这样使用它:
apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name
并可以通过以下方式验证:
apksigner verify my-app.apk
为什么不从Android Studio创建一个空的项目? 它将拥有你需要的所有东西,以及你可以通过gradlew构建的gradle配置。 然后将其保存在硬盘的某个位置,并将其作为新项目的开始。
生成.apk Android应用程序的极简主义Java源代码文件/项目文件的最小数量是多少?
只有这两个文件才能建立android的Apk文件classes.dex
和AndroidManifest.xml
,看看这个博客文章的完整信息。
截至目前为止最小的apk大小是678字节。请检查此回购