1.怎么在手机上制作刷机包?
2.安卓反编译出来的代码如何修改重新生成APK
3.å¦ä½å¶ä½èªå·±çandroidå级å
怎么在手机上制作刷机包?
.
目前有好几种方法来安装软件或是库文件到你的Android手机上。你可以使用市场程序来查找并安装软件,也可以使用adb命令行工具来安装或是发送文件到你的Android文件系统中。这些方法对于操作单个文件来说都挺方便的,但是如果你需要一次性安装多个软件或是库文件时,那么最为方便的tipc源码编译方法大概就是使用update.zip(也就是刷机包)文件了。Android系统使用恢复工具(recovery)来安装这个update.zip文件中的软件或库文件到Android文件系统中。而一个ROM或是主题开发者通常都是使用这个方式来发布他们的作品(刷机包)。
创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-script文件。作为举例,本文会安装Calculator.apk到system/app文件夹,复制libsec-ril.so文件到system/lib文件夹:
新建一个空文件夹(本文例:C:\mumayi)
新建用来放置Calculator.apk的文件夹C:\mumayi\system\app以及用来放置libsec-ril.so的文件夹C:\mumayi\system\lib。
创建用来放置update-script文件的文件夹C:\mumayi\META-INF\com\google\android。
创建一个名为update-script的文件,其内容如下(高亮部分):
行1和行5:显示进度条
行3:复制刷机包中的压球源码system文件夹到Android的/system
注意:你应该在文件的最末尾多添加一个空行(也就是行6)
将C:\mumayi压缩中的所有内容压缩为zip包(千万记住:是压缩mumayi这个文件夹中的内容,不是mumayi文件夹本身)
为mumayi.zip签名
签名命令:java -jar signapk.jar certificate.pem key.pk8 mumayi.zip update.zip
将update.zip文件复制到SD卡中,然后手机进入recovery界面来刷入这个刷机包
进阶学习:(以下仅作参考,因实际情况不同,可能会有一定的出入。但是极度推荐学习本部分)
update-script 语法参考(在Android源码的recovery.c文件中定义):
copy_dir
语法:copy_dir <源目录> <目标目录> [<时间戳>]
描述:复制<源目录>中的内容到<目标目录>中。如果<源目录>中没有同名文件进行覆盖,那么<目标目录>中的原始内容会仍然存在不变。
示例:copy_dir PACKAGE:system SYSTEM:,骑手外卖源码这个命令会把刷机包中的system文件夹复制到手机的/system文件夹中
format
语法:format <根目录>
描述:格式化一个分区。
示例:format SYSTEM:,这个命令会格式化整个/system。注意:格式化时所进行的数据删除操作是不可逆转的。
delete
语法:delete <文件1> [... <文件N>]
描述:删除文件。
示例:delete SYSTEM:app/Calculator.apk,这个命令会删除手机system/app文件夹中的Calculator.apk文件。
delete_recursive
语法:delete_recursive <文件或目录1> [... <文件或目录N>]
描述:删除一个文件或递归删除某个文件夹(也就是源码时代规模包括该文件夹中的所有内容)
示例:delete_recursive DATA:dalvik-cache,这个命令会删除/data/dalvik-cache文件夹以及该文件夹中的所有内容。
run_program
语法:run_program <执行程序> [<参数> ...]
描述:运行一个刷机包中的外部程序。
示例:run_program PACKAGE:install_busybox.sh,这个命令会执行刷机包中的install_busybox.sh脚本(命令行)。
set_perm(本命令中涉及的数值,如有疑惑,请自行Google。uid=user id,iframe调用源码gid=group id)
语法:set_perm <uid> <gid> <属性> <路径> [... <路径N>]
描述:设置某个文件或是指定的整个目录树的所有者和权限,就像是一个‘chmod’、‘chown’、以及‘chgrp’命令的集合体。
示例:set_perm 0 SYSTEM:etc/init.goldfish.sh,这个命令会设置手机上system分区中etc/init.goldfish.sh文件的用户组为:shell;用户为:root;权限为:所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限。
set_perm_recursive(本命令中涉及的数值,如有疑惑,请自行Google。uid=user id,gid=group id)
语法:set_perm_recursive <uid> <gid> <文件夹属性> <文件属性> <路径> [... <路径N>]
描述:递归设置某个文件夹中所有内容的所有者和权限
示例:set_perm_recursive 0 0 SYSTEM:app,这个命令会递归设置手机上system/app文件夹以及其所有内容的用户组为:root;用户为:root;app文件夹的权限为:所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作;app文件夹下的所有文件的权限为:所有者可以进行读写操作,其他用户可以进行读取操作。
show_progress
语法:show_progress <小数> <持续时间>
描述:为下一个操作在屏幕上显示一个进度条,自动的根据<持续时间>指定的秒数来递增进度条状态(如果实际上进度条的推进是可以确定的,那就会更加迅速)。
示例:show_progress 0.1 0,这个命令是指,操作完成后,进度条前进0.1(%)
symlink
语法:symlink <链接目标> <链接所在路径>
描述:创建一个符合链接(就像是 ‘ln-s’)。<链接所在路径>的格式类似于这样:根目录:路径, 但是<链接目标>则是指目标文件(而且位置可能是相对与链接所在路径的)
示例:symlink /system/bin/su SYSTEM:xbin/su,这个命令会为/system/bin/su在手机system分区的xbin文件夹下创建一个符号链接,名为su
安卓反编译出来的代码如何修改重新生成APK
反编译步骤:下载apktool 并设置环境变量
命令行进入apk目录执行:apktool d xx.apk (如果遇到一些错误说明apk做了防破解处理)
执行成功后会生成xx文件夹,进入xx文件夹修改需要修改的内容,如果需要修改代码,进入xx\smali\里面,需要懂一些smali语法
修改完后回到命令行,执行:apktool b xx ,会在xx文件夹里面生成一个dist文件夹,里面的apk就是回编译的,这个apk是没有签名的
下载网上的签名工具对apk签名,完了就可以安装了(如果你下载了源码或者sdk,里面自带一个signapk也可以签名)
å¦ä½å¶ä½èªå·±çandroidå级å
1.å建ä¸ä¸ªupdateç®å½ï¼è¯¥ç®å½å å«èªå·±æ³è¦å级ææ¿æ¢çå 容ä¾å¦ï¼
update/
update/system
update/system/app
update/system/app/doodle_jump.apk
update/META-INF
update/META-INF/com
update/META-INF/com/google
update/META-INF/com/google/Android
update/META-INF/com/google/android/update-script
该ç®å½å å«doodle_jump游æï¼å级å该apkå°åºç°å¨ææºç/system/app/ç®å½ä¸ã
META-INFç®å½ä¸å å«å级èæ¬ï¼update-scriptèæ¬çå 容å¦ä¸ï¼
show_progress 0. 0
copy_dir PACKAGE:system SYSTEM:
show_progress 0. 0
大家å¯ä»¥æ ¹æ®èªå·±çå级å 容添å ç¸åºçå½ä»¤ã
2.å建å缩å
å¨update/ç®å½ä¸è¿è¡ï¼
$ zip -qry ../update.unsigned.zip ./
å°å¨update/çç¶ç®å½ä¸äº§çupdate.unsigned.zip å缩å
3.ç¾å
$ Java -Xmxm -jar signapk.jar -w key.x.pem key.pk8 update.unsigned.zip update.zip
çæç¾è¿åçupdate.zipå ï¼å ¶ä¸
signapk.jarï¼key.x.pemï¼key.pk8ä¸å ·ä½ææºç³»ç»ç¸å ³
4.å°ç¾è¿åçupdate.zipå æ¾å ¥ææºsdcardæ ¹ç®å½ï¼
éå¯ç³»ç»è¿å ¥recovery模å¼ï¼éæ©
apply update.zipï¼æååéå¯ææº
okï¼ç°å¨ææºä¸å·²ç»ædoodle_jump游æäºï¼å¹¶ä¸å®æ æ³è¢«å é¤ï½
-- original english --
When publishing an application or a custom rom you need to sign the .apk or .zip files with a certificate using a private key. The Android system uses the certificate to identify the author of an application and establish trust relationship between applications. The classic way of doing this was to use keytool then sign it with jarsigner. In this tutorial iâll explain an alternative method which is relatively easy to use for most people using a tool calledSignApk.jar.
SignApk.jar is a tool included with the Android platform source bundle, you can download it from here. To use SignApk.jar you have to create a private key with itâs corresponding certificate/public key. To create private/public key pair, you can use Openssl. Openssl is relatively easy to use under unix/Linux system. For Windows user, you can download Windows version of Openssl here.
How to create private/public key pair using openssl (windows version)
Download openssl package from link given above
Extract it anywhere on your drive (eg. C:\openssl)
Within openssl directory type (use cmd tool):
- openssl genrsa -out key.pem
- openssl req -new -key key.pem -out request.pem
- openssl x -req -days -in request.pem -signkey key.pem -out certificate.pem
- openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
Note:
If you donât want to create your own public/private key pair, you can use test key included in SignApk.rar.
======================================= Import =========================================
There are several ways to install applications or library files to an Android Phone. You can use Marketapplication to find and install or adb command line tool to install or push the files to Android file system. These are all easy to implement for single file but if you have several applications or library files to install at once, it might be better to use update zip file. The update zip file is Android advanced system to install applications or lib files to Android file system using recovery tool. This method is commonly used by rom or theme developers to distribute their package.
Download SignApk.rar from link given above
Extract it anywhere on your drive (eg. c:\SignApk)
If you donât have java installed, download and install it.
Copy certificate.pem and key.pk8 into your extracted SignApk directory
Within SignApk directory type:
java -jar signapk.jar certificate.pem key.pk8 your-app.apk your-signed-app.apk
OR
java -jar signapk.jar certificate.pem key.pk8 your-update.zip your-signed-update.zip