在我使用过的几乎所有语言(Python、C、C++ 等)中,都可以仅使用文本编辑器编写“hello world”应用程序并从命令行(解释性语言)或编译/构建运行它它来自命令行(编译语言),例如cl.exe helloworld1.cpp .
另一方面,每次我在做一个 Android 应用程序时,我都需要使用 Android Studio(在我的机器上很慢),使用 IDE 创建一个新项目等。
问题:生成 .apk Android 应用程序的最少数量的极简 Java 源代码文件/项目文件是多少? 如何从命令行构建它? (而且永远不必打开 IDE)
注意:我读过很多 hello world for Android但所有这些都涉及使用 IDE。
NB2:我正在寻找用 Java 编写的标准应用程序,而不是 Kivy 等解决方案。
NB3:即使 IDE 对 Android 应用程序进行编程可能更方便,但我看不出有任何技术原因表明编译/构建大量文件绝对需要 IDE/使用 GUI 进行编程。有些人(像我一样)只喜欢命令行和文本编辑器,这种无 IDE 的解决方案会很有帮助。
NB4:我在 Windows 平台上工作,我已经开始了 "Hello World without IDE" github repo here基于 this answer ,但我有一些问题,例如 this one .另一方面,那里使用的方法似乎已被弃用......
最佳答案
是的,您可以轻松做到所有 从命令行(不涉及 IDE,我保证)。
本用老忠实Apache Ant .确实如此 不是 使用 Gradle ,这需要更多的工作。
总结
您输入的是( 只需 2 行 即可生成一个 apk):
android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj
Apache Ant 构建文件,名为 build.xml 文件,它类似于 build.gradle 文件。现在编写一些代码,但 TestActivity.java 已经存在并将编译) ant debug
android.bat ”命令是 不推荐使用 因为构建工具 v26 见下面的旧链接)意味着 完全 已删除!{naughty Google})。JAVA_HOME环境变量 is defined例如。:Android SDK Tools (例如 installer_r24.4.1-windows.exe ,请参阅 this answer )如果还没有完成,然后在 SDK Manager GUI 中取消选择所有内容并选择“Android SDK Build-Tools”(例如 Android SDK Build-Tools 19.1 )+一个(或多个)平台(例如Android 4.1.2 (API 16) JELLY_BEAN)。证明你不需要Android Studio ,本来不打算下载的! (仅限 SDK)。 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
ant debug
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 的更深层次的工作原理 hereunsigned .apkkeytool provided by the JDK在 %JAVA_HOME%/bin/ 中找到keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign which is a tool provided by the Android SDK发现于例如%ANDROID_HOME%/sdk/build-tools/24.0.2/如果您想将 apk 上传到 Play 商店,这是一个强制性的优化步骤。zipalign -p 4 my.apk my-aligned.apk
jarsigner您需要zipalign签约后。使用新时apksigner你在签名之前这样做的方法(令人困惑,我知道)。 Invoking zipalign before apksigner works fine因为 apksigner蜜饯APK对齐和压缩(与 jarsigner 不同)。zipalign -c 4 my-aligned.apk
jarsigner 与 keytool 一样,comes with the JDK distribution在 %JAVA_HOME%/bin/ 中找到并像这样使用它: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 文件进行未经授权的更改(有关更多详细信息,请参阅 here 和 here)。因此,Google实现了他们的 own apk signer called: apksigner (呸!)%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
关于java - "Hello world"Android 应用,文件尽可能少,没有 IDE,只有文本编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167769/
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R