[原] Android自动打包之命令行打包

Android自动打包流程详细图:

总结为以下几个步骤:

1. 生成R文件

2. Java代码编译成class文件

3. class文件生成dex文件

4. 打包资源

5. 生成apk

6. 创建密匙

7. 签名apk

下面用Ubuntu命令行来打包,流程如下:

1. 生成R文件,命令如下:

aapt package -f -m -J $BUILD_SOURCE_PATH/$ANDROID_GEN \

-A $BUILD_SOURCE_PATH/$PACKAGE_RESOURCE_FILE \

-S $BUILD_SOURCE_PATH/$ANDROID_RESOURCE_DIRECTORY \

-I $BUILD_API_LEVEL_JAR \

-M $BUILD_SOURCE_PATH/$MANIFEST_FILE

-f 如果编译生成的文件已经存在,强制覆盖。
-m 使生成的包的目录存放在-J参数指定的目录
-J 指定生成的R.java 的输出目录路径
-S 指定res文件夹的路径

-I 指定某个版本平台的android.jar文件的路径

-A 指定assert文件夹的路径

2.将Java代码编译成class文件,命令行如下:

javac -encoding UTF-8 \

-target 1.7 \

-bootclasspath $BUILD_API_LEVEL_JAR \

-d $BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_BIN_CLASSES \

$BUILD_SOURCE_PATH/$ANDROID_GEN/com/clarck/httpclientnew/R.java \

