1.Android常用签名方式及签名转换技巧
2.å¦ä½å®è£
ç³»ç»è®¤è¯ç¾åè¿çAPK
3.如何用android:sharedUserId属性生成带有系统权限的apk?
4.Androidç³»ç»ç¾å
Android常用签名方式及签名转换技巧
在Android开发过程中,签名是保证应用安全性的重要环节。以下是Android常用的签名方式及签名转换技巧。
首先,了解签名的基本知识。使用platform.pk8和platform.x.pem进行命令签名,ititi燃鹅源码需要准备以下要素:signapk源码位于/build/tools/signapk/,可以在服务器上单独编译此模块,然后在/out/host/linux-x/framework文件夹下找到platform.pk8和platform.x.pem,它们位于android/build/target/product/security文件夹下。
其次,使用.keystore或.jks进行gradle签名。使用.keystore和.jks时,源码资本投资什么公司需要提供相关信息,以便在gradle中引入。
此外,还可以使用keystore或jks与jarsigner命令进行签名,或者使用Android Studio进行签名。使用Android.mk或Android.bp进行签名也是仿蔚来APP源码一种选择。
在签名转换方面,可以将platform.pk8和platform.x.pem转换成.keystore和.jks。具体方法如下:
1. 利用网上开源项目github.com/getfatday/ke...,使用keytool-importantkeypair工具,将platform.pk8和platform.x.pem转换成platform.keystore。在Linux环境下,如何把补码换成源码使用命令生成platform.keystore即可。
2. 在这里,别名、密码等信息需要记下来,以便在引入签名文件时使用。
3. 同样地,大牛社区源码免费下载可以将platform.pk8和platform.x.pem转换成.jks。可以使用上述keytool-importkeypair生成jks。
å¦ä½å®è£ ç³»ç»è®¤è¯ç¾åè¿çAPK
第ä¸ç§
å¦æä½ repo sync äº android çæ´ä¸ªæºç ï¼é£ä¹å¯ä»¥ç´æ¥æä½ ç app æ¾å° /packages/apps ä¸é¢å» mm ï¼ä¸è¿è¦è®°å¾å¨ Android.mk ä¸å¢å LOCAL_CERTIFICATE å±æ§ï¼è¿ä¸ªå±æ§å ·ä½æä¸ä¸ªå¼ï¼
ç³»ç»ä¸ææä½¿ç¨ android.uid.system ä½ä¸ºå ±äº« UID ç APK ï¼é½ä¼é¦å å¨ manifest èç¹ä¸å¢å android:sharedUserId=âandroid.uid.systemâï¼ç¶åå¨ Android.mk ä¸å¢å LOCAL_CERTIFICATE := platformãå¯ä»¥åè§ Settings ç
ç³»ç»ä¸ææ使ç¨android.uid.sharedä½ä¸ºå ±äº« UID ç APKï¼é½ä¼å¨ manifest èç¹ä¸å¢å android:sharedUserId=âandroid.uid.sharedâï¼ç¶åå¨ Android.mk ä¸å¢å LOCAL_CERTIFICATE := sharedãå¯ä»¥åè§ Launcher ç
ç³»ç»ä¸ææä½¿ç¨ android.media ä½ä¸ºå ±äº« UID ç APKï¼é½ä¼å¨ manifest èç¹ä¸å¢å android:sharedUserId=âandroid.mediaâï¼ç¶åå¨ Android.mk ä¸å¢å LOCAL_CERTIFICATE := mediaãå¯ä»¥åè§ Gallery çã
第äºç§
å½ç¶ï¼æ¯ç«ä¸æ¯æ¯ä¸ªäººé½ææºä¼ï¼æè æå¿ è¦ä¸è½½æ´ä¸ªæºç çã ç®åå°ï¼å½ä½ ç¨ IDE ç¼åº apk ä¹åï¼å¯ä»¥å» /build/tools/signapk/ æ¾å° signapk.jar æ件ï¼åå» /build/target/product/security/ éæ¾å° platform.pk8 ã platform.x.pem è¿ä¸¤ä¸ªæ件ãæå®ä»¬è¿åä½ ç apk æè¿ä¸ä¸ªæ件夹ï¼ç¶å cd å°è¯¥æ件夹ä¸æ§è¡ java -jar signapk.jar platform.x.pem platform.pk8 Origin.apk Signed.apkï¼å¾å°ç Signed.apk å°±å¯ä»¥ç´æ¥ adb installäºã
如何用android:sharedUserId属性生成带有系统权限的apk?
如何用android:sharedUserId属性生成带有系统权限的apk?
通过源码编译apk获取系统权限,主要有两种方法:使用Android系统源码的环境下用make命令编译,或者使用eclipse源码编译,无需使用make命令。
方法1:Android源码环境下的make命令编译。首先在android源码根目录下执行以下命令:
- build/envsetup.sh 设置编译环境
- lunch 选择编译目标
- make 编译整个系统
Android平台提供常用命令如:
- make 编译整个系统或单个模块
- mmm 编译指定目录下的模块
- mm 编译当前目录下的模块
- mma 编译当前目录及其依赖模块
- mms 编译指定目录及其依赖模块
- make sdk 编译SDK
- make snod 生成系统映像,速度较快但不稳定
方法2:使用eclipse源码编译。在signapk.java代码目录下执行命令:
- javac signapk.java 获取SignApk$SignatureOutputStream.class和SignApk.class
- 将两个class文件放入目录下并生成signapk.jar文件
- 复制platform.pk8和platform.x.pem文件至signapk.jar和SignApk.mf所在的目录
- 使用java -jar signapk.jar签名apk文件
在加入android:sharedUserId="android.uid.system"属性后,程序运行在系统进程中,拥有系统权限。但还需使用platform.pk8和platform.x.pem两个文件签名apk,确保在系统中安装和运行。生成的程序仅在原始Android系统或自己编译的系统中可用。
系统中使用不同共享UID的APK具有不同的权限和用途。遵循上述方法,你可以尝试编译带有sharedUserId权限的apk,并将其放置在开发版的/system/priv-app/目录下,以实现静默ota升级。
本文章总结了使用android:sharedUserId属性生成带有系统权限的apk的方法和注意事项,希望对开发者有所帮助。后续将介绍ota升级的理论、实践和原理等内容。欢迎关注知乎主页以获取更多Android开发知识。sunst -- :
Androidç³»ç»ç¾å
ææ¶åï¼æ们å¼åçapkéè¦ç¨å°ç³»ç»æéï¼éè¦å¨AndroidManifest.xmlä¸æ·»å å ±äº«ç³»ç»è¿ç¨å±æ§ï¼
è¿æ¶åapkçç¾åå°±éè¦æ¯ç³»ç»ç¾å(platformãsharedæmedia)æè½æ£å¸¸ä½¿ç¨ã
常ç¨ç³»ç»ç¾åæ¹å¼
è¿ç§æ¹å¼æ¯è¾éº»ç¦ï¼ä½ éè¦æç¼è¯è¿çæºç ç¯å¢ï¼å¹¶æå¦ä¸æ¥éª¤ï¼
1ãæ·è´Appæºç å°Androidæºç çpackages/apps/ç®å½ä¸ï¼ä¸Appæºç æ¯æ®é(Eclipse)æ ¼å¼ç
2ãé ç½®Android.mkï¼å¨å ¶ä¸æ·»å
3ã使ç¨mmç¼è¯Appï¼çæçapkå³ç³»ç»ç¾å
è¿ç§æ¹å¼æ¯å¨æºç ç¯å¢ä¸ç¾åç®åï¼Appå¯ä»¥å¨EclipseæAndroid Studioä¸ç¼è¯ï¼ç¶åç»apkéæ°ç¾åå³å¯ã
ä½è¿ç§æ¹å¼å¨é¢ç¹è°è¯çæ¶åæ¯è¾çè¦ï¼å³ä½¿åæèæ¬ï¼ä¹éè¦éå¤ä¸æ ·çæä½ã
ç¸å ³æ件
platform.x.pemãplatform.pk8ãsignapk.jar
æ件ä½ç½®
platform.x.pemãplatform.pk8:
signapk.jar:
signapkæºç è·¯å¾:
ç¾åå½ä»¤
æ¥éª¤
1ãå°ç¸å ³æ件åæºapkæ件置äºåä¸è·¯å¾ä¸
2ãæ£æ¥æºapkå ï¼å»æMETA-INF/CERT.SF å META-INF/CERT.RSA æ件
3ãæ§è¡ç¾åå½ä»¤å³å¯
让Android Studioéæç³»ç»ç¾åï¼éè¦ç¨å°ä¸ä¸ªå·¥å · keytool-importkeypair ï¼è¯¦è§ä¸æã
è¿ä¸ªå·¥å ·çä½ç¨æ¯å°ç³»ç»ç¾åçç¸å ³ä¿¡æ¯å¯¼å ¥å°å·²æçç¾åæ件éã
å·¥å ·ç使ç¨æ¹æ³å¯ä»¥éè¿âhelpæREADME.textileæ¥å¯»æ±å¸®å©
platform.x.pemãplatform.pk8ãkeytool-importkeypairãdemo.jksãsignature.sh
æçåæ³æ¯å¨Appæ ¹ç®å½æ°å»ºSignatureæ件夹ä¸é¨åæ¾ç¾åç¸å ³æ件ã
æ¥éª¤
1ãçædemo.jksç¾åæ件
2ãç¼åç¾åèæ¬signature.shï¼å 容å¦ä¸ï¼
为èæ¬æ件添å å¯æ§è¡æéï¼
æ§è¡èæ¬ï¼
3ãé ç½®builde.gradle
å¨androidåºåä¸(ä¸defaultConfigå级)æ·»å é ç½®ï¼
è¿æ ·debugærelease apk就带æç³»ç»ç¾åäºã
å¦ææ³ç´æ¥Run appå°±æ¯releaseçä¸å¸¦ç³»ç»ç¾åçapkï¼è¿éä¿®æ¹ï¼
è¿æ ·ç´æ¥Run appå°±æ¯å¸¦ç³»ç»ç¾åçreleaseçapkäºã