当前位置: 首页 > 面试题库 >

“ Hello world” Android应用程序,文件越少越好,没有IDE,并且只有文本编辑器

柳韬
2023-03-14
问题内容

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

另一方面,每次执行Android应用程序时,都需要使用Android Studio(这在我的计算机上运行缓慢),使用IDE创建新项目等。

问题: 生成.apk Android应用程序的最小限度的Java源代码文件/项目文件最少? 如何从命令行构建它?(和 从未 有打开IDE)

注意:我已经阅读了许多关于Android的世界,但是所有这些都涉及使用IDE。

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

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

NB4:我的工作在Windows平台上,我已经开始了在这里的“Hello World没有IDE”
GitHub库基于


问题答案:

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

您输入的是( 只需两行 即可生成apk):

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

(这将生成一个Apache Ant名为build.xmlfile 的构建文件,该文件 类似于
build.gradle文件。现在编写一些代码,但是TestActivity.java已经存在并将进行编译)

    ant debug

建立

注意* :自Build Tools v26起 ,“ android.bat”命令已 弃用
,因此请使用旧的命令(请参阅下面的链接),在这种情况下 已弃用 ,意味着已 完全 删除!{ 顽皮的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开发工具包。
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

运行命令:

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

嘿,请告诉我,您有一个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

请参阅如何注册的已编译的apk ,也该
由一个答案@ for3st这里有一个相关的一块帖子:

手动流程:

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

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

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

步骤2或4:Zipalign

zipalign
%ANDROID_HOME%/sdk/build-tools/24.0.2/如果您要将apk上传到Play商店,则该工具是AndroidSDK提供的工具,例如,该工具是强制性的优化步骤。

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

注意: 使用旧的时候jarsigner,你需要zipalign 签字。使用新apksigner方法时,您需要 签名
之前进行操作 (我知道这很混乱)。before
调用可以很好地工作,zipalign``apksigner因为它可以apksigner保持APK对齐和压缩(与不同jarsigner)。

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

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 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


 类似资料:
  • 前面提到多进程的并行可以提高并发度,那么进程是越多越好?一般遇到这种问题都回答不是,事实上,很多大型项目都不会同时开太多进程。 下面以支持100K并发量的Nginx服务器为例。 举个例子: Nginx Nginx是一个高性能、高并发的Web服务器,也就是说它可以同时处理超过10万个HTTP请求,而它建议的启动的进程数不要超过CPU个数,为什么呢? 我们首先要知道Nginx是Master-worke

  • 本文向大家介绍没有IDE的Android编程,包括了没有IDE的Android编程的使用技巧和注意事项,需要的朋友参考一下 示例 这是一个简约的Hello World示例,仅使用最基本的Android工具。 要求和假设 Oracle JDK 1.7或更高版本 Android SDK工具(仅命令行工具) 本示例假设使用Linux。您可能必须针对自己的平台调整语法。 设置Android SDK 解压缩

  • 我正在测试我的应用程序,它在我的手机上有一个编辑文本,运行良好。然而,我相信,一旦我连接到另一台运行Android5.1的设备,该应用程序就不允许我在编辑文本上键入任何内容。有没有办法解决这个问题?

  • 我正在使用Firebase来保存我的数据。我试图在活动中分离Firebase方法和我的方法。例如,我已经创建了一个名为"Firebase method odsHelper"的类,在那里我想编写所有的Firebase方法。例如,"getAllUser"方法应返回列表中的所有用户。我唯一的问题是它不起作用。 我不知道我做错了什么,所以如果你们能帮我。 碎片 FirebaseMethodHelper类

  • 我是android开发的新手,我的应用程序在调用特定活动时会崩溃。(“governanaceactivity”是活动的名称)当我从MainActivity调用治理活动时,我的应用程序会崩溃,其他菜单工作得很好,唯一的问题是这个活动。 这是GovernanceActivity **所有其他活动都很好,只有这个活动有问题 这是我的宣言** Blockquote 05-21 03:09:53.747 1

  • 问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