Android笔记34:命令行打包编译.apk 包含第三方.jar 的方法

    **中秋节真是个假期~,从凌晨1点直接睡到下午3点,睡了14个小时累积的疲劳一扫而空脑袋也好使了..
之前受托研究个挺好玩的项目..细节不说了,我在实现的时候卡在怎样脱离eclipse而能将项目源码编译成.apk上
发现网上有现成答案的,参考了以下这篇
http://jojol-zhou.iteye.com/blog/729254
虽然原作者是针对较早期的 Android 1.5(API-3)写的,但原理和用法相同。
用到的路径和工具包括(容我偷个懒直接把部分的批处理内容直接cp出来了):
SET WORK_SPACE=E:\code\autopack_demo
SET PKG_PATH=com\xxx\apk\autopack_demo
SET JAVA_SPACE=D:\Progra~2\Java\jdk1.6.0_21\bin
SET ANDROID_SPACE=E:\android-sdk-windows
SET JAVAC=%JAVA_SPACE%\javac.exe
SET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exe
SET DX=%ANDROID_SPACE%\platform-tools\dx.bat
REM 输出的路径
SET OUT_FOLDER=...
SET OUT_CLASS_FOLDER=...
依葫芦画瓢写批处理试运行,发现卡在一个问题上:项目中部分的功能模块引用了第三方的 jar 里的类
在编译的时候报错,
javac 时凡事引用到jar的类的地方都报出了 class not found 之类的错误
gen/R.java 里也提对象不匹配 还有一大堆的东西
按着错误提示一个一个来解决,按照打包的流程
1. 先解决生成 R.java 这个环节
这里预先我把第三方的3rd.jar复制到了项目文件夹的 lib/ 下,然后再批处理里定义为
-------------------------------------------------------------------------------------------
SET THIRD_JAR=%WORK_SPACE%\lib\3rd.jar
REM 以下这行命令生成 R.java
%AAPT% package -m -J %GEN_FOLDER% -M %WORK_SPACE%\AndroidManifest.xml -S %RESOURCE_FOLDER% -I %ANDROID_JAR% -I % THIRD_JAR%
-------------------------------------------------------------------------------------------
在命令最后加上了 -I % THIRD_JAR%,这样有关 R.java 的报错消失了
2. javac 的错误提示..这里是把 .java 编译成 .class 提示找不到第三方的包
那么在原命令行略作修改 最后添加上 -classpath %THIRD_JAR% 这个引用参数,问题解决


再编译没有报错,把其他资源文件也打包进apk最后加上签名~生成了apk,好像成功咯
安装到手机里,运行,程序崩溃了... Android笔记34:命令行打包编译.apk 包含第三方.jar 的方法 - 恶 - 早衰男的巢
看DDMS 输出地日志~~ 问题还是在于第三方的类..not found ... 呃,不是已经编译通过了吗
回头看看那个apk文件,的确太小.. 没有包含那个jar
做逆向研究... 看看从eclipse 编译出来的apk(104kb)和我打包出来的(26kb)到底差别在哪里...
把apk文件当做zip解压~看见尺寸的差异在于 classes.dex 这个文件
!原来问题在这里...
生成dex文件是用 %DX% 查了下 % DX% --help 用法,找到了解决问题的最后一步
3. 输出dex时把第三方的jar包含在内
在 dx --help里说的很明白了:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值