Pregunta:
Insertar el archivo resources.properties en un APK - compatibilidad de idiomas
Fewmitz
2013-10-13 00:11:34 UTC
view on stackexchange narkive permalink

Estoy aplicando ingeniería inversa a una aplicación de Android. Ha pasado un tiempo desde que me puse a tocar con esto, pero tengo problemas para editar el APK para tratar algunas áreas del idioma.

La aplicación original es de un país diferente. Al descompilar y recompilar, el la aplicación se instala, pero aparecen errores cuando intentas ejecutarla en el teléfono. Esto incluye si solo utilizo apktool d y luego apktool b. a través de log cat. Recibo esta excepción:

Causado por : java.util.MissingResourceException: No se puede encontrar el recurso para el paquete 'j.bc.l.resources.resources.resources_en_US', clave ''

desde una llamada ResourceBundle.getBundle. esta página Supongo que es un problema relacionado con la resolución de recursos para diferentes idiomas.

Creo que el problema es que se busca de forma predeterminada una ruta que no existe en la aplicación. , por lo que no puede encontrar el archivo y la aplicación se bloquea. Descomprimí el archivo apk y en j.bc.l.resources hay un archivo resources.properties, pero no hay directorio resources_en_US para buscar.

Entonces en este punto desde Necesito hacer cambios en la aplicación, supongo que necesito poner resources_en_US en ese directorio con un nuevo archivo de propiedades, pero no sé cómo parchear eso en la aplicación. No puedo descomprimir y volver a comprimir porque, por lo que sé, estropea los encabezados y la instalación y la apktool fallarán.

Así que necesito una forma de colocar el archivo resources.properties en la ubicación correcta para resolver correctamente. No hay referencias en el código a resources_en_US, así que supongo que la única forma de hacerlo funcionar es parchear el directorio en la aplicación y reconstruirlo. Pero si hay una manera más fácil de resolver este problema, también estaría de acuerdo.

En pocas palabras: APK es un archivo del que puede extraer archivos, agregar archivos y realizar todas las demás cosas. Así que simplemente use su administrador de archivos favorito para abrirlo y agregar al APK lo que necesite.
Soy consciente de eso, pero como dije en el penúltimo párrafo, intentar renunciar e instalarlo después de agregar archivos falla. Obtengo INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES que, a partir de ahora, supongo que se debe a que tengo certificados diferentes a los originales. Esta podría ser la forma en que se compiló específicamente mi aplicación o porque se trata de una evaluación y no tengo los certificados originales, pero en cualquier caso, descomprimir, agregar archivos y volver a comprimir no me lleva a ninguna parte.
¿Podría intentar [renunciar al APK con la clave de depuración] (http://stackoverflow.com/a/7189815/87872)?
Eso funcionó y todo se instaló correctamente. Gracias a los dos. Pondré una solución formal y cerraré la pregunta
One responder:
Fewmitz
2013-10-14 01:56:14 UTC
view on stackexchange narkive permalink

Para que esto funcione, tuve que usar una combinación de los comentarios que se dejaron en mi publicación original. Como mencioné en el tema, parece que el problema es que los paquetes de recursos no se incluyen correctamente. Mi mejor suposición es que la configuración de compilación original era tal que el paquete de recursos predeterminado es diferente de lo que se documenta aquí. Ya sea que se trate de un problema con la compatibilidad del idioma o simplemente algo que Eclipse (o lo que sea que solían construir) hace detrás de escena.

En cualquier caso, saqué el archivo resources.properties de resources \ y lo copié en resources \ resources_en_US, según la excepción que se estaba lanzando. Las constantes / parámetros que la aplicación estaba leyendo del archivo de propiedades no parecían nada especial (y estaban todas en inglés), así que no tuve que hacer ningún cambio.

Después de eso eliminó la carpeta META-INF según aquí, luego volvió a comprimir y firmar con la clave de depuración predeterminada:

  jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore debug.keystore theApp. apk androiddebugkey  

Después de eso, todo fue kosher, así que solo fue cuestión de combinar todo en el orden correcto.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...