转载请注明出处:csdn火木达人
一、多个jar包的处理
在开发Flash Android ANE中,Android端有可能使用第三方jar包。在Android端直接打出的jar包里面不包含第三方库的字节码。所以在生成了ane后使用会报错。又由于Flash ane不能同时使用多个jar包,所以只能把这个第三方库也弄进你生成的那个jar包中。
可以使用jar命令解包和压包
1.用 jar -xf 命令解压第三方Jar包
2.用 jar -uf 命令合并第三方Jar包
另一种方式是把后缀名改为.rar,用解压工具解压,在合并这些jar文件的字节码文件,最后在压缩改后缀名
这里有一个别人写的打包小工具:P013MergeJars.air
二、ane资源的处理
Flash Android ANE的资源可以分为两种:
第一种:res资源
把res整个目录放在Android-ARM目录下,在打包的时候会直接打进去
使用getApplicationContext().getResources().getIdentifier(name,defType,defPackage)方法在ane中获取资源
第二种:assets资源
把assets目录下的资源拷贝到Flex手机项目的src根目录下,对这工程点击右键-属性-Flex构建项目-Google Android-包类容。
所有打勾的文件都会打进apk的assets目录下。apk打成功后可以解压看看。
如果你的assets下包括.apk文件,那么就不能使用Flash Builder 工具去打包,因为Flash Builder 工具对.apk文件文件有过滤。及时你选择了.apk文件还是会剔除掉。
这时可以通过命令去打包
还一种方式通过Flash Builder 工具打包后,使用APKTool反编译工具解压后把文件放入assets下,在生成新包。
反编译:apktool d <file.apk> <dir>
如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f <file.apk> <dir>
编译:apktool b <dir>
dir内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
apktool新生成的新包时不带签名的,所以需要自己重新签名:
jarsigner -verbose -keystore test.keystore -signedjar test2.apk test.apk test.keystore
用命令行创建keystore:
keytool -genkey -keystore test.keystore -keyalg RSA -validity 10000 -alias test.keystore
查看keystore详细信息:
keytool -list -keystore test.keystore