iphone - Comprobar el "uso" de la API privada usted mismo?
code-review ios (5)
Entonces, todos sabemos que Apple prohíbe el uso de API privadas o no documentadas en aplicaciones de iOS. No tengo ningún problema con esto, ya que hay razones técnicas sólidas para explicar por qué esta es una buena idea. Sin embargo, dos veces me han rechazado una aplicación por usar API privadas, cuando este no era realmente el caso. No es difícil: las API privadas incluyen símbolos como connectionState
, setThumbnail
, setOrder
, etc. Cualquier llamada que realice a los métodos nombrados como tales se marcará como un uso privado de la API, incluso si el método que se llama es algo que usted mismo ha definido. Para un programa que hace algo con conexiones, miniaturas o el orden de las cosas, los nombres de método mencionados anteriormente no son tan improbables. Ser rechazado por esto y tener que cambiar el nombre de un método y volver a enviar demora todo por al menos una semana mientras espera una nueva revisión.
Entonces, ¿hay alguna manera, usando nm
, volcados de clase de los marcos de iOS, etc. para descubrir por ti mismo si los nombres de tu método entran en conflicto con algo allí? Si es así, podríamos tener la oportunidad de corregir esto antes de la publicación y evitar el rechazo innecesario.
¿Has probado activar Validate Build Product en la configuración? Se supone que debe realizar todas las comprobaciones iniciales realizadas en su aplicación durante el proceso de revisión.
Archive su aplicación y valídela. Esto pasa por su aplicación y le dice lo que está mal. La verdadera historia, yo solo la experimenté en libxslt / xml.
+ No pierdas tu tiempo en AppScanner (obsoleto) y todo el otool -L, etc. (al principio no tienes idea de qué selector está utilizando está mal).
Erica Sadun actualmente está trabajando en algo que llama APIKit, que es una utilidad que escanea tu código y te advierte proactivamente sobre el uso privado de la API. http://ericasadun.com/2009/12/apikit-goes-beta/#c2
El único problema es que no puedo encontrar nada que ver con eso en ninguna parte. Aparentemente está en beta, pero eso fue anunciado hace 8 meses.
No sé si es estado actual o si está realmente disponible o no, pero es algo que podrías investigar. Tal vez incluso intentes contactarla tú mismo? Erica se cuelga en el canal # iphone-dev en IRC en freenode de vez en cuando, es posible que la atrape allí.
Esto no es exactamente lo que está buscando, pero Xcode tiene dos opciones de validación que probablemente valga la pena intentar.
El primero es una configuración de compilación. No está del todo claro qué comprueba, la documentación no dice e incluso las pláticas de la WWDC no dieron detalles, pero es potencialmente útil. Supongo que no verifica las API privadas.
La segunda opción está en el Organizador. En la vista "Aplicaciones archivadas" puede enviar su aplicación a Apple para su validación. De nuevo, en realidad no establecen exactamente cuáles son los cheques, pero entiendo que esto es más parecido a las pruebas automáticas que ejecutan antes de revisar "manualmente". Supongo que esto verifica las llamadas privadas a la API.
Sugeriría usar App Scanner. Analiza su archivo .app para el uso privado del método API. La versión actual no es compatible con las variables de instancia privadas de la API, pero eso podría funcionar en una versión futura.
Detectará métodos que se han nombrado igual que un método API privado, incluso si tiene su propia implementación. Además, detectará @selectors dentro de los métodos (al igual que el comprobador automático iOS oficial).