"Hello world"Android应用程序,文件尽可能少,没有IDE,只有文本编辑器

Bas*_*asj 22 java windows android android-studio android-gradle-plugin

在我使用的几乎所有语言(Python,C,C++等)中,只能用文本编辑器编写"hello world"应用程序,并从命令行(解释语言)或编译/构建运行它它来自命令行(编译语言),例如cl.exe helloworld1.cpp.

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

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

注意:我已经阅读了许多Android的hello world,但所有这些都涉及到使用IDE.

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

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

NB4:我在Windows平台上工作,基于这个答案,我已经在这里开始了一个"没有IDE的Hello World"github repo,但是我有一些问题,比如这个问题.另一方面,那里使用的方法似乎已被弃用......

Jon*_*win 20

是的,您可以通过命令行轻松完成所有操作(无需IDE参与,我保证).
这使用旧的忠实 Apache Ant.它并没有使用Gradle,这需要更多的工作.

总结一下

你键入的是(只有2行来产生一个apk):

    android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj 
Run Code Online (Sandbox Code Playgroud)

(这将产生一个Apache Ant名为构建文件build.xml文件,该文件是一样build.gradle文件,现在写一些代码,但TestActivity.java是存在的,并已经将编译)

    ant debug
Run Code Online (Sandbox Code Playgroud)

建立

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

  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 Development Kit.
JRE是Java运行时环境.

  1. 如果尚未安装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).

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

详情

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

决定放置项目的地方:

cd c:\android
mkdir antTest
cd antTest
Run Code Online (Sandbox Code Playgroud)

运行命令:

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)
Run Code Online (Sandbox Code Playgroud)

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

C:.
+---basj
    +---bin
    +---libs
    +---res
    ¦   +---drawable-hdpi
    ¦   +---drawable-ldpi
    ¦   +---drawable-mdpi
    ¦   +---drawable-xhdpi
    ¦   +---layout
    ¦   +---values
    +---src
        +---com
            +---android
                +---basj
Run Code Online (Sandbox Code Playgroud)

create project的详细输出:

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

嘿presto,你有一个Android apk!
添加了新结构:

C:.
????bin
?   ????classes
?   ?   ????com
?   ?       ????android
?   ?           ????basj
?   ????dexedLibs
?   ????res
?       ????drawable-hdpi
?       ????drawable-ldpi
?       ????drawable-mdpi
?       ????drawable-xhdpi
????gen
?   ????com
?       ????android
?           ????basj
Run Code Online (Sandbox Code Playgroud)

对于最终构建:

ant release
Run Code Online (Sandbox Code Playgroud)

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

如何签署已编译的apk

看看如何签署已编译的apk 以及这个
来自@ for3st的答案这里是该帖子的相关部分:

手动流程:

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

您需要生成一次密钥库并使用它来签署您的unsignedapk.使用JDK中提供的keytool %JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
Run Code Online (Sandbox Code Playgroud)

第2步或第4步:Zipalign

zipalign 这是Android SDK提供的工具,例如,%ANDROID_HOME%/sdk/build-tools/24.0.2/如果您想将apk上传到Play商店,则必须采用强制优化步骤.

zipalign -p 4 my.apk my-aligned.apk
Run Code Online (Sandbox Code Playgroud)

注意:使用旧的时候jarsigner,你需要zipalign 签署.使用新apksigner方法时,请签名之前进行(令人困惑,我知道).之前调用工作正常,zipalignapksigner因为apksigner保留APK对齐和压缩(不同jarsigner).

您可以使用以下方式验证对齐:

zipalign -c 4 my-aligned.apk
Run Code Online (Sandbox Code Playgroud)

第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
Run Code Online (Sandbox Code Playgroud)

并且可以通过验证

jarsigner -verify -verbose my_application.apk
Run Code Online (Sandbox Code Playgroud)

使用构建工具24.0.3和更新版本

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
Run Code Online (Sandbox Code Playgroud)

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

apksigner verify my-app.apk
Run Code Online (Sandbox Code Playgroud)

  • 早上.我不确定你是如何"侧载"apk,但如果你先在手机上删除调试,那么版本应该可以工作(我稍后再查看).从我的记忆中签名包需要大约六个命令,我会找到命令(以及后面的工具),但你可以用"android manual signing"搜索它们."阅读手机状态和身份",我会检查.但是你构建了apk,做得很好.嗯,你的问题有+8和-2票,多么奇怪,这是一个很好的问题. (2认同)

Bas*_*asj 6

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

完全归功于 JonGoodwin 的 回答,我只是在此处用一个createproject.bat 可以完成所有操作的批次对其进行了总结。

先决条件(有关它们的更多详细信息,请参阅他的回答):您需要安装这些工具:

  • Java JDK

  • Android SDK 工具

  • 阿帕奇蚂蚁

现在只需修改这个第一行createproject.bat设置自己的APPNAMEVENDORNAME和改变的路径adb.exekeytool.exe根据你的系统,等等。

然后运行createproject.bat。它将创建一个新文件夹helloworld。你会在.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
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3689 次

最近记录:

7 年,7 月 前