37
votes

Comment réparer "Read-Write-Data Sandbox: erreur lors de l'utilisation de Mac Catalyst

J'ai récemment mis à jour macOS Catalina afin de pouvoir mettre à jour certaines de mes applications avec le support Mac à l'aide de Catalyst. Chaque fois que j'exécute l'application et qu'elle tente d'accéder aux données CloudKit (j'utilise CloudKit pour synchroniser les données de base, les données si un compte iCloud est disponible), elle se bloque alors avec l'erreur suivante. [User Defaults] Couldn't write values for keys ( ApplicationAccessibilityEnabled ) in CFPrefsPlistSource<0x600002c07700> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access

J'ai essayé de modifier les autorisations et l'accès dans les paramètres de l'application SandBox dans ma signature et mes capacités, en lecture / écriture. J'ai également essayé de changer les connexions entrantes et sortantes en marche.

Je ne sais pas exactement quel code je devrais afficher, alors voici la zone dans laquelle se bloque.

if isICloudContainerAvailable() {
            print("iCloud Available")
            let container = NSPersistentCloudKitContainer(name: "Shopping_App")
            
            container.loadPersistentStores(completionHandler: {
                (storeDescription, error) in
                if let error = error as NSError? {
                    fatalError("Unresolved error \(error), \(error.userInfo)")
                }
            })

            return container
}

J'exclus l'application pour créer / obtenir les données CoreData et si disponible (ce qui est dans ce cas) pour me connecter aux données synchronisées CloudKit. Mais il se bloque en ce moment avant même d'afficher des vues, ce qui me laisse penser qu'il plante quelque part dans l'AppDeleget.

Mise à jour du 14 octobre - J'ai constaté que si je force Jump Over the Breakpoint où l'application se bloque, je peux continuer dans l'application et cela fonctionne bien. Ce qui m'amène à penser que l'erreur est vraiment dans l'AppDeleget, en particulier en disant que l'interface utilisateur n'apparaît qu'après avoir franchi le point d'arrêt défini lors du crash.

Mise à jour du 4 novembre - Ce problème devient donc encore plus étrange. J'ai oublié que j'utilisais une version bêta de Xcode, donc ok, cela aurait pu être juste après que je m'en sois rendu compte la semaine dernière. J'ai essayé d'exécuter l'application via la version publique et l'application ne s'est jamais arrêtée pour un point d'arrêt mais se bloque complètement avec Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) . Cette erreur est vraiment étrange. Serait-ce une erreur que je devrais signaler à Apple? J'ai pensé à faire cela mais j'ai décidé de ne pas le faire parce que cela me semblait être quelque chose que j'aurais pu faire, mais maintenant en repensant si je devais le faire ou non. J'aurais aimé pouvoir trouver la solution à ce problème parce que j'aimerais publier la version macOS au public, mais je n'ai pas eu de chance de trouver une solution.

Mise à jour du 8 novembre - Dans Xcode 11.2.1 GM seed, le problème persiste. Je n'ai pas encore trouvé la raison exacte de ce problème, mais je continuerai d'essayer. J'ai également été incapable de reproduire l'erreur écrite dans la mise à jour du 4 novembre, sur aucune version de Xcode. Je n'ai rien trouvé d'autre mais je voulais mettre à jour cela avec des informations sur la graine GM et si cela se produit toujours.

Mise à jour du 13 novembre - J'ai décidé de continuer et de télécharger l'application sur Apple pour approbation, car la création de l'application et son exécution indépendamment de Xcode fonctionnaient très bien. Apple a approuvé l'application sans aucune plainte concernant ce problème. Cela semble être un problème Xcode. Je continuerai à mettre à jour cela cependant et si / quand je trouve une solution, je publierai la solution à ce problème mais je n'ai rien trouvé de plus pour contourner ou résoudre ce problème.

Mise à jour du 20 novembre - Sur Xcode 11.3 Beta Build 11C24b, le problème persiste. Rien d'autre n'a changé et je n'ai rien trouvé d'autre pour résoudre ce problème. Je vais continuer à le tenir à jour mais je n'ai encore rien trouvé d'autre.

Mise à jour du 11 décembre - Sur Xcode 11.3 Public 11C29, le problème persiste. Cependant, maintenant ce n'est pas cohérent et parfois je dois passer deux fois sur le point d'arrêt au lieu d'une seule pour que l'application continue à se lancer. Cela ne se produit toujours pas s'il est exécuté indépendamment de Xcode.

Mise à jour du 2 janvier 2020 - Se produit toujours mais a maintenant vérifié que cela se produit sur un vrai appareil iOS 13. Aucune autre solution ou étape n'a été trouvée. Je continuerai cependant à mettre à jour ce post avec toute autre information.

Mise à jour du 17 février 2020 - Pas vraiment de mise à jour mais toujours en cours sur Xcode 11.4 Beta (11N111s). Continuera à mettre à jour cet article, mais peu de choses ont changé. (Correction de quelques erreurs sur ce post également)

Mise à jour du 10 mars 2020 - Je ne savais pas que Xcode beta 11N132i était sorti mais après les tests, il se produit toujours. Cependant, bien que cela puisse encore se produire, il est au moins moins cohérent. Maintenant, au lieu que cela se produise et que cela se produise à chaque fois, cela semble être quelque peu aléatoire.

Mise à jour du 18 avril 2020 - Désolé de ne pas avoir mis à jour cet article, je n'ai pas pu programmer jusqu'à présent. Je n'ai toujours pas compris ce problème, mais il semble que maintenant cela ne se passe pas vraiment. Cela arrive encore rarement maintenant. C'est également sur Xcode 11.4.1 (11E503a), et je ne sais pas pourquoi encore. Je vais continuer à essayer de mettre à jour ce message. Merci. Si vous avez des suggestions pour essayer de trouver la cause, je suis disposé à les entendre.

Mise à jour du 14 mai 2020 - Xcode 11.5 Beta 2 (11N605f) Ce problème se produit toujours au hasard, mais il semble maintenant ne pas toujours inclure l'erreur mais pointe toujours vers cette partie du code. Merci pour votre soutien à cet article, et je continuerai de le mettre à jour au fur et à mesure que j'en trouverai plus sur ce problème.

Mise à jour du 5 juin 2020 - Je suis désolé de ne pas avoir mis à jour cela plus tôt, j'ai complètement oublié quand j'avais mis à jour Xcode. Sur Xcode 11.5, ce problème persiste comme il l'a été. J'ai également mis à jour vers Catalina 10.15.5 et j'ai vu peu ou pas de changements. Cependant, comme les commentaires l'ont dit, Catalina 10.15.4 a aidé cela, j'ai entendu dire, mais 10.15.5 ne semblait rien changer, ce qui est étrange.

Mise à jour du 27 juin 2020 et du 22 juillet 2020 et du 10 août 2020 - J'ai mis à jour mon projet pour qu'il prenne désormais en charge Xcode 12 et il semble toujours avoir le même problème. Rien n'a vraiment changé et le journal est exactement le même. J'apprécie tous ceux qui souhaitent continuer à aider à résoudre ce problème également. C'est également la même chose sur Xcode 12 Beta 2. Le même excat pour les bêtas 3 et 4.

Mise à jour du 28 septembre 2020 - Il s'agit toujours d'un problème sur les versions GM et publique de Xcode 12. Je n'ai pas mis à jour vers Xcode 12.0.1 car j'attends macOS Big Sur, mais à ce stade, je doute que cela résoudrait il. Je n'ai vraiment aucune mise à jour, sinon cela se produit toujours et je ne trouve pas le problème.

Mise à jour du 3 novembre 2020 - Cela semble toujours être un problème sur Xcode 12.1.1 Release Candidate. Désolé de ne pas avoir mis à jour cela depuis si longtemps, je suspendais la mise à jour de Xcode comme je l'ai indiqué précédemment, mais j'ai décidé de continuer et de mettre à jour. Cependant, la mise à jour vers la version Release Candidate n'a rien changé, ou du moins que je puisse remarquer. Un changement que j'ai remarqué; cependant, c'était qu'il semblait montrer ce problème plus tôt, mais cela pourrait simplement être qu'il le compile plus rapidement. Pour résumer, aucun changement majeur à ce problème et rien n'a vraiment changé depuis un moment.

MISE À JOUR 16 novembre 2020

J'ai depuis mis à jour vers macOS Big Sur 11.0.1 et mis à jour Xcode vers 12.3 beta. Le problème semble toujours survenir après avoir dû modifier quelques éléments aléatoires pour le faire fonctionner sur Big Sur. Cependant, la plupart de tout ce que j'ai changé, je pense, n'est pas lié car il était principalement lié aux éléments de l'interface utilisateur. Il s'agit peut-être simplement de Big Sur, mais il se compile beaucoup plus rapidement, et l'erreur apparaît maintenant beaucoup plus rapidement; cependant, c'est toujours la même erreur.


12 commentaires

Cela semble être un problème Xcode. J'ai pensé que je devrais essayer de créer l'application et de l'exporter en tant qu'application et de l'exécuter, et croyez-le ou non, cela fonctionnait très bien sans aucun problème. Cela m'amène donc à penser qu'il s'agit d'un problème Xcode et non d'un problème avec mon application.


Hey MasterChief, nous travaillons sur un projet avec Catalyst et cloudkit, Notification silencieuse fonctionnant bien à la fois iPhone et iPad mais ne fonctionnant pas dans Mac App (Catalyst) => (didReceiveRemoteNotification) n'a reçu aucune notification sur Mac App, avez-vous une idée ?


Mes excuses si je ne comprends pas, mais cela pourrait être un peu hors sujet de cette question, vous voudrez peut-être ouvrir votre propre question. Mais je ne suis pas complètement sûr. Assurez-vous d'avoir ajouté les fonctionnalités et activé les signaux entrants et sortants. J'espère que cela a aidé sinon à examiner l'ouverture d'une nouvelle question possible avec plus de détails et je peux voir si je peux aider. Merci


stackoverflow.com/questions/59778113/...


J'apprécie vraiment vos mises à jour ici 🙏 Au nom de "J'ai le même problème", des gens comme moi ...


Vous êtes les bienvenus. Heureux de ne pas être le seul à avoir ce problème.


Même problème ici, même si mon application ne plante pas, je reçois des journaux sur la console que je préfère voir résolus, j'ai peur que certains d'entre eux ne cassent mon application tôt ou tard


Encore un problème avec la version de sortie de Xcode 12.


@RickJansen oui. J'ai essayé de garder cela à jour avec cela, mais rien n'a vraiment changé car c'est un problème.


J'ai déposé un bugr .. feedbackreport. En outre, il existe des problèmes d'accès au groupe d'images en HTML intégré dans les pages Web intégrées à l'application.


J'ai également eu des problèmes avec les images groupées, mais je ne pense pas avec le HTML intégré.


Le HTML fonctionne, mais pas les images du HTML. Il est étrange que les messages d'erreur du journal du bac à sable apparaissent avant même "- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions", donc avant que mon code ne prenne le contrôle. Je ne comprends pas vraiment ça.


3 Réponses :


2
votes

MasterChief96, vous n'êtes pas seul. Voici ma configuration:

MacOS 10.15.3 Xcode 11.4.1

Je crée un tout nouveau projet SwiftUI "Hello World", j'active Mac comme périphérique cible, alias Catalyst.

J'ai défini la cible de déploiement iOS sur 13.2 (sinon j'obtiens une erreur d'exécution MacOS indiquant que j'ai besoin de Catalina 10.15.4)

