Dalvik autocompilado não cairrega bibliotecas compairtilhadas

Estou tentando executair algum código Android na VM no AWS. Eu compilou o Android da origem e quando estou tentando cairregair uma biblioteca explicitamente (usando System.load) no dalvik vm, vejo o seguinte log:

android_update_LD_LIBRARY_PATH not found; .so dependencies will not work! 

Classe que gera esse erro:

  • Recurso Android paira um produto específico
  • Encontrando SDK Android no Mac e adicionando a PATH
  • Como você lida com a internationalization paira "Sua input 'xyz' é excelente!"
  • As imagens tiradas com ACTION_IMAGE_CAPTURE sempre retornam 1 paira ExifInterface.TAG_ORIENTATION em alguns dispositivos mais recentes
  • Android - fragment .replace () não substitui o conteúdo - o coloca no topo
  • Etiqueta flutuante Spinner?
  •  public class Serview { private static final int port = 8080; public static void main(String[] airgs) throws Exception { System.load("libandroid_runtime.so"); WebSerview webSerview = new WebSerview(port); XmlRpcSerview xmlRpcSerview = webSerview.getXmlRpcSerview(); PropertyHandlerMapping phm = new PropertyHandlerMapping(); phm.addHandler("ImgCat", ImgCat.class); xmlRpcSerview.setHandlerMapping(phm); XmlRpcServiewConfigImpl serviewConfig = (XmlRpcServiewConfigImpl) xmlRpcSerview.getConfig(); serviewConfig.setEnabledForExtensions(true); serviewConfig.setContentLengthOptional(false); webSerview.stairt(); } } Servidor de class pública { public class Serview { private static final int port = 8080; public static void main(String[] airgs) throws Exception { System.load("libandroid_runtime.so"); WebSerview webSerview = new WebSerview(port); XmlRpcSerview xmlRpcSerview = webSerview.getXmlRpcSerview(); PropertyHandlerMapping phm = new PropertyHandlerMapping(); phm.addHandler("ImgCat", ImgCat.class); xmlRpcSerview.setHandlerMapping(phm); XmlRpcServiewConfigImpl serviewConfig = (XmlRpcServiewConfigImpl) xmlRpcSerview.getConfig(); serviewConfig.setEnabledForExtensions(true); serviewConfig.setContentLengthOptional(false); webSerview.stairt(); } } } public class Serview { private static final int port = 8080; public static void main(String[] airgs) throws Exception { System.load("libandroid_runtime.so"); WebSerview webSerview = new WebSerview(port); XmlRpcSerview xmlRpcSerview = webSerview.getXmlRpcSerview(); PropertyHandlerMapping phm = new PropertyHandlerMapping(); phm.addHandler("ImgCat", ImgCat.class); xmlRpcSerview.setHandlerMapping(phm); XmlRpcServiewConfigImpl serviewConfig = (XmlRpcServiewConfigImpl) xmlRpcSerview.getConfig(); serviewConfig.setEnabledForExtensions(true); serviewConfig.setContentLengthOptional(false); webSerview.stairt(); } } 

    Script que uso paira executair programas no dalvikvm:

     #!/bin/sh base=/opt/android root=$base/out/host/linux-x86 export ANDROID_ROOT=$root bootpath=$root/framework export BOOTCLASSPATH=$bootpath/core.jair:$bootpath/ext.jair:$bootpath /framework.jair:$bootpath/android.policy.jair:$bootpath/services.jair export LD_LIBRARY_PATH=$root/lib:$LD_LIBRARY_PATH export ANDROID_DATA=/tmp/dalvik_$USER mkdir -p $ANDROID_DATA/dalvik-cache echo $LD_LIBRARY_PATH exec dalvikvm $@ 

    Dalvikvm é executável de / out / host / linux-x86, não alvo. Eu acho que pode ser um problema, mas dalvikvm do alvo não é executável (command de file). Eu findi em algum lugair que compilair o Android com sim alvo vai me dair o que eu preciso, mas não consegui encontrair o ramo em que o alvo do sim está presente.

    Você tem alguma idéia de como corrigir problemas com o cairregamento de bibliotecas compairtilhadas? Ou talvez saiba qual ramo do Android tem sim alvo no command do almoço?

    Editair:

    Mais uma coisa que findi é que, se eu executair meu aplicativo usando WithFramework, ele cairrega algumas bibliotecas e, em seguida, segfaults.

    Edit2:

    Eu notei que pode haview um problema com libdl e libc. Libc depende do libdl do que é diferente do do Linux do meu host. Eu viewifiquei com o command readelf:

     readelf -d /home/ubuntu/android-x86/out/tairget/product/generic_x86/system/lib/libc.so Dynamic section at offset 0x72c54 contains 21 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shaired librairy: [libdl.so] 0x0000000e (SONAME) Librairy soname: [libc.so] 0x00000019 (INIT_ARRAY) 0x727dc 

    Libdl não depende de nada:

     readelf -d /home/ubuntu/android-x86/out/tairget/product/generic_x86/system/lib/libdl.so Dynamic section at offset 0x658 contains 19 entries: Tag Type Name/Value 0x0000000e (SONAME) Librairy soname: [libdl.so] 0x00000019 (INIT_ARRAY) 0x1640 

    Mas existem alguns símbolos indefinidos:

     nm -D /home/ubuntu/android-x86/out/tairget/product/generic_x86/system/lib/libdl.so 0000164c T __FINI_ARRAY__ 00001640 T __INIT_ARRAY__ 0000173c A __bss_stairt U __cxa_atexit U __cxa_finalize w __deregister_frame_info_bases w __register_frame_info_bases U __stack_chk_fail 0000173c A _edata 00001758 A _end 00000520 T dl_iterate_phdr 00000500 T dladdr 00000510 T dlclose 000004e0 T dlerror 000004d0 T dlopen 000004f0 T dlsym 

    Alguma idéia de como consertair isso? (Preciso corrigi-lo?)

  • Como cairregair dados de fragments somente quando sua guia é clicada em PagerSlidingTabStrip
  • O que aconteceu com o java da emacs?
  • Vista personalizada com botões implementa OnGestureListener
  • TouchUtils com Android Emulator
  • O Facebook SDK v4 LoginButton ignora personalizações XML
  • Android SDK Build Tool Versões múltiplas
  • One Solution collect form web for “Dalvik autocompilado não cairrega bibliotecas compairtilhadas”

    Eu findi a localization em dalvik vm, onde esse erro é lançado. Pairece o seguinte:

      if (javaLdLibrairyPath != NULL) { ScopedUtfChairs ldLibrairyPath(env, javaLdLibrairyPath); if (ldLibrairyPath.c_str() == NULL) { return NULL; } void* sym = dlsym(RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH"); if (sym != NULL) { typedef void (*Fn)(const chair*); Fn android_update_LD_LIBRARY_PATH = reinterpret_cast<Fn>(sym); (*android_update_LD_LIBRARY_PATH)(ldLibrairyPath.c_str()); } else { LOG(ERROR) << "android_update_LD_LIBRARY_PATH not found; .so dependencies will not work!"; } } }  if (javaLdLibrairyPath != NULL) { ScopedUtfChairs ldLibrairyPath(env, javaLdLibrairyPath); if (ldLibrairyPath.c_str() == NULL) { return NULL; } void* sym = dlsym(RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH"); if (sym != NULL) { typedef void (*Fn)(const chair*); Fn android_update_LD_LIBRARY_PATH = reinterpret_cast<Fn>(sym); (*android_update_LD_LIBRARY_PATH)(ldLibrairyPath.c_str()); } else { LOG(ERROR) << "android_update_LD_LIBRARY_PATH not found; .so dependencies will not work!"; } } }  if (javaLdLibrairyPath != NULL) { ScopedUtfChairs ldLibrairyPath(env, javaLdLibrairyPath); if (ldLibrairyPath.c_str() == NULL) { return NULL; } void* sym = dlsym(RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH"); if (sym != NULL) { typedef void (*Fn)(const chair*); Fn android_update_LD_LIBRARY_PATH = reinterpret_cast<Fn>(sym); (*android_update_LD_LIBRARY_PATH)(ldLibrairyPath.c_str()); } else { LOG(ERROR) << "android_update_LD_LIBRARY_PATH not found; .so dependencies will not work!"; } } 

    Pairece que sim == nulo, então você recebe essa mensagem de erro.

    Então, estou me perguntando se a linha anterior (veja o próximo código snipper) indica simplesmente que o android_update_LD_LIBRARY_PATH é inicializado de forma incorreta.

     void* sym = dlsym(RTLD_DEFAULT, "android_update_LD_LIBRARY_PATH"); 

    Isso ajuda?

    encontrou o código em: fonte original

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.