如何合并apk和odex

本文详细介绍了如何合并Android的apk和odex文件。首先将所需文件放到指定目录,使用baksmali和smali工具进行反编译和编译,然后将生成的classes.dex文件拖入apk中。接着进行签名操作,包括生成密钥、导入密钥库、使用jarsigner签名,并用zipalign优化apk。最后提供了一个自动化脚本mergeapk.sh来简化整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:合并apk和odex

首先要把PinyinIME.odexPinyinIME.apk放到/home/PC/test目录下;

同时要把手机中所有/system/framework下的apkodex文件也放到/home/PC/test

在网上下载baksmali-1.4.1.jar和smali-1.4.1.jar

在终端中进入到/home/PC/test下,然后执行以下操作

1). java -jar baksmali-1.4.1.jar -a 13 –x PinyinIME.odex

2). java -Xmx512M -jar smali-1.4.1.jar out -o classes.dex

3)在ubuntu下使用归档管理器打开PinyinIME.apk,直接将classes.dex拖入PinyinIME.apk

 

第二步签名:

在终端中进入到/home/PC/Projects/android4.0_ics/build/target/product/security下面

1). openssl pkcs8 -in shared.pk8 -inform DER-outform PEM -out shared.priv.pem –nocrypt

2). openssl pkcs12 -export -inshared.x509.pem -inkey shared.priv.pem -out shared.pk12 -name CERT

输入秘钥:android

3) keytool -importkeystore -deststorepassandroid -destkeypass android -destkeystore CERT.keystore -srckeystoreshared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias CERT

 

4) 然后将CERT.keystore拷贝到/home/PC/tools/jdk1.6.0_26/bin下面:

5) 然后在终端中进入到/home/PC/tools/jdk1.6.0_26/bin

./jarsigner -verbose -keystore CERT.keystore/home/PC/test/PinyinIME.apk CERT

此处需要输入验证秘钥:android 


6)/home/PC/test/建立result文件夹,在终端中进入/home/PC/tools/android/tools接着再执行:

./zipalign -v 4  /home/PC/test/PinyinIME.apk /home/PC/test/result/PinyinIME.apk



下面是一个自动执行的shell脚本:

假设取名mergeapk.sh

执行方法:./mergeapk.sh PinyinIME.odex PinyinIME.apk

脚本如下:

echo "start merge process,please wait... "
if [ -f $1 ]; then
    echo " parse .odex file : $1";
else
    echo " error: .odex file is missing";
    invalid=false;
fi
if [ -f $2 ] ; then
    echo " target apk file :$2";
else 
    echo " error: target .apk file is missing";
    invalid=false;
fi
    
if [ true = $invalid ] ; then 
if [ -f "framework.jar" ]; then
    echo "framework exist";
else
    /home/PC/tools/android/platform-tools/adb pull system/framework  .
fi
    java -jar baksmali-1.4.1.jar -a 13 -x "$1"
    java -Xmx512M -jar smali-1.4.1.jar out -o classes.dex
    zip "$2" classes.dex
    rm -rf out
    rm classes.dex
else
    echo " parameter is not right,aborting... retry like:";
    echo " ./mergeapk.sh odexpathandname.odex apkpathandname.apk";
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值