Use nm, cadenas y / u otool para encontrar qué biblioteca está usando frameworks o methods erróneamente

Tuve el mismo problema que en esta pregunta .

Sin embargo, la solución no discute cómo se pueden usar nm , strings u otool para search el código infractor.

Digamos que el código ofensivo utiliza el método advertisingIdentifier de AdSupport.framework desde AdSupport.framework .

  • Concretamente, ¿cómo se pueden search bibliotecas binarias con nm , strings u otool ?

  • ¿Cómo es que no hay ningún error de linker, aunque AdSupport.framework no es parte de la fase de compilation "Link Binary With bibliotecas" o está vinculada a través de OTHER_LDFLAGS ?

Editar:

Después de depurar muchos proyectos, me di count de que la mejor manera de verificar si se usa un marco (o dónde) es simplemente tratar de build el objective sin vincular el marco ni en sus Fases de compilation ni utilizando OTHER_LDFLAGS .

Si el linker falla, tendrá el nombre de la class y la biblioteca responsable de usarlo.

Si pasa, puede explicar a Apple que el marco no está siendo utilizado y que se mostrarán en sus búsquedas de cadenas. Esto funcionó para que nuestras aplicaciones sean aceptadas.

En primer lugar, deberías encontrar la lib que usa tu proyecto, como libxxx.a (libxxx.o). Luego usa nm / otool / strings, like

 nm libxxx.a 

Se pueden agregar parameters adicionales y grep para su reference.

Después de depurar muchos proyectos, me di count de que la mejor manera de verificar si se usa un marco (o dónde) es simplemente tratar de build el objective sin vincular el marco ni en sus Fases de compilation ni utilizando OTHER_LDFLAGS .

Si el linker falla, tendrá el nombre de la class y la biblioteca responsable de usarlo.

Si pasa, puede explicar a Apple que el marco no está siendo utilizado y que se mostrarán en sus búsquedas de cadenas. Esto funcionó para que nuestras aplicaciones sean aceptadas.