IDs de Android protegidas en R.java

Para aquellos usuarios que han gastado cualquier cantidad de tiempo en el código fuente de Android, no es noticia de que los ID generados en la clase android.R no reflejan los recursos reales encontrados en los directorios res/ del JAR suministrado. Muchos de los diseños / estilos / diseños no son "públicos" y son accesibles a las aplicaciones haciendo referencia a android.R.xxx .

Mi pregunta es si alguien sabe el mecanismo por el cual Android es capaz de generar una clase R.java que difiere del gráfico de recursos reales? En segundo lugar, ¿es un mecanismo (usando reglas de compilación, etc.) que nosotros, como desarrolladores, podíamos aprovechar para proteger parcialmente los identificadores que se hacen públicos en aplicaciones que se usan como bibliotecas?

¡Gracias por adelantado!

Android agrupa recursos utilizando aapt y genera el archivo R utilizando esta herramienta durante el proceso de compilación. En este paso, los archivos XML se compilan en binario y otros recursos se empaquetan tal y como están. Puede abrir un archivo .apk como un archivo comprimido y acceder a todos los archivos de recursos tal cual. Los proyectos de biblioteca simplemente contienen archivos de origen y recursos que se agregan al proyecto en tiempo de compilación, por lo que existirían de alguna manera en el archivo .apk. Probablemente los diseños no son 1: 1 porque el XML ya está compilado para el proyecto de biblioteca. Probablemente hay una manera en la que usted podría usar aapt para quitar los archivos del proyecto de la biblioteca de ser incluidos en el tiempo de construcción, pero entonces no sería accesible en su proyecto. También podría haber una forma de ofuscar sus nombres de recursos en tiempo de compilación usando aapt y ant, pero eso no impide que puedan acceder a ellos.

No estoy seguro de por qué querría una clase R.java que difiera del gráfico de recursos real. O no incluyen esos recursos en tiempo de construcción o van a estar en el apk. Sus diseños se comprimen como archivos binarios en la salida, así que no estoy seguro de lo fácil que son para descompilar o reutilizar en otro proyecto.

¿Cuál es el final aquí? Si es para proteger sus recursos, será difícil. Android es extremadamente inseguro si alguien tiene la capacidad de enraizar su teléfono. Si quieres proteger tu IP, que estoy suponiendo que es el final aquí, intentaría y compilar mi proyecto en un apk y ver si puedo descompilar o extraer los recursos críticos del apk. Tal vez intente alguna ofuscación, pero de nuevo, no sé lo suficiente acerca de los archivos XML compilados para saber si se obfuscated lo suficiente como para no ser fácilmente descompilados.

Alguien se siente libre de corregirme si estoy equivocado, pero esto es sólo mis 2 centavos.

  • Recurso no encontrado de android no encontrado excepción
  • Cómo utilizar Toast en ASyncTask / onPostExecute con cadena de recursos?
  • Ningún paquete conocido al obtener valor para el número de recurso
  • Columna de 2 columnas con 50% exactamente para cada columna
  • Dibujo a un lienzo mediante un método personalizado?
  • ¿Por qué Android está buscando los recursos QVGA en el orden incorrecto mdpi> hdpi> ldpi?
  • Samsung Galaxy Nexus diseño / estructura estirable?
  • ID de recurso de Android
  • Recursos android de escala automática
  • Temas descargables en Android
  • Cambiar idioma mediante programación en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.