How to build Android application package (.apk) from the command line using the SDK tools
Hello all android developers, I just want to share my experience building android apk manually using sdk tools without using Eclipse. My original goal is motivated firstly by the desire to incorporate continuous integration aspect to Android development process and secondly to ditch the ADT eclipse plugin since the plugin auto-build process blocks Eclipse UI if you have large resources, assets in your Android project, and a slow computer like mine. I am using CruiseControl as my continuous integration tool.
Below is one of the many apk build processes:
Build process
The good thing about building manually your apk is that you don’t have to name your resources directory to res, you can name it anything you want.
You can find ant scripts in: <SDK_HOME>\platforms\android-1.5\templates\android-rules.xml
Step 1: Generate Resource java code and packaged Resources
aapt package -f -M ${manifest.file} -F ${packaged.resource.file} -I ${path.to.android-jar.library} -S ${android-resource-directory} [-m -J ${folder.to.output.the.R.java}]
Step 2: Compile java source codes + R.java
use javac
Step 3: Convert classes to Dalvik bytecodes
use dx.bat
dx.bat –dex –output=${output.dex.file} ${compiled.classes.directory} ${jar files..}
Step 4: Create unsigned APK
use apkbuilder
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file}
or
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}
-rf = resources required for compiled source files?
-rj = resources required for jar files
Step 6: Generate a key
use keytool
Step 7: Sign APK
use jarsigner
jarsigner -keystore ${keystore} -storepass ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}
Step 8: Publish
use adb
adb -d install -r ${signed.apk}
Inspecting your APK file:
aapt list -v latest.apk
Open questions:
1. Can you include more than one dex file in the apk?
2. Can you have dex file named other than classes.dex in the apk?
3. Does an apk have to have a packaged resource?
Note: If upon installing your app using adb you see this error code FAILED_INSTALL_DEXOPT then most likely that either you don’t have classes.dex or you don’t have a packaged resource in the apk
分享到:
相关推荐
在Android开发过程中,掌握命令行编译、签名和打包APK的方法是十分必要的。下面将详细介绍这个过程: 1. **生成R.java文件** R.java文件是Android编译系统自动生成的,它包含了应用程序资源的ID。使用aapt工具可以...
命令行反编译APK包classes.dex
反编译Apk得到Java源代码是Android应用开发中的一种重要技术,通过使用dex2jar和JD-GUI这两个工具,可以将apk文件反编译成Java源代码。下面是反编译Apk得到Java源代码的详细步骤: 一、使用dex2jar和JD-GUI反编译...
"一键反编译apk工具"就是这样一种实用工具,它简化了通常繁琐的反编译过程,通过bat命令行脚本实现自动化操作。下面将详细介绍这个工具及其相关知识点。 1. APK 文件结构:APK是Android应用的打包格式,包含.dex...
在Android应用开发领域,反编译技术是一种常用的方法,用于理解、分析或修改APK文件中的代码和资源。本文将详细介绍使用"apktool"、"dex2jar"和"jd-gui.exe"这三个工具进行反编译的过程。 首先,我们要了解的是APK...
标题中的“一键反编译apk文件”指的是使用特定的工具或程序来快速、简便地对Android应用程序(APK)进行反编译。APK文件是Android系统中用于分发和安装应用的打包格式,通常包含Java字节码、资源文件(如XML布局、...
本文将深入探讨“Android反编译apk工具包”,并介绍如何使用其中的`decodeapk`工具来解码APK文件,揭示其源代码和资源。 首先,我们需要明白APK是Android应用的安装包,它包含了Java字节码、资源文件(如布局、图片...
使用这两个工具,你可以实现以下步骤来反编译APK: 1. **解压APK**:使用ApkTool_GUI打开APK文件,选择解包选项,工具会自动处理资源文件和.dex文件。 2. **查看源代码**:解包完成后,可以浏览解压出来的目录结构...
在Android源码上编译APK是一个复杂但必要的过程,特别是当你需要开发具有系统权限的应用,例如修改系统时间或实现关机功能。以下是对整个流程的详细解释: 首先,你需要编译Android源码。这通常涉及到获取源码、...
"mac或linux下反编译apk的工具脚本"就是这样一个实用的工具,它整合了dex2jar工具,简化了反编译过程。 首先,我们要了解dex2jar。Dex2jar是一个Java工具,它可以将Dalvik Executable (.dex)文件转换为Java字节码的...
本文将详细讲解如何使用“dex2jar”和“JD-GUI”这两个工具来反编译APK文件。 1. **什么是反编译**: 反编译是将已编译的二进制代码转换回接近原始源代码的过程。在Android世界里,APK中的代码通常被编译为Dalvik ...
它采用先进的静态分析技术,提供了一个图形用户界面 (GUI) 和命令行接口 (CLI),支持批量处理,可以快速高效地反编译 APK 文件。jadx 的主要特点包括: 1. **准确的反编译结果**:jadx 努力保持原始代码的结构和...
### 反编译APK问题解释 在移动应用开发领域,特别是针对Android平台的应用开发过程中,反编译APK是一项非常重要的技能。本篇文章将详细解释反编译APK的核心概念、过程以及所需工具,帮助读者更好地理解并掌握这项...
6. **风险与道德**:尽管反编译APK在某些场景下是有益的,但未经许可对他人应用进行反编译可能侵犯版权,因此应遵循合法和道德的使用原则。 7. **工具介绍**: - **Apktool**:一个流行的APK反编译和打包工具,...
本篇文章将详细探讨如何使用"反编译apk工具",包括jd-gui.exe和dex2jar,这两个关键工具在APK分析中的作用。 首先,让我们了解一下什么是"反编译"。反编译是将已编译的二进制代码(如Java字节码或机器码)转换回源...
本文将详细介绍如何使用"反编译APK.rar"这个压缩包中的工具进行APK的反编译,以及相关知识点。 标题"反编译APK.rar"暗示了这是一个用于反编译Android APK文件的工具包。APK反编译通常是为了查看Java源代码、资源...