una publicas proyectos proyecto preescolar planificacion para ideas escolares escolar elaboración comite bibliotecas biblioteca actividades android android-library android-assets library-project

android - publicas - cómo hacer referencia a un activo en un proyecto de biblioteca



proyectos para bibliotecas escolares (7)

En una clase que pertenece a un proyecto de biblioteca que llamo:

webview.loadUrl("file:///android_asset/info.html", null);

Desafortunadamente, esto solo funciona si también duplico el archivo info.html en la carpeta de activos del proyecto de la aplicación .

¿Hay alguna forma de indicar un código de biblioteca de Android: "busque este archivo en la carpeta de activos de la biblioteca, no en la carpeta de activos de la aplicación"?


Bueno. He estado estresándome y perdiendo el sueño sobre esto por un tiempo. Soy el tipo de persona que ama la creación de API y odia la integración complicada.

No hay muchas soluciones en Internet, así que estoy bastante orgulloso de lo que he descubierto con un poco de Eclipse Hackery.

Resulta que cuando pones un archivo en la carpeta / asset de Android Lib. El apk objetivo capturará esto y lo colocará en la raíz del archivo APK. Así, haciendo que el acceso general falle. Esto se puede resolver simplemente creando una Biblioteca Java sin procesar y colocando todos los activos allí, es decir (JAVALIB) /assets/fileX.txt.

A su vez, puede incluir esto como un origen de carpeta de Java Build Path en Proyecto> Propiedades> Java Build Path> Source> Link Source.

  1. Fuente de enlace
  2. Haga clic en Variables. y Agregar nueva variable, es decir, VAR_NAME_X. ubicación: ../../(relative_path_to_assets_project)
  3. Haga clic en Aceptar

Ahora, cuando cree y ejecute su aplicación, la carpeta de activos en el APK contendrá sus archivos (GLOBAL Library) como desea.

No hay necesidad de reconfigurar internos de Android o nada. Todo es capaz dentro de unos pocos clics de Eclipse.


Confirmo que el enfoque de Daniel Grant funciona al menos en la siguiente situación: el proyecto de destino NO tiene una carpeta de activos (o la carpeta está vacía, por lo que puede eliminarla de manera segura). No configuré ninguna variable. Simplemente configure un LinkSource de la siguiente manera (solo un ejemplo) Ubicación de la carpeta vinculada: / home / matthew / workspace_moonblink / assetForAdvocacy / asset Nombre de la carpeta: asset

El "assetForAdvocacy" es un proyecto Java, (creado con New-Project - Java Project) con una carpeta src vacía, y una nueva carpeta llamada "asset", que ahora proporciona la carpeta completa de activos para el proyecto de destino.

Esta es una forma bastante sencilla dentro de Eclipse para proporcionar reutilización de activos en muchos proyectos diferentes, si aún no tienen activos, lo suficientemente bueno como para comenzar. Probablemente me gustaría mejorarlo para convertirme en un proveedor de contenido a largo plazo, pero eso es mucho más desarrollo.

Mi proyecto accede a los activos con el siguiente código: String advocacyFolderInAssets = "no_smoking /"; // una carpeta debajo de asset / String fn = advocacyFolderInAssets + imageFilename; Mapa de bits pristineBitmapForAdvocacy = getBitmapFromAsset (context, fn);

Yo uso Motodev Studio 3.1.0 en Ubuntu. No me permitiría ''fusionar'' una nueva carpeta de activos en el nuevo proyecto solo de activos en una carpeta de activos existente en el proyecto de destino.


De los documentos de Android :

Los proyectos bibliotecarios no pueden incluir activos en bruto.

Las herramientas no admiten el uso de archivos de activos sin procesar (guardados en el directorio de activos) en un proyecto de biblioteca. Cualquier recurso activo utilizado por una aplicación debe almacenarse en el directorio de activos del propio proyecto de aplicación. Sin embargo, los archivos de recursos guardados en el directorio res / son compatibles.

Si desea incluir archivos de un proyecto de la Biblioteca, deberá colocarlos en los recursos en lugar de en los recursos. Si está intentando cargar archivos HTML de su proyecto de biblioteca en un WebView, esto significa que tendrá que utilizar un método más indirecto que la URL de activos habitual. En su lugar, tendrá que leer los datos del recurso y usar algo como loadData .

Esta respuesta no está actualizada , el sistema de compilación de Gradle y los archivos AAR son compatibles con los activos.


Encontré esta vieja pregunta , también podría ayudarte.

Esta es la forma oficial que usa Google para archivar esto (de la publicación anterior): Link


Esto ahora es posible usando el sistema de construcción Gradle.

Probando con Android Studio 0.5.0 y v0.9 del complemento Gradle de Android, he encontrado que archivos como

MyLibProject/src/main/assets/test.html

están correctamente empaquetados en la aplicación final y se puede acceder en tiempo de ejecución a través de la URL esperada:

file:///android_asset/test.html


Puede lograr esto creando un enlace simbólico en la carpeta de activos del proyecto que apunta al directorio en el proyecto de la biblioteca.

A continuación, puede acceder a continuación:

webview.loadUrl("file:///android_asset/folder_in_a_libary_project/info.html", null);


Si desea utilizar una configuración en la que se creen múltiples productos derivados de una biblioteca, podría considerar usar svn: externals o una solución similar en su sistema SCM. Esto también hará el truco de que los activos estáticos como la ayuda en línea pueden ser versionados por separado del código fuente de Android.