首页 > 代码库 > Android apk 获取系统权限的方式

Android apk 获取系统权限的方式

Android系统中,权限等级分为

["normal" | "dangerous"| "signature" | "signatureOrSystem"]

normal 、dangerous是一般apk都在Mainifest中声明即可获取的

signature必须要有系统级别的签名才能够获取到

signatureOrSystem 有系统级别签名或者有系统权限

 

以SET_PREFERRED_APPLICATIONS为例

使用signapk为APK签名

addPreferredActivity需要权限 android.permission.SET_PREFERRED_APPLICATIONS(权限等级为【signature】)

       使用该权限需要signapk进行签名,所需要的工具

       源码包中

       1)..\out\host\linux-x86\framework\signapk.jar

       2)..\build\target\product\security\platform.pk8

       3)..\build\target\product\security\platform.x509.pk8

       将以上3个文件以及需要签名的APK放到同一个目录中

cmd -> java -jar signapk.jarplatform.x509.pem platform.pk8 LauncherDemo.apk Launcher_sign.apk

       该权限以需要具有系统权限的应用,所以需要使用源码编译该应用

完成后可使用普通install方法安装应用,并可使用zipalign对APK进行优化

zipalign目录 android-sdk\tools\zipalign.exe

l  优化对齐APK

cmd ->zipalign -v 4 old.apk new.apk

l  验证对齐

cmd ->zipalign -c -v 4 new.apk

以上最张输出 Verification succesful 则表示优化对齐成功

 

源码编译APK共享系统UID

       这种方法无需声明权限SET_PREFERRED_APPLICATIONS

       1)在Mainfest文件中增加

              android:sharedUserId="android.uid.system"

       2)Android.mk文件中增加

              LOCAL_CERTIFICATE := platform

       编译完成后,使用push方式安装应用

Android.mk:

#Copyright 2007-2008 The Android Open Source Project
LOCAL_PATH:=$(call my-dir)
include$(CLEAR_VARS)
LOCAL_SRC_FILES:= $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME:= LauncherDemo
LOCAL_CERTIFICATE:= platform
include$(BUILD_PACKAGE)
# Use thefolloing include to make our test apk.
include$(call all-makefiles-under,$(LOCAL_PATH))