Android 4.2.2 系统签名
2016-07-05 14:21
218 查看
这里有原生系统的签名文件platform.pk8和platform.x509.pem以及Signapk工具 。
如果是自己编译的Android系统那么密钥文件在如下位置:
这样编译出来的APK就具有的系统签名,无论是装到/system/app中还是/data/app中都会是。
可以通过以下代码检测本应用是否为系统签名的应用:(来自:https://pankajchunchun.wordpress.com/2014/07/08/how-to-check-if-application-is-system-app-or-not-by-signed-signature/)
如果是自己编译的Android系统那么密钥文件在如下位置:
/build/target/product/security/
java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk
这样编译出来的APK就具有的系统签名,无论是装到/system/app中还是/data/app中都会是。
可以通过以下代码检测本应用是否为系统签名的应用:(来自:https://pankajchunchun.wordpress.com/2014/07/08/how-to-check-if-application-is-system-app-or-not-by-signed-signature/)
import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; public class AppUtility { private static final String SYSTEM_PACKAGE_NAME = "android"; private PackageManager mPackageManager = null; public AppUtility(Context context) { mPackageManager = (PackageManager) context.getPackageManager(); } /** * Match signature of application to identify that if it is signed by system * or not. * * @param packageName * package of application. Can not be blank. * @return <code>true</code> if application is signed by system certificate, * otherwise <code>false</code> */ public boolean isSystemApp(String packageName) { try { // Get packageinfo for target application PackageInfo targetPkgInfo = mPackageManager.getPackageInfo( packageName, PackageManager.GET_SIGNATURES); // Get packageinfo for system package PackageInfo sys = mPackageManager.getPackageInfo( SYSTEM_PACKAGE_NAME, PackageManager.GET_SIGNATURES); // Match both packageinfo for there signatures return (targetPkgInfo != null && targetPkgInfo.signatures != null && sys.signatures[0] .equals(targetPkgInfo.signatures[0])); } catch (PackageManager.NameNotFoundException e) { return false; } } /** * Check if application is preloaded. It also check if the application is * signed by system certificate or not. * * @param packageName * package name of application. Can not be null. * @return <code>true</code> if package is preloaded and system. */ public boolean isAppPreLoaded(String packageName) { if (packageName == null) { throw new IllegalArgumentException("Package name can not be null"); } try { ApplicationInfo ai = mPackageManager.getApplicationInfo( packageName, 0); // First check if it is preloaded. // If yes then check if it is System app or not. if (ai != null && (ai.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0) { // Check if signature matches if (isSystemApp(packageName) == true) { return true; } else { return false; } } } catch (NameNotFoundException e) { e.printStackTrace(); } return false; } }
相关文章推荐
- android环境搭建有感
- android apilevel和android系统版本对应关系
- Android 手机号验证,用户名验证的正则表达式
- android 的textview显示过长文本时用一个按钮控制展开与收缩
- android framelayout 拖动时,界面压缩变形问题
- 各大热补丁方案分析和比较
- Android——浅谈归纳Handler各种用法
- [置顶] Android开发工具资料Android Manifest 权限描述大全 随时随地查询权限描述。
- android 基础知识回顾--- “沙箱”机制sharedUserId跟签名
- Android之好友列表中的头像置灰设置
- 在ubuntu下的android studio 建立phonegap项目
- Android--从零单排系列(8)--service的使用和利用service进行数据的传递
- 那些Android中的性能优化
- 如何让应用在应用运行时重启
- android将图片转成字符串,再将字符串转成图片
- Java(Android)线程池
- Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)
- android学习11#--基于回调的事件处理
- 理解extends与implements
- android中的适配器模式