J'utilise une LIB statique qui me donne un avertissement lorsque vous téléchargez mon binaire pour examen par Apple. P>
La méthode de la LIB statique qui provoque l'avertissement (sélecteurs non publics) n'est jamais appelé par moi, son correspondant .h est supprimé de mon proj, mais l'avertissement persiste toujours. P>
étant donné que je connais le nom de la méthode causant le problème, existe-t-il un moyen pour moi d'ouvrir / d'éditer cela .A et commencez / supprimez le morceau de code incriminé, puis utilisez la modification de mon projet. P >
Je n'ai pas accès à la source .A source de recompiler, et son très vieux et le créateur de celui-ci n'a pas de coordonnée pour moi pour retrouver. P>
Merci beaucoup, -Cake p>
4 Réponses :
http://opensource.apple.com/source/ccTools/cctools-809 / p>
Je ne présume pas de votre générosité, car je n'ai pas fourni de solution facile. Mais oui, c'est dans la théorie est possible. Vous avez votre travail découpé pour vous. p>
Solution rapide et sale: ouvrez le fichier .a dans un éditeur Hex et modifiez toutes les instances du nom. Laissez le nom de la fonction de la même longueur de sorte que cela compense dans le fichier ne change pas, changez simplement une lettre ou quelque chose comme ça. J'ai fait un test rapide, ajoutant une fonction factice à un sous-projet que nous construisons en tant que bibliothèque statique modifie ensuite le nom de la fonction dans le fichier .a (il y avait cinq cas, pour ce que cela vaut la peine) et tout a été construit d'accord. Je ne vois aucune raison pour laquelle il ne passerait pas la vérification de l'App Store après cela. P>
Je suis vraiment surpris que la fonction était toujours là dans la construction finale, même si je pensais que le décapage de code mort était censé nettoyer tout code inutilisé. Hein. P>
Si elle est utilisée en interne par la bibliothèque, il n'est pas considéré comme "code mort".
Dans mon cas de test, j'avais fait une nouvelle fonction qui n'a été utilisée nulle part. Le décapage de code mort a été activé, mais la fonction n'a pas été supprimée. Alors.
Parce que - je suppose - vous n'avez pas ajouté des sections et -WL, - GC-Sections à vos drapeaux de compilateur.
Pas besoin de pirater les fichiers binaires. Il suffit d'éteindre les "sélecteurs inutilisés" du compilateur AVERTISSEMENT: -FNO-INUTILISÉE-SELECTEURS. P>
Il existe plusieurs solutions, en fonction de votre lib et de votre projet. P>
Dans vos paramètres de construction: P>
Activer " Code Dead Code Stripping Strong>" Si possible: si la méthode n'est jamais utilisée (même en interne), le symbole sera supprimé. P> li>
Utilisez " Activer " (non sûr) Utilisez "
Quelle est la bibliothèque? Quelle API privée utilise-t-il?
Aucune API privée n'a été utilisée. Il a créé une méthode appelée UrlenCodedstring qui partage le même nom qu'un API privé afin qu'il obtient un faux positif. La méthode n'est pas utilisée par l'application pour le tout pour que je souhaite le supprimer.
Vous ne pourrez rien toucher dans une bibliothèque déjà compilée. Supprimez tout le temps, trouvez la source et modifiez, soit de la modifier, ou de le rejeter.
Eh bien, si Apple est capable de numériser / d'analyser à travers elle et de trouver le nom de la méthode appelé .. Il existe sûrement un moyen de numériser à travers un problème pour rechercher le nom de la méthode appelé.
Quant à tous les mofo qui traversent mes applications et enlèvent mes tentatives de protection du droit d'auteur ... J'imagine qu'il doit être absent.
Puisque vous gardez un nom (ou peut-être même un lien de téléchargement) de cette bibliothèque, un tel secret n'a pas l'impression d'essayer d'entrer en contact avec l'auteur. Je ne veux pas vous accuser de rien, ne me trompe pas. Mais il est possible que vous trouviez l'auteur ici et vos problèmes peuvent être résolus le moyen facile. :) +1: C'est une question intéressante.