昨天搞了setCurrentTimeMillis 不能修改时间的问题。不甘心今天上午又搞上了。
主要原因是因为SystemClock的setCurrentTimeMillis 的permission是signatureOrSystem等级的,直接使用user-permission没有作用。需要做两方面的事情:
一方面是相同的uid. Android 的系统用户id是android.uid.system , 在Manifest里面添加android:sharedUserId="android.uid.system"。
二方面是相同的包签名。包签名需要用到android提供的signapk,但很遗憾,我们的开发包里面并没有,需要您手动的从源码里面编译,在2.2的版本中,源码路径是:froyo\build\tools\signapk。
在附件中我已经编译好了。然后从源码路径froyo\build\target\product\security中取出两个系统签名文件platform.pk8 and platform.x509.pem.
就可以对eclipse编译好的apk签名了,(注: 编译好的apk在bin目录下)。形式是:
Java –jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk.
完成这两部后,在运行之前,您还要从模拟器上卸载掉原来的相同程序,因为签名改了,不然会报错不能安装。
主要原因是因为SystemClock的setCurrentTimeMillis 的permission是signatureOrSystem等级的,直接使用user-permission没有作用。需要做两方面的事情:
一方面是相同的uid. Android 的系统用户id是android.uid.system , 在Manifest里面添加android:sharedUserId="android.uid.system"。
二方面是相同的包签名。包签名需要用到android提供的signapk,但很遗憾,我们的开发包里面并没有,需要您手动的从源码里面编译,在2.2的版本中,源码路径是:froyo\build\tools\signapk。
在附件中我已经编译好了。然后从源码路径froyo\build\target\product\security中取出两个系统签名文件platform.pk8 and platform.x509.pem.
就可以对eclipse编译好的apk签名了,(注: 编译好的apk在bin目录下)。形式是:
Java –jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk.
完成这两部后,在运行之前,您还要从模拟器上卸载掉原来的相同程序,因为签名改了,不然会报错不能安装。
安装完后您就可以使用了。
在安装的时候可能会遇到安装补上
INSTALL_FAILED_INVALID_INSTALL_LOCATION 出先这个错误
在添加系统权限的时候报错 可以 clean 工程
此时 要把 我们的 apk 放入对应的系统包里面。
操作步骤
1. 将你的手机数据线,插上,把你的设备设置为允许usb调试
2. 打开命令终端cmd
3. 输入命令 adb shell
4. 确定能进入系统

5. 输入命令 mount

6. 因为system默认是只读文件夹,所以根据上面的提示输入下面命令,使其变为可读写
mount -o remount /dev/block/nandd /system (图)
mount -o remount /dev/block/nandd /system (图)

7. 为确保万一,再出输入 mount 查看system和上面的不一样了,说明正确

8. 输入 exit 退出android系统终端

9. 进入你存有apk的文件夹,找到你的apk文件备份,右键解压,进入查看lib/armeabi文件夹下有没有*.so文件,如果没有这种库文件的话,直接跳到第“12”步,进行操作,(因为有些apk文件是要调用动态链接库的,你不拷贝的话,就没有办法运行!会报错
)如果有的话,如下图:

10. 将这些*.so文件都拷贝到/system/lib文件夹下
命令:adb push libiReader_txtparser.so system/lib
命令:adb push libiReader_txtparser.so system/lib

11. 拷贝完了之后呢,要给这些库文件添加权限,看看别的库文件权限是几
chmod 644 xxxxx.so
chmod 644 xxxxx.so

12. 将你的apk文件拷贝进入/system/app(该文件夹里存放着所以系统级别的apk),图中我是将iReader.apk拷贝过去的

13. 再次进入android终端 adb shell
14. 进入system/app文件夹 cd system/app
15. 查看其他apk的权限 ll 能看出区别

16. 修改iReader.apk权限使其和其他的一样chmod 644 iReader.apk

17. 搞定这些之后,重启设备 reboot
18. 看看系统里面是不是安装好了该应用,点击一下,看是否正常运行,可以的话,再检测是否无法卸载!
实测 可行---------------------------------》
参考文献
http://www.apkbus.com/android-130756-1-1.html
http://lyxh-2003.iteye.com/blog/739445