1、 查看AndroidManifest.xml中的manifest节点中属性,比如:
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.shared"等
?
2、查看Android.mk,找出需要的库文件,比如:
?LOCAL_STATIC_JAVA_LIBRARIES :=com.android.phone.common
在源码下找到out/target/common/obj/JAVA_LIBRARIES/com.android.phone.common_intermediates/classes.jar
,加入工程,其他需要的库也加入,知道编译正确。使用eclipse编译出apk文件,但是这个apk文件是不能用的。
?
3、使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,
首先找到密钥文件,在我的Android源码目录中的位置
是"build\target\product\security",如果android:sharedUserId="android.uid.system",公匙密匙分别是platform.pk8和platform.x509.pem两个文件,其他类似。
然后用Android提供的Signapk工具来签名,signapk.jar在out/host/linux-x86/framework下
用法为"java -jar signapk.jar?platform.x509.pem platform.pk8 input.apk output.apk",
例如:java -jar signapk.jar platform.x509.pemplatform.pk8? Settings.apkSettings-signed.apk
文件名最好使用绝对路径防止找不到,input.apk和output.apk不要相同,会报错。
?
4、获得安装权限
adb shell mount -oremount,rw /dev/block/mtdblock3 /system
?
5、重安装新的apk
adb install -r Settings-signed.apk
用绝对路径。
等一会就OK了
?
6、可以用Eclipse实现断电、单步调试。
?
如果是linux下直接mmm模块编译,然后执行两步:
adb shell mount -oremount,rw /dev/block/mtdblock3 /system
adb install -r Settings-signed.apk
也可单步调试,有空再写