API privées non contrôlées par la validation Xcode

MalaMala Membre, Modérateur

Je viens d'avoir la désagréable surprise de voir la soumission d'une appli rejetée sur la Mac App Store pour usage d'API privée.


 


Cela me semble une aberration en soit mais la fonction de pré-validation mise à  disposition dans Xcode ne semble faire absolument aucun contrôle d'usage d'API privée.


 


Dans mon cas, il s'agissait de quelques lignes de code provenant du composant open source SMDoubleSlider...



 



The use of non-public APIs can lead to a poor user experience should these APIs change in the future, and is therefore not permitted. The following non-public APIs are included in your application:


: OBJC_IVAR_$_NSCell._cFlags

: OBJC_IVAR_$_NSSliderCell._scFlags : OBJC_IVAR_$_NSSliderCell._value



 

Rien de méchant en soit mais c'est très frustrant. Cela signifie qu'on ne peut faire aucune confiance à  Xcode alors que c'est la première chose qu'on aimerait pouvoir valider dès qu'on inclue des composants Open Source dont on ne va pas forcément relire tout le code.


 


Si vous avez une solution de contrôle annexe qui soit fiable, je suis preneur pour éviter de perdre du temps à  l'avenir.


Réponses

  • Je ne sais pas si il existe une solution,


     


    le souci c'est que Apple fait la vérification sur 2 passes


     


    La première au niveau de XCode,


     


    la deuxième quand tu envoies le binaire via Itunes Connect.


     


    Tu peux utiliser par exemple le framework QTKit qui est déprécier , la validation passera la première étape 


     


    mais l'app sera refusée (invalid binary) a la seconde.

  • MalaMala Membre, Modérateur
    décembre 2013 modifié #3

    Dans ton cas c'est immédiat lors de la soumission? Moi il m'indiquait que tout était ok et j'ai reçu un mail aujourd'hui m'invitant à  consulter le "Resolution Center". C'est surprenant, sur la toile beaucoup de gens semblent indiquer que ce pré contrôle est réalisé.


     


    J'ai vu quelques liens envoyant vers l'appli App Scanner mais elle n'est plus maintenue et semble être pour iOS seulement.


  • devulderdevulder Membre
    décembre 2013 modifié #4


    Dans ton cas c'est immédiat lors de la soumission? Moi il m'indiquait que tout était ok et j'ai reçu un mail aujourd'hui m'invitant à  consulter le "Resolution Center". C'est surprenant, sur la toile beaucoup de gens semblent indiquer que ce pré contrôle est réalisé.


     


    J'ai vu quelques liens envoyant vers l'appli App Scanner mais elle n'est plus maintenue et semble être pour iOS seulement.




     


    Oui c'est immédiat (enfin dans mon cas), tu reçois un mail dans les 5 minutes indiquant que l'app n'est pas valable.


     


    Pour info, dans le même genre un point ou Apple est super chiant c'est sur les Entitlements Keys


     


    Il faut mettre uniquement celle que tu utilises vraiment, et bien leur expliquer leur utilisation dans ton programme!


  • FKDEVFKDEV Membre
    décembre 2013 modifié #5

    Un composant open-source qui inclue des API privées sans le dire dans le readme, c'est pas cool. 


    Après sur Mac, c'est vrai que c'est moins dans les habitudes des développeurs d'éviter les API privées.


     


    C'est pas le rôle de Xcode faciliter la vie des utilisateurs de librairie open-source peu scrupuleuse.


    Après, puisque l'outil existe quelque part, pourquoi ne pas l'inclure dans Xcode ?


     


    A choisir, j'aimerais mieux qu'Xcode vérifie les API qui sont incompatibles avec mon "Deploy OS".


  • MalaMala Membre, Modérateur


    Un composant open-source qui inclue des API privées sans le dire dans le readme, c'est pas cool. 


    Après sur Mac, c'est vrai que c'est moins dans les habitudes des développeurs d'éviter les API privées.




    Je me permettrait pas de les blâmer. La dernière mise à  jour de SMDoubleSlider date de 2010 et sur Mac l'accès aux API privés a longtemps été un mal nécessaire. Là  par exemple, il s'agit d'un dérivé de NSSlider permettant un réglage min et max (parfait pour ajuster les seuils min et max de l'histogramme d'une image dans mon cas). Apple ne propose aucune équivalence dans IB et la surcharge d'un NSSlider est pas des plus simples. Là  je me suis même pas posé la question, j'ai vite retaillé un fake à  partir d'une  NSCustomView pour pouvoir re-soumettre au plus vite.

  • @Mala balance une autre version vite :), peux être qu'elle sera validée avant la fin de la semaine, puisque Apple ne va pas faire de la review pendant la semaine de Noel.

  • MalaMala Membre, Modérateur
    décembre 2013 modifié #8


    @Mala balance une autre version vite :), peux être qu'elle sera validée avant la fin de la semaine, puisque Apple ne va pas faire de la review pendant la semaine de Noel.




    Merci samir. :)


    C'est ce que j'ai fait immédiatement le temps de remettre à  plat le composant. J'espère qu'il n'y aura pas d'autre mauvaise surprise. Je croise les doigts. 


Connectez-vous ou Inscrivez-vous pour répondre.