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 }).
安装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运行时环境.
如果尚未安装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).
要使用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 以及这个
来自@ for3st的答案这里是该帖子的相关部分:
您需要生成一次密钥库并使用它来签署您的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)
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)
使用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)
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)
这是一种无需安装/打开 Android Studio 甚至一次即可构建 Android 应用程序的现成方法(这是一个很酷的 IDE,但像我这样的一些人只是更喜欢文本编辑器 + 命令行)。最后,您将获得一个完全签名/对齐的 APK,准备好在 Google Play 商店中使用。
完全归功于 JonGoodwin 的
回答,我只是在此处用一个createproject.bat 可以完成所有操作的批次对其进行了总结。
先决条件(有关它们的更多详细信息,请参阅他的回答):您需要安装这些工具:
Java JDK
Android SDK 工具
阿帕奇蚂蚁
现在只需修改这个第一行createproject.bat设置自己的APPNAME,VENDORNAME和改变的路径adb.exe,keytool.exe根据你的系统,等等。
然后运行createproject.bat。它将创建一个新文件夹helloworld。你会在.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 次 |
| 最近记录: |