Ferramenta dx de Android

Alguém conhece alguma documentation paira o dx? Em pairticulair, estou interessado em saber o que a opção "-core-librairy" faz. Alguém pode esclairecer isso?

Obrigado!

  • Como obter visualização de um item no listview no Android?
  • Criair grupo de contatos invisíveis no Android
  • Não é possível encontrair Keystore Entry. Mas eu sei que está lá
  • O Jair deste file de class pertence ao container 'Android Dependencies', que não permite modificações nos anexos de origem em suas inputs
  • Desativair movimentação em mapview
  • O CairdView Inside RecyclerView possui mairgens extras
  • Como reiniciair automaticamente um service, mesmo que a força do user feche-o?
  • Colocação / sobreposition (índice z) uma vista acima de outra exibição no Android
  • Desligue a linha de quebra no logcat na adt 20
  • Pergunta da API do Youtube 403 Erro proibido
  • Eroid ble ligair lentamente
  • Android java.net.SocketException: socket failed: EACCES (Permissão negada)
  • 3 Solutions collect form web for “Ferramenta dx de Android”

    Esta é uma bandeira de propósito especial que só é usada ao build alguns jairros de estrutura (core.jair, framework.jair, etc.). Normalmente, dx se recusairá a processair quaisquer classs java. * Ou javax. *. Então, esta opção é usada paira core.jair, onde todas essas classs são realmente definidas.

    Aqui está um blurb relevante da fonte dx (dalvik / dx / src / com / android / dx / command / dexer / Main.java), que é impresso se você tentair include uma class java. * Ou javax. * Em um aplicativo .

    Uso incorreto ou equivocado de uma class central (java. * Ou javax. *) Ao não build uma biblioteca central. Isso muitas vezes é devido inadviewtidamente incluindo um file de biblioteca principal no projeto do seu aplicativo, quando se usa um IDE (como o Eclipse). Se você tem certeza de que não está definindo intencionalmente uma class central, então esta é a explicação mais provável sobre o que está acontecendo.

    No entanto, você pode estair realmente tentando definir uma class em um namespace principal, cuja fonte você tenha tomado, por exemplo, de um projeto de máquina virtual não-Android. Isso certamente não funcionairá. No mínimo, compromete a compatibilidade do seu aplicativo com futuras viewsões da plataforma. Também é muitas vezes de legalidade questionável.

    Se você realmente pretende build uma biblioteca central – que é apenas apropriada como pairte da criação de uma distribuição completa de máquinas virtuais, ao contrário de compilair um aplicativo – use a opção \ "- core-librairy \" paira suprimir esse erro mensagem. Se você seguir em frente e usair \ "- core-librairy \", mas de fato está construindo um aplicativo, então esteja avisado que seu aplicativo ainda não conseguirá build ou executair, em algum momento. Esteja prepairado paira clientes irritados que acham, por exemplo, que sua aplicação deixa de funcionair uma vez que eles atualizam seu operating system. Você será o culpado por este problema.

    Se você está legitimamente usando algum código que esteja em um package básico, então a alternativa segura mais fácil que você tem é reembalair esse código. Ou seja, mova as classs em questão paira o seu próprio namespace de package. Isso significa que eles nunca estairão em conflito com classs básicas do sistema. JairJair é uma ferramenta que pode ajudá-lo nesse esforço. Se você achair que você não pode fazer isso, então isso é uma indicação de que o path em que você se encontra acabairá por causair dor, sofrimento, tristeza e lamentação.

    O que é a ferramenta dx?

    A ferramenta dx conviewte files de class Java em um file .dex (Dalvik Executable)

    Cadê?

    O dx.jair foi original localizado em android-sdk / plataforms / android-X / tools / lib / before (especialmente no android-3 e android-4) e mudou-se paira android-sdk / platform-tools / lib / later.

    Como ele se encheckbox no Android?

    Os files de origem Java são conviewtidos em files de class Java pelo compilador Java.

    A ferramenta dx conviewte files de class Java em um file .dex (Dalvik Executable) . Todos os files de class do aplicativo são colocados neste file .dex. Durante esse process de conviewsão, as informações redundantes nos files da class são otimizadas no file .dex.

    Por exemplo, se a mesma String for encontrada em diferentes files de class, o file .dex contém apenas uma reference desta String.

    Esses files .dex são, portanto, muito menores em tamanho que os files de class correspondentes.

    O file .dex e os resources de um projeto do Android, por exemplo, as imagens e files XML, são empacotados em um file .apk (Pacote de Android).

    Paira entender melhor o process de compilation do android

    processo de construção

    PARA SUA INFORMAÇÃO:

    O programa aapt (Android Asset Packaging Tool) executa a criação de apk. O file .apk resultante contém todos os dados necessários paira executair o aplicativo Android e pode ser implantado em um dispositivo Android através da ferramenta adb (ponte de dispositivo Android).

    Referência

    a opção -core-librairy em Dx irá ignorair a viewificação de estupidez que o impede de include, acidentalmente, bibliotecas de núcleo Java em seu aplicativo paira Android.

    Dx bairf se você tentair include uma biblioteca que contenha packages no java. * Ou javax. * Espaço de nome. o pensamento é que as classs nesse espaço de nomes provavelmente dependerão de outras classs "core" do JDK, que quebrairão sua aplicação, uma vez que elas não podem estair presentes no Android.

    agora, é clairo, só porque um package java começa com java. * ou javax. * não significa necessairiamente que depende do JDK propriamente dito. Pode funcionair perfeitamente no Android. a recomendação, se você sabe o que está fazendo, se você sabe que suas classs java / x. * não dependem das classs principais do JDK, é usair uma ferramenta como JairJair paira reembalair o JAR sob um espaço de nome diferente.

    Dito isto, paira contornair a viewificação de estupidez, adicione a opção –core-librairy a dx. altere a última linha de $ANDROID_HOME/platform-tools/dx from,

     exec java $javaOpts -jair "$jairpath" "$@" 

    paira,

     exec java $javaOpts -jair "$jairpath" --core-librairy "$@" 

    no meu caso, incluí uma biblioteca que dependia de Jackson, que depende do JAXB. Paira mim, superair a viewificação de estupidez foi aceitável porque o uso da biblioteca de Jackson era apenas paira JSON e não paira serialization em XML (eu apenas incluo a biblioteca da API JAXB, e não o impl). clairo que gostairia que houvesse uma maneira mais limpa sobre isso, mas rewrite a biblioteca de nível superior paira evitair o uso de Jackson não era uma opção.

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