2016-10-14 2 views
1

Lorsque les utilisateurs utilisent ma transition d'application vers Sierra (MacOS 10.12), le système d'exploitation leur demande soudainement l'autorisation d'accéder à leurs contacts. Je n'ai aucune idée de pourquoi ça fait ça; il ne le fait sur aucun système d'exploitation précédent.Pourquoi Sierra demande-t-il l'autorisation Contacts (AddressBook)?

Plus important encore, il n'y a nulle part que l'application accède aux contacts; en fait, je ne charge pas du tout le framework ABAddresssBook. J'ai recherché la source pour l'adresse et le contact sans résultats. Xcode ne montre aucune "capacité". Le seul framework tiers que j'utilise est Sparkle. (Je lie statiquement la bibliothèque mp4v2, qui ne connaît rien de MacOS.) Pour info, cette application est distribuée en tant que tiers signé, pas via l'App Store. Il a quelques executables de ligne de commande incorporés (tels que ffmpeg etc), encore une fois pas OS X spécifique.

J'ai essayé d'utiliser le débogueur pour voir ce qui déclenche la notification. Il affiche un thread d'arrière-plan avec un bloc qui s'exécute pour obtenir [ABAddressBook sharedAddressBook], puis lance la requête de l'utilisateur, mais aucune indication de qui a lancé ce bloc.

Des suggestions sur où chercher?

Voici la liste des bibliothèques otool -L pour l'application et Sparkle.

<<App>>/Contents/MacOS/app 
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) 
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.1.18) 
/System/Library/Frameworks/QTKit.framework/Versions/A/QTKit (compatibility version 1.0.0, current version 1.0.0) 
/System/Library/Frameworks/Quartz.framework/Versions/A/Quartz (compatibility version 1.0.0, current version 1.0.0) 
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 888.1.2) 
/System/Library/Frameworks/ScriptingBridge.framework/Versions/A/ScriptingBridge (compatibility version 1.0.0, current version 1.0.0) 
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0) 
@rpath/Sparkle.framework/Versions/A/Sparkle (compatibility version 1.6.0, current version 1.11.0) 
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1349.0.0) 
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0) 
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1500.0.0) 
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1348.0.0) 
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1070.0.0) 
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 775.7.0) 
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.11.0) 

<<App>>//Contents/Frameworks/sparkle.framework/Sparkle: 
@rpath/Sparkle.framework/Versions/A/Sparkle (compatibility version 1.6.0, current version 1.11.0) 
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1391.12.0) 
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1229.0.0) 
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5) 
/usr/lib/libxar.1.dylib (compatibility version 1.0.0, current version 1.3.0) 
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) 
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57324.0.0) 
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 800.0.0) 
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 601.1.43) 
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.0.0) 
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0) 
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1229.11.0) 
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 726.4.0) 

`` ``

Répondre

1

avéré être le cadre de l'exploitation forestière Cocoa Bûcheron. L'une des méthodes demande à toutes les classes de voir si elles ont activé la journalisation et effectue un "class_getClassMethod" lors de la journalisation. Si vous faites cela avec ABAddressBook, cela déclenche la demande d'accès de l'utilisateur.