android module resources titanium

en titanio, ¿es posible acceder a los archivos de recursos(xml) agrupados en un frasco de terceros desde un módulo de Android?



module resources (2)

(Respuesta rápida y breve: coloque los archivos de recursos como parte de su proyecto "Titanium", pero no los coloque en el "módulo". Si insiste en colocarlos en el "módulo", siga leyendo.)

Finalmente, tengo la respuesta.

El documento oficial es correcto, solo coloque los archivos de recursos de terceros (carpeta de res de un proyecto nativo de Android) en la carpeta android/platform/android del módulo de titanio. ¡Eso es!

Por ejemplo, la estructura de mi proyecto de módulo se muestra a continuación:

# name: test_ti_module_qq_login: android /--assets /--build /--dist /--lib /--libs /--src /--platform /--android /--res # just put the resources here in your module! /--drawable /--drawable-hdpi /--drawable-xhdpi /--layout /--values assets documentation example LICENSE ...

y para su información, la carpeta de recursos nativos de Android se ve así:

# A native Android project structure ▸ assets/ ▸ bin/ ▸ gen/ ▸ libs/ ▾ res/ # these are the bundled resource files ▸ drawable-hdpi/ ▸ drawable-xhdpi/ ▸ layout/ ▸ values/ ▸ src/

La causa raíz por la cual Titanium siguió mostrando resource files missing es que me perdí algunos de los archivos de recursos. (pero es un poco claro que la versión nativa del código podría ejecutarse sin errores, lo que sea, finalmente obtuve la solución)

adición:

Parece que muchas personas se encontraron con el mismo problema? Abriré el código fuente de mi proyecto en estos días.

He estado trabajando sobre cómo acceder a los archivos de recursos incluidos en paquetes de terceros (archivos xml, imágenes, referidos here ) desde un módulo de Android. ¿Es posible hacer esto?

Debido a que estos archivos de recursos son llamados por los archivos jar de terceros compilados, lo que significa que no puedo usar el método TiRHelper.getApplicationResource en el código java nativo a menos que yo:

  1. descompilar los archivos jar a código java.
  2. Reemplace todas las referencias de recursos nativos a TiRHelper.getApplicationResource
  3. vuelva a compilar el código fuente java de terceros en el archivo jar.

(Este proyecto de terceros es https://github.com/ShareSDKPlatform/ShareSDK-for-Android/tree/master/Sample , puedo compilarlo y ejecutarlo fácilmente. Puede ver que hay archivos de recursos en la carpeta / res, y uno de los archivos jar utilizados estos archivos de recursos.)

Busqué un día entero pero no encontré respuesta.

Obtuve algunas pistas del document oficial, lo intenté pero no tuve éxito. el error muestra que el recurso no es accessbile por el código java del módulo de titanio.

Además, esta misma pregunta ( http://developer.appcelerator.com/question/178857/unable-to-load-resources-from-3rd-party-librarys-resourced-in-android-module ) no se responde.

esta respuesta ( http://developer.appcelerator.com/question/49671/android-r-references-in-appcelerator-module#answer-266726 ) me da una pista de que los métodos:

getResource() gives an Error getAndroidResource() gives an Error but getApplicationResource() DOES work

y hay una pista de que el ''apklib'' puede ser útil, pero después de leer algunos mensajes, encontré que se ha eliminado del sitio web oficial de Maven. y ahora Google recomienda usar el archivo ''aar'' en su lugar. Pero de acuerdo con este número oficial de Titanium ( https://jira.appcelerator.org/browse/TIMOB-18565 ), todavía no es compatible con titanium.

así que, quiero saber, ¿es posible permitir que el código java (p. ej., una actividad) acceda a sus archivos de recursos incluidos en el paquete de terceros (value / string.xml o algo así) desde el módulo Titanium? Si es así, ¿hay algún código de ejemplo al que pueda referirme?

¡muchas gracias!


Actualización con base en la nueva información. Para que esto funcione, solo necesitas combinar la carpeta res de github en tu plataforma / android / res. Luego, cuando compiles tu módulo de forma normal.

===========================

Si está accediendo desde el módulo en java, intente usar TiRHelper.getApplicationResource para las cosas que está proporcionando.

Así por ejemplo si has añadido:

plataformas / android / values ​​/ strings.xml hola!

La llamada seria

TiRHelper.getApplicationResource("string.helloworld");

Srouce de clase

Javadoc

Si ha encontrado esto útil, por favor vote. Si no es así házmelo saber para que pueda ajustarme.