Image via androidauthority.com
Note: The AOSP versions which I’ve tested this solution is 4.2.2 and 4.4.2.
Add below snippet code after about lines 5634 iningrantSignaturePermissionmethod
on PackageManagerService.java
:
if (pkg.packageName.equals("com.android.vending") && compareSignatures(pkg.mSignatures, new Signature[]{new Signature("308204433082032ba003020102020900c2e08746644a308d300d06092a864886f70d01010405003074310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f69643110300e06035504031307416e64726f6964301e170d3038303832313233313333345a170d3336303130373233313333345a3074310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f69643110300e06035504031307416e64726f696430820120300d06092a864886f70d01010105000382010d00308201080282010100ab562e00d83ba208ae0a966f124e29da11f2ab56d08f58e2cca91303e9b754d372f640a71b1dcb130967624e4656a7776a92193db2e5bfb724a91e77188b0e6a47a43b33d9609b77183145ccdf7b2e586674c9e1565b1f4c6a5955bff251a63dabf9c55c27222252e875e4f8154a645f897168c0b1bfc612eabf785769bb34aa7984dc7e2ea2764cae8307d8c17154d7ee5f64a51a44a602c249054157dc02cd5f5c0e55fbef8519fbe327f0b1511692c5a06f19d18385f5c4dbc2d6b93f68cc2979c70e18ab93866b3bd5db8999552a0e3b4c99df58fb918bedc182ba35e003c1b4b10dd244a8ee24fffd333872ab5221985edab0fc0d0b145b6aa192858e79020103a381d93081d6301d0603551d0e04160414c77d8cc2211756259a7fd382df6be398e4d786a53081a60603551d2304819e30819b8014c77d8cc2211756259a7fd382df6be398e4d786a5a178a4763074310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f69643110300e06035504031307416e64726f6964820900c2e08746644a308d300c0603551d13040530030101ff300d06092a864886f70d010104050003820101006dd252ceef85302c360aaace939bcff2cca904bb5d7a1661f8ae46b2994204d0ff4a68c7ed1a531ec4595a623ce60763b167297a7ae35712c407f208f0cb109429124d7b106219c084ca3eb3f9ad5fb871ef92269a8be28bf16d44c8d9a08e6cb2f005bb3fe2cb96447e868e731076ad45b33f6009ea19c161e62641aa99271dfd5228c5c587875ddb7f452758d661f6cc0cccb7352e424cc4365c523532f7325137593c4ae341f4db41edda0d0b1071a7c440f0fe9ea01cb627ca674369d084bd2fd911ff06cdbf2cfa10dc0f893ae35762919048c7efc64c7144178342f70581c9de573af55b390dd7fdb9418631895d5f759f30112687ff621410c069308a")}) == PackageManager.SIGNATURE_MATCH){allowed = true;}
The path to the PackageManagerService
file is /android/sourcecode/frameworks/base/services/java/com/android/server/pm
So, it becomes something like this:
Then install these APKs:
adb install com.google.android.gms-6.6.03_(1681564-036)-6603036-minAPI9.apk
adb install GoogleLoginService.apk (Version: 4.4.4-1227136Notice: this number seen in Application Manager in android)
adb install GoogleServicesFramework.apk(Like above line)
adb install com.android.vending_6.1.12-80441200_minAPI9(nodpi)ByMe.apk(Version: 6.6.03(1681564-036))
Remember to download and install the latest versions from Here.
Below lines are not necessary probably (Cause we’ve added that signature), but do it just to be sure:
adb shell pm grant com.google.android.gms android.permission.INTERACT_ACROSS_USERSadb shell pm grant com.google.android.gms android.permission.READ_LOGSadb shell pm grant com.google.android.gms android.permission.WRITE_SECURE_SETTINGS//adb shell pm grant com.google.android.gms android.permission.ACCESS_DOWNLOAD_MANAGER//adb shell pm grant com.google.android.gms android.permission.CHANGE_CONFIGURATION//adb shell pm grant com.google.android.gms android.permission.MANAGE_USERS
If you don’t want to install APKs each time after the reset factory, or you’re going to build your own device with the AOSP (as same as us!)
Add below snippet code to your init
file:
pm grant com.google.android.gms android.permission.INTERACT_ACROSS_USERS;pm grant com.google.android.gms android.permission.READ_LOGS;pm grant com.google.android.gms android.permission.WRITE_SECURE_SETTINGS;pm grant com.google.android.gms android.permission.WRITE_SECURE_SETTINGS;#pm grant com.google.android.gms android.permission.ACCESS_DOWNLOAD_MANAGER;#pm grant com.google.android.gms android.permission.CHANGE_CONFIGURATION;
If above solution doesn’t work for you (For more information, look at this Stackoverflow discussion), to add extra permission to those prebuilt applications, use below snippet code:
include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE := apkname.apkLOCAL_MODULE_CLASS := APPSLOCAL_PRIVILEGED_MODULE := trueLOCAL_CERTIFICATE := PRESIGNEDLOCAL_MODULE_PATH := $(TARGET_OUT)/priv-appLOCAL_SRC_FILES := apkname.apkinclude $(BUILD_PREBUILT)
Note: This snipped code will copy APK to the_/system/priv-app_
folder, to be eligible for system permissions.
Now run Google Play Store application; not anything else; Login and enjoy!