Récemment, un certain package de canal a signalé un problème d'exception de package inconnu de bugly. Après avoir analysé le code source de la couche de structure, il a été constaté qu'il s'agissait d'un problème de compatibilité de l'API de plug-in. Le package de canal s'exécutait dans un environnement sandbox (233 Paradis).
Phénomène
Pile d'erreurs Java :
autres appareils, informations de fréquence : se produit actuellement sur le système Android 6.0
Processus d'analyse du code source :
À partir de l'appel de code ApplicationPackageManager#isPermissionRevokedByPolicy() :
mPm est la classe proxy Java générée par IPackageManager.aidl pour le client correspondant, qui est utilisée pour la communication interprocessus avec le système pms.
Ensuite, accédez à isPermissionRevokedByPolicy() dans le service système PMS :
Ensuite, vérifiez la logique de getPermissionFlags() :
car le package 233 canaux du jeu n'est pas directement installé sur le système de téléphonie mobile, donc pms ne peut pas trouver les informations de package pertinentes de le paquet de 233 chaînes du jeu, jetez juste une exception. Correspond à la pile d'appels sur Bugly.
Ensuite, vérifiez la logique de getPermissionFlags() sur android 7.0 et supérieur :
depuis android 7.0 et supérieur, ce problème n'existe pas, et le code source du système a été modifié.
3. Inférence
233 Paradise Dans la version Android 6.0, il existe une faille dans l'appel de l'API PackageManager#isPermissionRevokedByPolicy, ce qui provoquera un plantage.