2016-10-18 2 views
2

J'ai deux bibliothèques que je veux ajouter à PSBA: Azure Storage & Jackson CoreNom du package inconnu de fichier de classe

Lorsque Azure Storage dépend de Jackson.

Après this instructions, j'ai ajouté les deux sous [MAIN_FOLDER]/external et avec les Android.mk fichiers suivants:

Pour Jackson -

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE := jackson 

LOCAL_MODULE_TAGS := eng debug optional 

LOCAL_SDK_VERSION := current 

LOCAL_SRC_FILES := $(call all-java-files-under, src/main) 

include $(BUILD_JAVA_LIBRARY) 

et pour le stockage Azure -

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE := azure-storage 

LOCAL_JAVA_LIBRARIES := jackson 

LOCAL_MODULE_TAGS := eng debug optional 

LOCAL_SDK_VERSION := current 

LOCAL_SRC_FILES := $(call all-java-files-under, src/main) 

include $(BUILD_JAVA_LIBRARY) 

Lorsque J'ai également ajouté:

PRODUCT_BOOT_JARS := \ 
    jackson \ 
    azure-storage 

à mon core_minimal.mk.

et ce qui suit à [MAIN_FOLDER]/frameworks/base/services/core/Android.mk:

LOCAL_JAVA_LIBRARIES += jackson azure-storage 

Hélas, lorsque je tente de make update-api && make, je reçois l'erreur suivante:

Error: out/target/common/obj/JAVA_LIBRARIES/jackson_intermediates/classes.jar: unknown package name of class file com/fasterxml/jackson/core/JsonLocation.class

Error: out/target/common/obj/JAVA_LIBRARIES/azure-storage_intermediates/classes.jar: unknown package name of class file com/microsoft/azure/storage/CorsRule.class

make: *** [out/target/common/obj/PACKAGING/boot-jars-package-check_intermediates/stamp] Error 1

make: *** Waiting for unfinished jobs....

Merci!

Répondre

3

D'abord, nous ferions mieux de trouver où cette erreur vient, avec grep nous l'avons trouvé provient d'un Python: build/core/tâches/check_boot_jars/check_boot_jars.py:

def CheckJar(jar): 
package_name = os.path.dirname(f) 
package_name = package_name.replace('/', '.') 
# Skip class without a package name 
if package_name and not whitelist_re.match(package_name): 
    print >> sys.stderr, ('Error: %s: unknown package name of class file %s' % (jar, f)) 
    return False 

Apparemment, si le nom de votre paquet n'existe pas dans "whitelist_re", vous avez l'erreur!

valeurs de "de whitelist_re" proviennent d'un fichier txt nommé "build/core/tâches/check_boot_jars/package_whitelist.txt", de sorte que la solution est d'ajouter votre package à ce fichier whitelist.

Les exemples sont répertoriés dans package_whitelist.txt.

-1

Apparemment, toutes les bibliothèques doivent commencer par com.android.,

donc j'ai ajouté jarjar-rules.txt ce qui suit:

rule com.microsoft.** [email protected] 
rule com.fasterxml.** [email protected] 

et a ajouté la ligne suivante à Android.mk:

LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 

maintenant , toutes les références à com.microsoft.azure.storage.* doivent être remplacées par com.android.com.microsoft.azure.storage.* et pareil pour fasterxml.