Ahora que Apple está ejecutando algún tipo de análisis estático para verificar automáticamente el uso privado de API, varias personas han sido atrapadas debido a la biblioteca Three20. Utilizo otra biblioteca de terceros (que compilo a mí mismo desde el código) y me gustaría auditarla automáticamente para el uso privado de la API antes de enviarla a Apple, por lo que puedo eliminar/volver a escribir esas partes.Cómo detectar y evitar el uso de API privadas en bibliotecas de terceros
Si ejecuto nm
en el archivo ejecutable de mi aplicación, obtengo una lista de símbolos, y veo símbolos allí que no uso. Por ejemplo, veo _AudioServicesPlaySystemSound, y si busco "AudioServicesPlaySystemSound" en XCode, no obtengo ningún resultado. ¿Hay alguna forma de discriminar automáticamente las llamadas a API privadas, por ejemplo, me doy cuenta de que Apple tiene la costumbre de nombrarlas con un guión bajo inicial?
Sin embargo, si incluyo deliberadamente una llamada a una API privada, no aparece en la salida de nm
, pero sí aparece si ejecuto strings
en el archivo binario. Basado en esto, una idea que tuve fue compilar una gran lista de todas las llamadas privadas de API en una tabla enorme, y buscarlas automáticamente en el resultado de strings. No he hecho eso todavía.
¿Alguien tiene alguna sugerencia sobre cómo detectar esto automáticamente, así que solo estoy pasando por el proceso de revisión una vez?
¿Ellos se opone a Three20? Eso fue escrito por el desarrollador que creó la aplicación de Facebook para iPhone. Si su aplicación es rechazada debido a Three20, la aplicación de Facebook también debe ser ... Heh. Solo digo ;-) –
Sí ... http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/6d5046771539d139 –
Imagino que la próxima vez que Facebook envíe una actualización, será rechazado si no usan la última versión que cumple con las políticas de Apple. – bpapa