`

Android手动编译打包

阅读更多
使用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
分享到:
评论

相关推荐

    Android命令行手动编译打包详解

    Android 命令行手动编译打包详解!!学习Android必备书籍!!

    Android ZXing 2.3.0源码及编译后的core-2.3.0.jar和android-integration-2.3.0.jar打包亲测可用

    最近2013-11-29(Nov 29, 2013)更新的Android ZXing 2.3.0 release源码及编译后的core-2.3.0.jar和android-integration-2.3.0.jar打包亲测可用,如大家有兴趣自己编译的话请参考下面的教程。 下面我写的教程修改自...

    java反编译工具jd-gui

    java反编译工具jd-gui 批量反编译工具是将java语言打包的执行文件回滚为java代码,同时支持单文件反编译和批量操作 支持多种格式,可直接反编译类文件,或j2ee的ear分发包,甚至支持直接反编译android应用 批量反...

    android 上二维码识别的zxing jar包。直接可以用 (免费)

    android 上二维码识别的zxing jar包。直接可以用 (免费) zxing官网提供的项目是一整个完整的app,如果要使用。需要自己手动删减,修改,编译打包。 这里提供的就是删改好之后直接可以用的jar包

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    深入理解Android之Gradle.pdf

    现在,搞APP 开发居多,编译/打包等问题立即就成痛点了。比如:  一个APP 有多个版本,Release 版、Debug 版、Test 版。甚至针对不同APP Store 都有不同的版本。在以前ROM 的环境下,虽然可以配置Android.mk,但是...

    Android apk无法安装及闪退问题解决办法

    主要介绍了Android apk无法安装及闪退问题的相关资料,这里对闪退问题进行详解及解决步骤的详细介绍,需要的朋友可以参考下

    刷机原理02 Android升级包update.zip的生成过程分析.wps

    可以将新增的应用拷贝到我们新建的update/system/app/下(system目录是事先拷贝编译源码后生成的system目录),打包并签名后,拷贝到SD卡就可以使用了。 第二种制作方式:命令制作。Android源码系统中为我们提供了...

    Android代码-酷安控制台

    为了统计准确性,项目中没有添加 google-services.json 请手动添加以完成编译。 其他贡献 图标来自酷安基佬 ArchieLiu 交易现场:(1) (2) 帮助我们 欢迎提交 Issue 以及 PR,以帮助这个项目做得更好。 LICENSE ...

    国人开发的自动构建工具 XMake.zip

    支持windows、mac、linux、ios、android等平台,自动检测不同平台上的编译工具链(也可手动配置) 编译windows项目采用原生vs的工具链,不需要使用cygwin、mingw(当然这些也支持) 支持自定义平台编译配置...

    Rk3399 获取系统ROOT权限补丁7.1与8.1.rar

    获取root权限补丁说明: 本补丁是基于RK3399验证通过!!! 1.在device/rockchip/common...) 这部分修改可以在编译完成后,在out目录来修改,修改完后再打包。 6、更新固件后使用测试apk或者其他apk验证root权限

    Haxe 3.0垮平台开源编程语言

    Haxe分别为Windows、Mac OSX以及Linux安装程序进行打包,当然如果安装包出现问题或者洁癖者也可以进行手工安装。安装包及手动安装指南尽在下载页面。 Haxe能做什么? 使用Haxe开发的程序可以被编译成: ...

    Android应用源码结合droidwall防火墙的流量监控.zip

    项目结合了droidwall防火墙,主要功能是分程序gprs和wifi流量实时监控、防火墙、流量排行,本项目依赖appcompat_v7_2库,已经一起打包了,导入的时候两个项目一起导入就会自动引用,如果没有自动引用需要手动设置...

    安卓毕业设计app项目源码6-CodePushCN:CodePush中文翻译

    他们通过打包管理器打包在一起并且他们被构建在两个具体的应用包上(例如:安卓.apk和IOS.ipa),一旦APP发布,更新JS代码(处理bug或者添加新的功能)和图片就需要你去重新编译和打包整个应用包,当然,那还会包括...

    sample-gradle-project01:只是另一个存储库

    如果您要在任何平台上构建、测试、发布和部署软件,Gradle 提供了一个灵活的模型,可以支持从编译和打包代码到发布网站的整个开发生命周期。 Gradle 旨在支持跨多种语言和平台(包括 Java、Scala、Android、C/C++ ...

    安卓加固基础

    这些隐私信息是明文,对于软件来说是想当不安全的,如果我们能在打包时对Dex中的字符串加密替换,并在运行时调用解密,这样就能够避免字符串明文存在于Dex中。虽然,无法完全避免被破解,但是加大了逆向提取信息的...

Global site tag (gtag.js) - Google Analytics