mk中的 android:sharedUserId和LOCAL_CERTIFICATE作用 应用程序获得系统权限

Android中如何修改系统时间(应用程序获得系统权限 然后用Android提供的Signapk工具来签名,signapk的源代码是在"build/tools/signapk"下,用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。1. 在应用程序AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。 阅读详情
Android中如何修改系统时间(应用程序获得系统权限)
在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用。
        本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。
        第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
        1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
        2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
        3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。
        第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:
        1. 同上,加入android:sharedUserId="android.uid.system"这个属性。
        2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
        3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。
        4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
        这样最后得到的apk和第一个方法是一样的。
        最后解释一下原理,首先加入android:sharedUserId="android.uid.system"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。
        只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform key,就是上面第二个方法提到的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。
        这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到platform.pk8 和platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package ... has no signatures that match those in shared user android.uid.system",这样也是保护了系统的安全。

        最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。



from: http://www.cnblogs.com/Tiger-Dog/articles/2057917.html


如何让apk 拥有系统权限 如何让apk 拥有系统权限,修改时间,调用隐藏方法,系统关键重启,静默安装升级卸载应用等系统级app所有的权限 方法一: 不进入源码编译 1 下载keytool 地址:https://github.com/getfatday/keytool-importkeypair 2.app的AndroidManifest.xml 如下定义 android:sharedUserId="and... 阅读详情

相关推荐

LOCAL_CERTIFICATE作用

build/target/product/security目录中有四组默认签名供Android.mk在编译APK使用: 1、testkey:普通APK,默认情况下使用。 2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。 3、shared:该APK需要home/contacts进程共享数据。 4、media:该APK是media/download系统中的一环。 应用程序Android.mk中有一个L

hnlgzb的专栏 6970

MTK Android Framework用SystemProperties通过JNI调用访问系统属性

1.导包 import android.os.SystemProperties; 2.Android SystemProperties设置/读取 #设置 Systemproperties.set(name, value); #读取 Systemproperties.get(name); 进行系统属性设置的程序也必须有system或root权限, 如何将and...

weixin_38166905的博客 576

Android P签名机制系统权限

系统中签名Key: media platform shared testkey 签名Key存放的路径为build\target\product\security: media.pk8media.x509.pem platform.pk8platform.x509.pem shared.pk8shared.x509.pem testkey.pk8testkey.x509.pem 该目录下的verity*文件: verity.pk8,用于签署boot.imgsystem.img的私钥 ver

Sunxiaolin2016的博客 2909

[ Android 编译 ] 如果不指定LOCAL_CERTIFICATE,默认使用哪个key进行签名

在未修改源码编译环境的情况下,系统源码中编译的应用,如果没有指定 LOCAL_CERTIFICATE: 1、在 user 模式下就是用 build/target/product/security/releasekey.x509.pem 进行应用签名。 2、在 eng / userdebug 模式下用 build/target/product/security/testkey.x509.pem 进行应用签名。

a572423926的博客 2923

关于android:sharedUserId="android.uid.system"这个系统权限

最近在做的项目,有好大一部分都用到这个权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等等,刚开始的时候,直接添加权限,运行就报错,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行于系统进程中才可以用。网上搜索了好久,发现有两种方法可以解决:

u012398902的专栏 6万+

添加系统权限 android:sharedUserId=“android.uid.system“

关于android:sharedUserId=“android.uid.system“ 的使用

okk 1万+

mk中的android:sharedUserIdLOCAL_CERTIFICATE作用

mk中的android:sharedUserIdLOCAL_CERTIFICATE作用(一) Android中如何修改系统时间(应用程序获得系统权限) 在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to ope

JESSE_ZHAO_503的专栏 1万+

关于android:sharedUserId=“android.uid.system“ 的使用

有时候我们需要在自己的应用中使用一些系统相关权限,比如USB权限,如果我们自己的应用所在进程系统进程为同一个UID,就会默认拥有该权限,不需要用户自己去授予,很多情况下会方便很多。最近在做的项目,有好大一部分都用到这个权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等等,刚开始的时候,直接添加权限,运行就报错,无论模拟器还是真机,在logcat中总会得到"Unable ...

宝爷的专栏 4万+

Android 将自己的应用改为系统应用

所谓系统程序就是system/app目录中的程序,普通应用转换成系统程序后有稳定、减少内存(DATA)空间占用、恢复出厂设置后不会消失、修改系统时间、调用隐藏方法、系统关机重启、静默安装升级卸载应用等等等等优点,想知道怎么操作?接下来我们介绍三种方法。第一种:使用ADB命令将app安装在system/app目录下转载:android 将自己的应用改为系统应用这种方法的原理就是:1、把apk文件移动到

薛瑄的博客 9万+

mk文件中的android:sharedUserIdLOCAL_CERTIFICATE作用

android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用。         本来以为就没有办法在

zeng622peng的专栏 3581

Android应用程序如何获得系统签名权限,比如要自己控制android灭屏锁屏

Android应用程序如何获得系统签名权限:比如要自己控制android灭屏锁屏 灭屏代码: PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); pm.goToSleep(SystemClock.uptimeMillis()); 需要权限:            

csh86277516的博客 2900

Android权限之三共享UID签名

<br /><br />共享UID<br />安装在设备中的每一个Android包文件(.apk)都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。<br />通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的

农场老马的专栏 2万+

Android:sharedUserId介绍

android:sharedUserId = "aa"的格式不对!要仿照标准的写!其实有点就行! 两个APK如果拥有同一个USERID 那么共享了permission!     安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建

prettyice的专栏 1159

Android权限sharedUserId签名

最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份。     安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装

Happy_Develop_的专栏 1002

Android应用程序如何获得系统签名权限

最近在做一个控制电视界面的应用,模拟电视遥控器操作,代码如下。 public static void simulateKeystroke(final int KeyCode) { new Thread(new Runnable() { public void run() { ...

weixin_34066347的博客 841
上一篇: 古筝曲 <深山禅林>
下一篇: android工程版key
Vincent_czz
博客等级 码龄16年 125粉丝 95原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值