導航:首頁 > 操作系統 > 安卓xml怎麼編譯

安卓xml怎麼編譯

發布時間:2023-08-30 07:07:12

① xml文件怎麼用maven編譯

創建項目根文件夾,例如Maven01
在Maven01文件夾中創建「pom.xml」文件
pom.xml文件中的內容
編寫java類文件,Maven項目規定,所有的*.java文件必須放在src目錄下的main目錄下的java目錄中,在Maven01項目根目錄中創建一個src目錄,然後在src目錄中創建main目錄,在main目錄中再創建java文件夾
在java文件夾下創建一個Hello.java文件
在Hello.java文件中編寫代碼
使用Maven編譯Hello.java,首先進入到項目根目錄,然後使用命令」mvn compile」進行編譯
使用Maven編譯完成之後,在項目根目錄下會生成一個target文件夾
打開target文件夾,可以看到裡面有一個classes文件夾
classes文件夾存放的就是編譯成功後生成的.class文件
使用"mvn clean"命令清除編譯結果,也就是把編譯生成的target文件夾刪掉
執行完"mvn clean"命令後,target文件夾就會被刪除了。

② 自己可以編譯安卓源碼

用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:

sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」

其中[email protected]為你自己的郵箱.

簡要說明

android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.

源碼下載

由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)

repo工具下載及安裝

通過執行以下命令實現repo工具的下載和安裝

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


這里寫圖片描述

執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.

錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.

    結束吧

    到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    ③ 如何反編譯apk文件得到源碼和XML文件

    最近因為一些事所以需要得到師兄的某個apk的源代碼,但師兄說那個項目包已經刪了,哎,沒辦法,只能自己想辦法了。後來找到了反編譯apk的方法,現在拿出來分享下。其實這個方法網上都有,我只是記載一下自己這段時間的學習情況。
    1.下載工具
    首先,要反編譯需要下面這
    4個工具:
    dex2jar:將apk中的classes.dex轉化成Jar文件。
    JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
    apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
    apktool-install-windows-r05-ibot:輔助windows批處理工具。
    2.解壓apk
    直接右鍵解壓apk就行了,這沒什麼好說的。【解壓後會有個dex後綴的文件,下面會用到】
    3.反編譯dex文件
    1)解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
    2)DOS行命令如下:dex2jar.bat
    xx\classes.dex(xx是classes.dex文件所在的路徑)。
    將在同目錄得到普通jar包:【classes_dex2jar.jar】,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。
    4.反編譯jar文件
    1)解壓壓縮文件JD-GUI
    2)運行該文件夾里的jd-gui.exe,打開上面生成的jar包,
    即可看到源代碼了。
    5.反編譯xml文件
    為什麼要發編譯xml文件呢?因為直接解壓apk得到的xml文件是亂碼來的,我們需要用工具把它調會正常來
    具體操作方法:
    1)將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。
    2)把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
    3)在DOS命令行中輸入:apktool
    d
    xx\HelloWord.apk
    HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。
    6.後話
    不過,說到底反編譯還是反編譯,還是不能完全地還原出真正的源代碼的,比如一般會出現下面這樣的問題:
    setContentView(2130903048);
    在真正的源代碼中其實是這樣的:
    setContentView(R.layout.welcome)

    ④ 加固的apk,如何反編譯AndroidManifest.xml

    工具:
    鏈接: http://pan..com/s/1i4QpEAh 密碼:l6oq

    首先配置好Java的環境,在將apk重命名為*.zip,然後解壓zip文件,就可獲得AndroidManifest.xml文件,此時該文件無法打開,接下來就要用上面的AXMLPrinter2.jar工具。
    命令為:java -jar AXMLPrinter2.jar AndroidManifest.xml > a.xml

    ⑤ 如何反編譯apk文件得到源碼和XML文件

    最近因為一些事所以需要得到師兄的某個apk的源代碼,但師兄說那個項目包已經刪了,哎,沒辦法,只能自己想辦法了。後來找到了反編譯apk的方法,現在拿出來分享下。其實這個方法網上都有,我只是記載一下自己這段時間的學習情況。
    1.下載工具
    首先,要反編譯需要下面這
    4個工具:
    dex2jar:將apk中的classes.dex轉化成Jar文件。
    JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
    apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
    apktool-install-windows-r05-ibot:輔助windows批處理工具。
    2.解壓apk
    直接右鍵解壓apk就行了,這沒什麼好說的。【解壓後會有個dex後綴的文件,下面會用到】

    3.反編譯dex文件
    1)解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
    2)DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路徑)。
    將在同目錄得到普通jar包:【classes_dex2jar.jar】,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。

    4.反編譯jar文件
    1)解壓壓縮文件JD-GUI
    2)運行該文件夾里的jd-gui.exe,打開上面生成的jar包,
    即可看到源代碼了。

    5.反編譯xml文件
    為什麼要發編譯xml文件呢?因為直接解壓apk得到的xml文件是亂碼來的,我們需要用工具把它調會正常來
    具體操作方法:
    1)將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。
    2)把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
    3)在DOS命令行中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。

    6.後話
    不過,說到底反編譯還是反編譯,還是不能完全地還原出真正的源代碼的,比如一般會出現下面這樣的問題:
    setContentView(2130903048);

    在真正的源代碼中其實是這樣的:
    setContentView(R.layout.welcome)

    ⑥ 如何單獨編譯Android源碼中的模塊

    1.make 模塊名稱
    需要查看Android.mk文件的LOCAL_PACKAGE_NAME變數。
    2.mmm命令
    用於在源碼根目錄編譯指定模塊,參數為模塊的相對路徑。只能在第一次編譯後使用。比如要編譯Phone部分源碼,需要在終端中執行以下命令:
    $mmm packages/apps/phone
    3.mm命令
    用於在模塊根目錄編譯這個模塊。只能在第一次編譯後使用。例如要編譯Phone部分源碼,需要在終端中執行以下命令:
    $cd packages/apps/phone
    $mm
    註:mmm和mm命令必須在執行「.build/envsetup.sh」之後才能使用,並且只編譯發生變化的文件。如果要編譯模塊的所有文件,需要-B選項,例如mm -B。

    ⑦ 如何反編譯xml文件

    網上很多發編譯apk的例子,方法也很多,我只取最簡單的用。
    首先說一下這個xml文件,就是.apk文件改成.zip文件後用解壓縮工具解壓出來的。比如
    反編譯這個xml用到的軟甲是A2. AXMLPrinter2

    第一步:把上面提到過的需要發編譯的.xml文件和下載下載的AXMLPrinter2.jar這兩個文件都拷貝到android-sdk-windows/tools文件夾中。

    第二步:運行cmd,進入tools目錄,鍵入
    java -jar AXMLPrinter2.jar AndroidManifest.xml > main.txt

    用java -jar 命令配合AXMLPrinter2.jar這文件把AndroidManifest.xml編譯寫入到main.txt文件中
    (說明一下,我的xml是AndroidManifest.xml,如果你拷進去的不是這個,請自己改文件名)

    回車後沒有報錯的話,就成功了
    打開../android-sdk-windows/tools/目錄,找到main.txt,打開看一下

    ⑧ APK文件裡面的AndroidManifest.xml文件全是亂碼用什麼編譯器打開

    把AXMLPrinter2.jar下載到桌面,把你提取出亂碼的AndroidManifest.xml文件也放在桌面

    你還需要安裝好java
    ///////////以下內容在桌面保存為run.bat////////////

    for/f"tokens=2,*"%%iin('regquery""/v"Desktop"')do(
    setdesk=%%j
    )
    java-jarAXMLPrinter2.jar%desk%AndroidManifest.xml>AndroidManifest.txt
    pause

    ////////以上內容在桌面保存為run.bat////////////
    保存後運行run.bat,如果沒有任何提示(「按任意鍵繼續」除外),就說明成功解密,在桌面會生成一個AndroidManifest.txt文件,這個.txt文件就是解密後的文件,這樣就不亂碼了

    AXMLPrinter2.jar這個文件你自己網路下載

    ⑨ Android反編譯(三)— 手動編譯

    PS: 最近沒工作,沒工作就沒需求,沒需求就沒什麼技術總結的靈感,那就沒更新什麼。但是兩個月不更新了,要是三個月不更新就會出大事,所以這次打算做一件有意思又不難的事。
    之前有發文章寫過反編譯,今天就來試試反編譯之正編譯,開玩笑的,就是試試手動編譯的過程, 平時我們在項目中編譯出包都是使用Gradle直接執行assemble任務就能解決,我打算試試手動模擬整個過程。當然我也是第一次這樣搞,所以如果有寫得不對的地方,還望指出。

    眾所周知,apk實質上就是一個壓縮包。復習一下,我們寫個最簡單的Demo,然後打包,然解壓,注意是解壓,不是反編譯,意義是不同的。

    注意我這個Demo很簡單,什麼都不引入

    然後我們看看整個出包的過程,隨便從網上拿張圖

    然後這里我們用Android SDK給我們提供的工具來完成整個流程,工具在sdk文件夾下的build-tools文件夾下,有什麼aapt.exe、dx.bat,用的就是這些

    這步應該是整個流程最簡單的吧,我感覺,所以從最簡單的開始。
    我們先看看生成的dex有什麼

    對比項目,我是一開始最基本的項目,什麼都沒動,所以只有一個MainActivity.clas,所以這里肯定是要先想辦法得到BuildConfig.class和R.class。

    輸入命令:
    aapt p -f -m -J <輸出路徑> -S <res路徑> -I <android.jar路徑> -M <Manifest路徑>

    下一步,我們需要BuildConfig.class
    這個BuildConfig.java是由gradle在我們配置好gradle之後自己幫我們生成的,所以我們直接拿來用,然後再javac就得到class文件了

    然後我們再編譯我們的MainActivity.java並將它們放到同一個文件夾下, MainActivity因為引用了Android.jar和R文件,所以編譯時注意點,我為此被動好好的復習了一遍javac,都是淚

    最後一步,我們用dx工具就能打出dex文件了

    然後執行命令就得到一個Dex文件,看看這個文件裡面和上面直接打出的apk中的Dex文件有什麼不同:

    看圖,我們上一步已經生成.dex了,那麼我們需要和compiled Resource 還有 Other Resource 一起生成APK。

    我們先來生成compiled Resource,也就是resources.arsc
    發現之前使用aapt生成R文件的時候沒寫完整,當時可以加一個-F參數直接生成arsc和Manifest

    導出的abc.zip裡面就有resources.arsc和AndroidManifest.xml。
    因為之前寫漏了,所以肯定要重新編一次MainActivity.java和Dex

    我們把剛才的dex文件和aapt生成的resources.arsc、AndroidManifest.xml和res放到一個文件夾裡面。
    PS:res文件夾也是上面aapt的命令生成的
    然後我們對比這個文件夾和之前apk解壓的文件夾

    最後運行

    看來是成功了。

    再說說遇到的還有兩個問題,並說下我解決問題的思路
    (1)我把它們都放到一個文件夾之後,我壓縮成壓縮包,然後改後綴成.apk,然後發現安裝不了,我就直接反編譯,發現發編譯失敗,提示包有問題,以我多點玩包的經驗,我感覺就是壓縮工具出了問題,然後我去下個「好壓」(這不是廣告啊),然後就能正常反編譯了。
    (2)但是還是安裝不了,再根據我多年的玩包經驗,我感覺是簽名問題,然後我隨便給這個包上一個簽名,就能正常安裝得到上圖的結果了。

    總體來說,還真挺好玩的,這整個過程,就是翻車了幾次。做完之後感覺非常牛逼,為什麼這樣說,因為我知道這整個過程,我就可以做到,我不經過gradle來打包,我自己寫個python腳本來調用aapt和dx來打包也是能做到的。
    當然上面純屬異想天開,因為這是個什麼都沒有的Demo所以覺得簡單,要是一個真實的項目,我感覺肯定要有很多坑,別的先不說,一個項目那麼多依賴關系,我這javac要搞死人。
    最後如果有不對的地方,希望有大佬能夠指出,畢竟能運行也不能證明完全沒問題。然後我使用的build-tools是28的,不敢保證其它版本包括以後版本的玩法都一樣。

    閱讀全文

    與安卓xml怎麼編譯相關的資料

    熱點內容
    linux中的ln命令例子 瀏覽:137
    為什麼玩cf第一次進入伺服器很慢 瀏覽:965
    工作單源碼 瀏覽:617
    安卓如何關閉app自動升級 瀏覽:135
    new文件夾怎麼打開 瀏覽:633
    安卓51如何優化 瀏覽:177
    活塞式壓縮機原理圖 瀏覽:845
    水環式壓縮機工作原理 瀏覽:715
    阿里雲伺服器安裝後怎麼使用 瀏覽:933
    去做APP開戶有什麼危險沒得啊 瀏覽:696
    8分之1乘58演算法 瀏覽:171
    php提交過濾 瀏覽:357
    豪斯曼檢驗stata命令 瀏覽:769
    雲看地是什麼APP 瀏覽:885
    數學指南pdf 瀏覽:858
    phpcurldll64位 瀏覽:982
    程序員脫產一年半 瀏覽:852
    hr招程序員有什麼條件 瀏覽:590
    android開源集合 瀏覽:872
    華為雲伺服器登錄密碼和賬號 瀏覽:155