Question

Dans une classe appartenant à une Bibliothèque Projet I appel:

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

Malheureusement, cela ne fonctionne que si je double le fichier info.html dans le de l'application dossier d'actifs du projet ainsi.

Est-il possible de dire un code bibliothèque Android: « look pour ce fichier dans l'actif de la bibliothèque dossier, pas dans les actifs de l'application dossier »

?
Était-ce utile?

La solution

De Android Docs :

Les projets de bibliothèque ne peuvent pas inclure les actifs bruts

Les outils ne prennent pas en charge l'utilisation des fichiers d'actifs bruts (enregistré dans l'actif / répertoire) dans un projet de bibliothèque. Toutes les ressources d'actifs utilisés par une application doivent être stockés dans l'actif / du projet d'application elle-même. Cependant, les fichiers de ressources enregistrés dans la résolution / sont pris en charge.

Si vous voulez inclure des fichiers à partir d'un projet de bibliothèque, vous aurez besoin de le mettre dans les ressources au lieu des actifs. Si vous essayez de charger des fichiers HTML à partir de votre projet de bibliothèque dans un WebView, cela signifie que vous devrez aller une méthode plus rond-point que l'URL de l'actif habituelle. Au lieu de cela, vous devrez lire les données de ressources et utiliser quelque chose comme loadData .

Cette réponse est obsolète , système de construction gradle et AAR fichiers actifs de soutien.

Autres conseils

Il est maintenant possible d'utiliser le système de construction Gradle.

Test avec Android 0.5.0 et studio v0.9 du plugin Gradle Android, j'ai trouvé que des fichiers tels que

MyLibProject/src/main/assets/test.html

sont emballés correctement dans l'application finale et peut être consulté lors de l'exécution via l'URL attendue:

file:///android_asset/test.html

D'accord. Ive stresser et de perdre le sommeil à ce sujet pendant un certain temps. Im le genre de personne qui aime la création API et intégration DÉTESTE compliquée.

Il arent beaucoup de solutions autour sur l'Internet, donc im très fier de ce que Ive a découvert avec un peu d'Eclipse carriole.

Il se trouve que lorsque vous mettez un fichier dans l'Android Lib / dossier d'actifs. La cible apk capture cela et placez-le sur la racine de l'archive APK. Ainsi, ce qui rend l'accès général échouent. Cela peut être résolu en créant simplement une bibliothèque Java Raw et placer tous les actifs là-bas, à savoir (JAVALIB) /assets/fileX.txt.

Vous pouvez inclure à son tour, alors cela comme un chemin de génération Java dossier source dans Projet> Propriétés> Chemin de génération Java> Source> Lien source.

  1. Lien source
  2. Cliquez sur les variables. et Ajouter une nouvelle variable, à savoir VAR_NAME_X. Lieu: ../../ (relative_path_to_assets_project)
  3. Cliquez sur Ok

Maintenant, quand vous construisez et exécutez votre application, les actifs dossier dans l'APK contiendra vos fichiers (GLOBAL Library) comme vous le souhaitez.

Pas besoin de reconfigurer android ou rien internals. Son tout capable en quelques clics d'Eclipse.

Vous pouvez y parvenir en créant un lien symbolique dans le dossier des actifs du projet qui pointe vers le répertoire dans le projet de bibliothèque.

Ensuite, vous pouvez accéder comme ci-dessous:

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

Je confirme que l'approche de Daniel Grant travaille pour au moins la situation suivante: projet cible n'a pas un dossier actif (ou le dossier est vide, de sorte que vous pouvez supprimer en toute sécurité). Je ne l'ai pas configurer une variable. configuration simple suit LinkSource que (juste un exemple) Emplacement du dossier lié: / home / matthew / workspace_moonblink / assetsForAdvocacy / actifs Nom du dossier: actifs

Le « assetsForAdvocacy » est un projet Java, (créé avec New- Project - Projet Java) avec le dossier vide src, et un nouveau dossier nommé « actifs », qui fournit maintenant l'ensemble des actifs dossier pour le projet cible.

Ceci est une façon assez simple au sein d'Eclipse pour fournir des actifs réutilisent à travers de nombreux projets différents si elles ne l'ont pas déjà actifs, assez bon pour aller avec. Je veux probablement l'améliorer pour devenir un fournisseur de contenu à long terme, mais qui est beaucoup plus le développement.

Mon projet accède aux actifs avec le code suivant: Chaîne advocacyFolderInAssets = "no_smoking /"; // un dossier sous les actifs / Chaîne fn = advocacyFolderInAssets + ImageFileName; Bitmap pristineBitmapForAdvocacy = getBitmapFromAsset (contexte, fn);

J'utilise Motodev studio 3.1.0 sur Ubuntu. Il ne me laisserait pas « fusionner » le dossier un nouveau actifs dans le nouveau projet actif uniquement sur un dossier actif existant dans le projet cible.

Si vous souhaitez utiliser une configuration où plusieurs produits dérivés sont créés à partir d'une bibliothèque, vous pouvez envisager d'utiliser svn: externals ou solution similaire dans votre système SCM. Cela permettra également faire l'affaire que les actifs statiques comme l'aide en ligne peuvent être versionnées à partir du code séparement source Android.

Je trouve cette question plus , il pourrait vous aider, aussi.

Ceci est la façon officielle Google utilise pour archiver ces (depuis le poste ci-dessus): lien

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top