$BUILD_SOURCE_PATH/src/com/clarck/httpclientnew/*.java

-encoding <编码>        指定编码格式

-target <版本>               生成特定 VM 版本的类文件
-bootclasspath <路径>        覆盖引导类文件的位置
-d <目录>                    指定存放生成的类文件的位置
-sourcepath <路径>           指定查找输入源文件的位置

3. class文件生成dex文件,命令行如下:

dx --dex --output=$BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_CLASSES_DEX \

$BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_BIN_CLASSES

--output=<要生成的classes.dex路径> <要处理的class文件的路径>

4. 打包资源,命令行如下:

aapt package -f -M $BUILD_SOURCE_PATH/$MANIFEST_FILE \

-S $BUILD_SOURCE_PATH/$ANDROID_RESOURCE_DIRECTORY \

-A $BUILD_SOURCE_PATH/$PACKAGE_RESOURCE_FILE \

-I $BUILD_API_LEVEL_JAR \

-F $BUILD_SOURCE_PATH/$ANDROID_BIN/byreadreader

-f 如果编译生成的文件已经存在,强制覆盖
-M 指定AndroidManifest.xml的路径
-S 指定res文件夹路径

-I 指定某个版本平台的android.jar的路径

-F 指定输出文件完整路径

5. 生成apk,命令行如下:

apkbuilder $BUILD_APK_PATH/$BUILD_APK_NAME \

-v -u -z $BUILD_SOURCE_PATH/$ANDROID_BIN/byreadreader \

-f $BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_CLASSES_DEX \

-rf $BUILD_SOURCE_PATH/$ANDROID_SRC

-v Verbose 显示过程信息
-u 创建一个无签名的包
-z 指定apk资源路径
-f 指定dex文件路径

-rf 指定源码路径

6. 创建密匙,命令行如下:

keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore

-genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias       产生别名
-keyalg      指定密钥的算法 
-validity    指定创建的证书有效期多少天
-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中)

7. 签名apk,命令行如下:

jarsigner -verbose -keystore release.keystore -storepass [email protected]#$%^ -keypass [email protected]#$%^ -signedjar $BUILD_APK_PATH/$BUILD_RELEASE_APK_NAME $BUILD_APK_PATH/$BUILD_APK_NAME release

-verbose  签名/验证时输出详细信息
-keystore 密钥库位置
-storepass          用于密钥库完整性的口令
-keypass            专用密钥的口令(如果不同)
-signedjar          已签名的 JAR 文件的名称
(第一个apk是签名之后的文件, 第二个apk是需要签名的文件)

注:关于混淆代码,只需要在project.properties中指定用來混淆的.pro文件即可。

以上命令可以综合使用一个shell脚本来执行,具体demo详见:https://github.com/clarck/CommandAutoBuild

[原] Android自动打包之命令行打包

时间: 2024-08-06 07:02:40

[原] Android自动打包之命令行打包的相关文章

两分钟学会Android平台NDK编程(无须Eclipse和cygwin,可使用命令行打包多个so)

之前在进行cocos2dx开发时,已经详细介绍了如何将win32的c++代码移植到Android平台,当再次回顾时,发现一些基础的东西理解并不是很彻底,今天使用Android NDK提供的一个例子做一个简单的移植.在进行该demo前,请确认你已经配置了Android开发环境和安装了最新的Android NDK. 1.创建Android项目 创建一个Android项目 , 包名是com.example.hellojni,创建一个Activity作为程序进入的Acitivity,命名为HelloJn

android 用命令行打包生成 apk

android 用 ant 进行 build. android sdk 下面的 tools/ant 下面的 build.xml 就是 build 的整个过程. 其中的 build 参数可在 ant.properties 文件中进行 override.也可以自己定制 build 的脚本. 用 ant build 非常简单 1)安装 ant 并加入到系统 path 变量中 2)为项目生成 build.xml android update project -p . 3)生成 debug 版本 ant

命令行打包以及jenkins使用

首先命令行打包我用的是xcodebuild以及xcrun两个工具.相当简单 打包命令:  xcodebuild -target <工程名字> -configuration Release clean build   //首先clean以及编译工程 xcrun -sdk iphoneos PackageApplication -v <app路径> -o <ipa包路径>.ipa //将编译出来的app转为ipa包 jenkins的使用 启动tomcat下的jenkins

Android开发执行adb 命令行命令

1.在Android开发中调用adb命令进行应用安装,将应用安装到 /system/app目录下 /** * install the app in use adb command,this style is silent * */ private void adbInstallTheAPP(){ //adb push core code String command = "cp" + "the android apk file path" + "/syst

Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包

官方文档:https://developer.android.com/tools/publishing/app-signing.html 1. 默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore 2. Release Mode 签名: build.gradle: android { signingConfigs { releaseConfig { keyAlias 'stone' keyPassword 'mypwd' storeFile

【ASP.NET】利用Nuget打包package——命令行方式

通过命令行 官方说明,可以参考:creating-and-publishing-a-package 如果你希望可以使用图形界面的方式,请参考这篇文章 打包dll 使用如下的命令: nuget spec MyAssembly.dll 会生成MyAssessmbly.nuspec文件,与GUI方式中选择Edit Metadata生成的xml文件一致. 打开*.nuspec文件,可以看到结构如下的文件 <?xml version="1.0"?> <package >

使用命令行打包 nuget 包

对于那些不打算涉及这么复杂而又想制作自己的 nuget 包的园友们,我是推荐使用 Nuget Package Explorer 来制作的.关于这个图形化的 nuget 包管理软件的使用,博客园内有相关的文章,大家可以搜索看看. 好,回归正题.但是我们都知道,图形化最大的问题就是自动化不高. 这是我其中的一个 nuget 包,可以看见里面的文件还是比较多的,那么我每一次重新编译,需要发布新版本的时候,就得把里面大部分的文件都替换成新的文件.每次都一个一个的替换,烦啊.而且有时候还得担心有没有替换少

xcode使用命令行打包ipa

打包是利用xcodebuild在终端输入命令行,最终输出ipa包: 第一步:进入工程目录配置好证书和bundleID 这个是和你的证书配套的 第二步:用真机测试,确保能够运行成功,因为真机能过测试成功,那说明打包ipa才是可行的 第三步:打开终端输入以下命令  cd  +工程文件绝对路径 (cd是进入工程文件的命令)关于终端使用的命令还请自行百度 eg: 第四步:在第三步正确的前提下,输入xcodebuild clean  确保文件没有错误 eg: 当显示下面的信息时,表示操作成功,可以继续下一

xcodebuild命令行打包发布ipa

配置好证书,然后在命令行转到项目目录 1.清除 EthantekiiMac:CTest ethan$ xcodebuild clean 2.编译 EthantekiiMac:CTest ethan$ xcodebuild -target CTest -configuration Release 3.打包ipa EthantekiiMac:CTest ethan$ xcrun -sdk iphoneos  PackageApplication -v /Volumes/work/buildComma