android命令行创建并打包项目

命令行创建Android项目

查看sdk信息

将目录更改到 Android SDK 的tools/的路径。

执行:

android list targets

这将打印您已经为您的 SDK 下载可用的 Android平台的列表。查找您要对其编译使您应用程序的平台的目标 id 的便笺。我们建议您选择可能的最高版本。您仍可以生成您的应用程序支持较旧的版本,但将生成目标设置为最新版本允许您优化您的应用程序的最新设备。

创建项目

命令

android create project --target <target_ID> --name <your_project_name>--path path/to/your/project --activity <your_activity_name> --package

命令示例

android create project --target 42 --name MyFirstApp --path F:\Workspace_Test\test\MyFirstApp --activity MainActivity --package com.example.myfirstapp

命令说明

42为sdk id

MyFirstApp为项目名称

F:\Workspace_Test\test\MyFirstApp为项目根目录

MainActivity为项目主Activity名称(即启动Activity)

com.example.myfirstapp为项目包名

命令行打包

1.生成R.java文件

创建gen目录

如果F:\Workspace_Test\test\MyFirstApp目录下没有gen目录,运行

 mkdir F:\Workspace_Test\test\MyFirstApp\gen

运行aapt命令生成R.java文件

切换到aapt.exe根目录

cd F:\AndroidSDK\android-sdk-windows\build-tools\19.0.0

生成R.java文件

aapt.exe package -f -m -J gen -S res -I F:\AndroidSDK\android-sdk-windows\platforms\android-Honeycomb\android.jar -M AndroidManifest.xml

命令说明

F:\AndroidSDK\android-sdk-windows\platforms\android-Honeycomb\android.jar这个要与之前的42对应

 

2.将java文件编译成class文件

如果没有bin目录,先用mkdir F:\Workspace_Test\test\MyFirstApp\bin进行创建

javac -encoding UTF-8 -target 1.7 -bootclasspath F:\AndroidSDK\android-sdk-windows\platforms\android-Honeycomb\android.jar -dbin src\com\example\myfirstapp\*.java gen\com\example\myfirstapp\R.java

命令说明

1.7为jdk版本

F:\AndroidSDK\android-sdk-windows\platforms\android-Honeycomb \android.jar与生成R.java文件对应

src\com\example\myfirstapp为java文件所在位置

gen\com\example\myfirstapp为R.java文件所在位置

3.生成dex文件(注意要使用绝对路径)

切换到 dx.bat根目录

cd F:\AndroidSDK\android-sdk-windows\build-tools\19.0.0

生成dex文件

dx.bat --dex --output=F:\Workspace_Test\test\MyFirstApp\bin\classes.dex F:\Workspace_Test\test\MyFirstApp\bin

命令说明

F:\Workspace_Test\test\MyFirstApp\bin\classes.dex为dex文件保存位置及名称

F:\Workspace_Test\test\MyFirstApp\bin为bin文件夹所在位置

4.生成资源包文件

切换到aapt.exe根目录

cd F:\AndroidSDK\android-sdk-windows\build-tools\19.0.0

生成资源包文件

如果没有assets文件夹,先用mkdir F:\Workspace_Test\test\MyFirstApp\assets进行创建

aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I F:\AndroidSDK\android-sdk-windows\platforms\android-Honeycomb\android.jar -F bin\resources

命令说明

F:\AndroidSDK\android-sdk-windows\platforms\android-Honeycomb\android.jar与生成R.java文件对应

5.生成未签名的apk包(apkbuilder.bat已废弃)

set classpath=F:\AndroidSDK\android-sdk-windows\tools\lib\sdklib.jar;.;%CLASSPATH%(设置sdklib.jar引用,在sdk根目录tools\lib\sdklib.jar)

java com.android.sdklib.build.ApkBuilderMain F:\Workspace_Test\test\MyFirstApp\bin\app.apk -v -u -z F:\Workspace_Test\test\MyFirstApp\bin\resources -f F:\Workspace_Test\test\MyFirstApp\bin\classes.dex -rf F:\Workspace_Test\test\MyFirstApp\src

命令说明

F:\Workspace_Test\test\MyFirstApp\bin\app.apk为生成的未签名APK所在位置和名称

只需修改所有的F:\Workspace_Test\test\MyFirstApp为项目根目录路径

6.签名

生成签名

keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore(20000为有限期(天))

签名apk

切换到sdk tools目录

cd F:\AndroidSDK\android-sdk-windows\tools

 

jarsigner -verbose -keystore F:\Workspace_Test\test\keystore\android.keystore -storepassandroid -signedjar F:\Workspace_Test\test\MyFirstApp\bin\app_signed.apk F:\Workspace_Test\test\MyFirstApp\bin\app.apk android.keysotre -digestalg SHA1-sigalg MD5withRSA

命令说明

Jdk1.6不加-digestalgSHA1 -sigalg MD5withRSA

Jdk1.7必须在后面加上-digestalgSHA1 -sigalg MD5withRSA

F:\Workspace_Test\test\keystore\android.keystore为keystore文件路径

android为keystore密码

F:\Workspace_Test\test\MyFirstApp\bin\app_signed.apk为签名后APK文件路径

F:\Workspace_Test\test\MyFirstApp\bin\app.apk为未签名APK文件路径

android.keysotre为keystore别名

7.对齐(优化应用)

zipalign -v 4 F:\Workspace_Test\test\MyFirstApp\bin\app_signed.apk F:\Workspace_Test\test\MyFirstApp\bin\app_signed_aligned.apk

命令说明

F:\Workspace_Test\test\MyFirstApp\bin\app_signed.apk为签名APK文件路径

F:\Workspace_Test\test\MyFirstApp\bin\app_signed_aligned.apk为对齐后的签名APK文件路径


文档地址:android命令行创建并打包项目

PS:这XXXX博客编辑器真不咋地,从word复制过来,居然会多空格和少空格,这倒不要紧,问题是不该多的多了,不该少的少了

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。