使用Java语言编写的Android应用程序从源码到安装包的整个过程,示意图如下,其中包含编译、链接和签名等:
1.生成R.java文件
直接使用aapt命令取得R.java文件,具体命令格式如下
aapt.exe package -m -J E:\project\mobile\LocalCalc\build\android\gen -M E:\project\mobile\LocalCalc\build\android\AndroidManifest.xml -S E:\project\mobile\LocalCalc\build\android\res -I E:\lvbang\technology\mobile\android-sdk_r16-windows\android-sdk-windows\platforms\android-8\android.jar
执行后在-J指定的目录下存在R.java文件了
其中参数说明如下
-M 指定AndroidManifest.xml(配置文件)的路径
-J 指定R.java生成路径
-S 指定资源文件所在目录,
-I 指定要包含的Android平台类库
详细的参数描述可以参照aapt的文档说明
2.将.aidl文件编译成.java文件
AIDL是Android系统提供的一种进程间调用的方式,类似于IPC调用,通过aidl工具将使用Android Interface Definition Language描述的.aidl文件编译成包含java接口类的.java文件,然后进程间遵循这些接口进行相互调用。.aidl文件一般与程序源码文件存放在一起。aidl工具的用法可以在命令行直接输入aidl,查看帮助。
3.编译java成.class文件
这个就没有什么好说的了,直接用javac,将class文件编译到制定目录下就可以了
4.将.class文件转换成一个.dex文件
>dx --dex --output=<project>\bin\classes.dex <project>\bin\
--output 指明.dex文件的生成路径;后面为class所在的路径
需要注意的是,这里不能加上包路径,否则会报不匹配的错误,可能在批处理中已将添加包路径。成功后便在指定路径下生成了.dex文件
5.使用aapt工具打包资源文件
>aapt package -f -M <project>\AndroidManifest.xml -S <project>\res -A <build>\assets -I <platform>\android-10\android.jar -F <project>\bin\resources.ap_
对照R.java文件的生成,可以看到参数发生了变化,少了-m 和 -J,如果看aapt用法中的描述就知道,-m和-J是结对出现的,用以指明R.java文件的生成路径。-M、-S、-I之前都有提到,这里不再介绍。-F的作用是指明打包后的资源文件的路径,在最后一定要加上文件名,最好加上扩展名。这里参考Eclipse中自动编译时制定的.ap_后缀名。
6.使用apkbuilder生成未签名的apk安装文件
>apkbuilder <build>\test.apk -v -u -z <build>\resources.ap_ -f <build>\classes.dex -rf <project>/src
其中,apkbuilder后面的路径是生成的apk安装文件的路径,
-v参数的作用是指明执行中输出必要信息,
-u参数表示生成的是未签名的安装包,
-z表明打包了的资源文件的路径,
-f指明了.dex文件的路径,
-rf指明了源文件的目录。
详见帮助
(7)使用jdk中的jarsigner对apk安装文件进行签名
签名的目的是保证应用程序的开发者的唯一性,签名需要的东西除了jarsigner工具外还有密钥文件,即.keystore文件,
>jarsigner -keystore <key>\debug.keystore -storepass android -keypass android -signedjar <build>/test.apk <build>\test.apk androiddebugkey
-keystore 指明密钥文件的位置,
-storepass是用于密钥库完整性的口令,
-keypass是专用密钥的口令,
-signedjar 指明签完名的apk文件的路径,紧接着的是需要签名的apk的路径,最后面是密钥的别名。
debug.keystore的name和passwords信息是在SDK文档中找到的,具体内容如下:
The SDK tools create the debug keystore/key with predetermined names/passwords:
•Keystore name: "debug.keystore"
•Keystore password: "android"
•Key alias: "androiddebugkey"
•Key password: "android"
•CN: "CN=Android Debug,O=Android,C=US"
打包完成。
- 大小: 103.3 KB
分享到:
相关推荐
`apktool`是一个开源的Android反编译工具,它能够帮助我们解包APK,反编译其中的XML和布局文件(layout),并提供重新打包和签名的功能,以实现对APK的分析和修改。 首先,`apktool`的基本使用流程如下: 1. **...
这篇我们将深入探讨Android Studio必备的编译打包工具——Gradle及其相关知识。 **Gradle** Gradle是一种基于Groovy语言的开源构建自动化系统,其设计目标是兼顾灵活性和性能。在Android Studio中,Gradle通过灵活...
这两个工具在Android应用的反编译和签名过程中扮演着关键角色。 ApkTool是一款流行的开源工具,专门用于反编译Android应用程序(APK)文件。它允许开发者解压APK,查看并编辑其资源文件,如XML布局、图片、字符串...
apktool是一个强大的Android反编译工具,它不仅可以解包APK文件,还能将其重新打包并签名,使其可以重新安装。Apktool能够解析APK的资源文件,包括XML布局、图片、字符串资源等,并将它们以原始格式展示,方便分析和...
在Android开发过程中,有时我们需要对应用进行批量打包,特别是在测试、发布或者构建多个版本时,手动逐一打包会非常耗时且容易出错。此时,利用Android Shell命令进行批量打包就显得尤为重要。Android Shell批量...
然而,由于自动反编译的过程可能会出现一些语法错误,可能需要手动修正后才能正常运行。 在反编译过程中,需要注意以下几点: 1. 法律风险:未经授权的反编译可能侵犯他人的知识产权,所以在进行反编译前,确保你有...
通过在build.gradle文件中定义不同的flavors,可以在编译时自动处理不同渠道的差异,无需手动修改APK。 2. 替换资源:在Android P中,动态替换APK资源可能会导致权限问题。因此,建议将渠道相关的资源配置在不同的...
4. **打包和编译**:使用JFXMobile Plugin的命令行工具(如`gradlew`)进行打包。这会生成一个适用于Android的特定版本的JavaFX应用,同时也会处理相关的资源和依赖。 5. **签名和发布**:在生成的APK文件准备好后...
这个“Android反编译工具合集”提供了几个关键的工具,帮助我们完成这样的任务。现在,我们将深入探讨这些工具的功能和使用方法。 1. **Apktool**: Apktool是一款强大的Android资源反编译工具,由Ivo Labs开发。...
“打包”和“编译”是Android应用开发中的关键步骤,打包是将源代码、资源和依赖合并成一个可安装的APK文件,编译则是将Java源码转换为Dalvik字节码或ART格式。 在文件名称列表中,“AppChannelizer”很可能是这个...
使用`apk反编译和回编译.bat`批处理脚本,用户可以方便地执行反编译和回编译的过程,而无需手动运行命令行工具。这个脚本通常会包含以下步骤: 1. 反编译:首先,通过Apktool将APK文件解包,提取出其中的资源文件和...
AndroidKiller提供了一键签名和打包功能,省去了手动签名的繁琐步骤。 4. **资源查看**:除了源代码,AndroidKiller还能显示APK中的资源文件,如XML布局、图片、字符串等,方便用户查看和编辑。 5. **代码分析**:...
在Android应用开发中,多渠道打包是一个常见的需求,特别是在商业化分发和推广过程中。它允许开发者为不同的分发渠道创建定制的应用程序包(APK),每个渠道包含特定的渠道ID或者参数,以便追踪应用程序的来源和下载...
批量渠道打包工具是开发者在发布应用时的重要辅助工具,它极大地提高了效率,避免了手动为每个渠道创建单独APK的繁琐过程。传统的打包方式中,开发者需要在AndroidManifest.xml文件中更改渠道标识,然后重新构建APK...
2. 编译过程中可能会遇到依赖问题,如libavcodec、libavformat等,需要手动下载或通过NDK的预编译库解决。 3. 编译完成后,VLC库将会生成在指定的输出目录下。 ### 6. 集成VLC到你的应用 将编译好的VLC库添加到你...
“AndroidKiller”是一款简化了反编译流程的工具,它集成了常见的反编译组件,如apktool、dex2jar等,使得用户无需手动执行多个步骤即可完成APK的反编译工作。这大大提高了效率,降低了使用门槛,尤其对新手来说更为...
2. **Apktool**:这是一个强大的Android资源解包和打包工具,它可以解析APK的资源文件,包括XML布局、图片等,并将它们还原为原始格式。这对于理解应用的界面结构和资源引用非常有帮助。 3. **JD-GUI**:这是一款...
在传统的打包方式中,这需要在构建配置中手动修改每个渠道的标识,然后重新编译。批量打包工具则简化了这一流程。 核心步骤如下: 1. **创建渠道文件**:工具要求提供一个名为`channel`的文件,其中包含各渠道的...
Gradle 4.4编译插件确保了与Android Studio 3.0的兼容性,能够处理资源的编译、依赖管理、APK打包等一系列构建过程。 4. **绿色纯净版**:描述中的“绿色纯净”可能指的是该版本的Gradle插件没有包含任何第三方广告...