Réglez le schéma sur "Mon Mac", compilez et exécutez et obtenez:

[User Defaults] Couldn't write values for keys
    ApplicationAccessibilityEnabled
    AccessibilityEnabled
    FullKeyboardAccessFocusRingEnabled
setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access

Puisqu'il fait référence au bac à sable, je modifie le paramètre «Signature et capacités» de l'application Sandbox pour inclure la lecture / écriture pour l'accès aux fichiers sélectionnés par l'utilisateur et les téléchargements.

J'ai assez Xcode, supprime les données dérivées du projet, ouvre le projet et l'exécute. Les messages d'erreur persistent lors de l'exécution sur MacOS. (Je ne vois pas les messages lors de l'exécution sur iOS.)

Juste deviner ici, mais cela semble être encore un autre bogue dans l'environnement Catalyst? Peut-être que ce bogue est corrigé dans Catalina 10.15.4 mais cette mise à jour a été un tel désastre pour moi que j'ai dû sauvegarder le portage vers 10.15.3.


2 commentaires

J'ai essayé les mêmes paramètres de type d'accès au fichier, mais l'erreur réelle est Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access Je ne vois pas le paramètre "Écriture des préférences utilisateur. Je vois Fichier sélectionné par l'utilisateur


(Ceci est en réponse à WholeCheese) Cela semble être le cas, mais comme vous l'avez dit, ce n'est pas la meilleure idée de mettre à jour vers Catalina 10.15.4. La partie étrange est que j'ai mis à jour vers Catalina 10.15.5 et que je n'ai pas encore trouvé de problèmes instables, mais que le projet n'a pas changé comme vous l'avez dit dans Catalina 10.15.4 et comme j'ai entendu d'autres personnes.



0
votes

Pour moi, je recevais ce message d'erreur exact, mais le crash se produisait en raison du message d'erreur suivant où il faisait référence à un CFBundleName manquant dans le fichier Info.plist pour mon application Mac Catalyst.

L'extrait de trace de pile:

(Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-06-27 11:01:52.403837-0700 Manga Relay D[17329:517025] [General] An uncaught exception was raised
2020-06-27 11:01:52.403908-0700 Manga Relay D[17329:517025] [General] *** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: title)
2020-06-27 11:01:52.404006-0700 Manga Relay D[17329:517025] [General] (
    0   CoreFoundation                      0x00007fff2eb82be7 __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff6795a5bf objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff2ec3160e -[__NSCFString characterAtIndex:].cold.1 + 0
    3   CoreFoundation                      0x00007fff2ec3c17c -[__NSDictionaryM setObject:forKey:].cold.3 + 0
    4   CoreFoundation                      0x00007fff2eac0329 -[__NSDictionaryM setObject:forKey:] + 976
    5   UIKitCore                           0x00007fff6f5f2c8f -[_UIMenuBarItem properties] + 99
    6   UIKitMacHelper                      0x00007fff5fd6272a UINSNSMenuItemFromUINSMenuItem + 90
    ...

Une fois que j'ai spécifié un nom dans le "Nom du Bundle" (aka CFBundleName), le crash a disparu mais je reçois toujours le message d'erreur concernant la configuration des préférences en dehors du conteneur d'une application.

Mise à jour avec plus de détails: La capture d'écran suivante de mon Info.plist définit le CFBundleName comme ma variable définie par l'utilisateur comme $(MangaRelayBundleDisplayName) et j'ai découvert que je n'avais jamais défini cela nulle part, donc c'était nul qui causait le crash. Lorsque j'ai entré une valeur telle que "Mon application", le plantage a disparu. Maintenant, cette solution n'a rien à voir avec la question initiale, et fondamentalement, j'ai été induit en erreur par l'avertissement "accès au bac à sable", mais j'ai pensé que d'autres personnes pourraient être induites en erreur par l'avertissement.

Capture d'écran Info.plist

Je suis sous macOS 10.5.5 et Xcode 11.5.


3 commentaires

Si vous le pouvez, pourriez-vous s'il vous plaît fournir un exemple de ce que vous entendez en ajoutant le CGBundleName?


Ouais, je viens de mettre à jour avec une capture d'écran et un peu plus d'explications. @ 117MasterChief96


Merci. J'avais déjà ça mais merci pour la suggestion. Avec un peu de chance, comme vous l'avez dit, but I figured there could be other people who are being mislead by the warning . J'espère que votre suggestion pourra aider d'autres personnes déconcertées par cet avertissement.



-1
votes

J'ai eu le même problème. Résolu en supprimant le point d'arrêt «Tous les problèmes d'exécution».

Après des tests,

  • Thread Satanizer (Runtime Issue) fonctionne correctement
  • Undefined Behavior (Runtime Issue) fonctionne correctement
  • Le vérificateur de thread principal (problème d'exécution) fonctionne correctement
  • Frameworks système (problème d'exécution) BREAK

0 commentaires