日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2020-10-26(对Dex文件的理解)

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2020-10-26(对Dex文件的理解) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Dex文件介紹
Android系統(tǒng)中,一個App的所有代碼都在一個Dex文件里面。Dex是一個類似Jar的存儲了多有Java編譯字節(jié)碼的歸檔文件。

為什么要使用dex文件來存儲呢?

Java源碼經(jīng)過編譯后,得到很多個class文件,考慮到手機(jī)的內(nèi)存較小,google改進(jìn)了字節(jié)碼的組織形式,將一個app中的所有class文件合到了一起構(gòu)成dex文件,當(dāng)然并不是簡單的拼接在一起,而是遵從dex的格式重新組織。

在dex中各個類能夠共享數(shù)據(jù),在一定程度上降低了冗余,同時也是文件結(jié)構(gòu)更加緊湊,實驗表明,dex文件是傳統(tǒng)jar文件大小的50%左右。

dex文件最終會和資源文件等一起打包成為apk,簽名后安裝到手機(jī)上。

Java文件編譯成Dex文件
Java文件編程成dex文件,要經(jīng)歷以下幾個步驟:

Java文件生成.class文件。
.class文件生成dex文件。

  • Java文件生成.class文件
    Java文件是Java的源文件。
    .class文件是Java的字節(jié)碼文件,它可以被JVM識別、加載和執(zhí)行。
  • 我們想要生成dex文件,第一步是要把Java文件編譯成.class文件,也就是字節(jié)碼文件。

    生成.class文件的方式,Android和Java并無不同,都可以使用javac類生成:

    // 打開命令行窗口,輸入如下命令,即可將.java文件編譯成.class文件 javac -source 1.7 -target 1.7 Demo.java
  • .class文件生成Dex文件
    生成.class文件之后,就需要我們轉(zhuǎn)換成dex文件了。
  • 這一步是通過Android提供的工具包充的dx工具來實現(xiàn)的。

    dx工具是Android源碼的一部分,其路徑是在out目錄下,因此在執(zhí)行dx之前,可以將該工具添加到PATH路徑。

    示例:

    //進(jìn)入dx所在目錄,.class文件復(fù)制到該目錄下,命令行執(zhí)行命令: dx --dex --output demo.dex Demo.class

    dex文件的執(zhí)行
    打包成.apk文件,安裝運(yùn)行
    通常情況下我們的dex文件會通過apkbuilder工具,將所有沒有編譯過的資源(eg: images)、編譯過的資源和.dex文件打包到最終的.apk文件中去。

    打包成.apk文件之后,會對Apk文件簽名,apk文件只有被簽名才能被安裝在設(shè)備上。

    另外,在生成最終apk之前,打包器會使用zipalign工具對應(yīng)用進(jìn)行優(yōu)化,位于android-sdk/tools目錄下。

    最終,.apk文件將會運(yùn)行在Android系統(tǒng)上。

    dalvikvm工具
    dalvikvm工具,可以直接運(yùn)行.dex文件中的代碼,而不必通過.apk的形式安裝運(yùn)行。

    dalvikvm的作用就是創(chuàng)建一個虛擬機(jī)并執(zhí)行指定參數(shù)中的java類。

    我們用一個示例來看如何使用?

    1.dex文件生成,這里指定生成產(chǎn)物為demo.jar

    dx --dex --output=demo.jar Demo.class

    2.將demo.jar 通過adb push到/data/app目錄,并使用dalvikvm工具來執(zhí)行Demo類:

    adb push demo.jar /data/app adb shell cd /data/app dalvikvm -cp demo.jar Demo

    總結(jié)

    以上是生活随笔為你收集整理的2020-10-26(对Dex文件的理解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。