導航:首頁 > 源碼編譯 > 怎麼看android編譯進度

怎麼看android編譯進度

發布時間:2024-02-08 22:00:50

A. 怎麼查看反編譯出來的androidmanifest文件

apktool反編譯xml等資源文件:

a. 安裝java環境,下載文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2;把這兩個文件解壓到同一目錄下,該目錄cmd中運行apktool獲得幫助信息;

b. apktool d XXX.apk ABC : 反編譯XXX.apk到文件夾ABC

c. apktool b ABC :從反編譯後的文件夾ABC重建APK,輸出到ABC\dist\out.apk(該apk沒有簽名)

d. 這樣我們就可以把遠apk文件通過反編譯後,然後對裡面資源文件作修改,然後再重建為apk即可;

B. android studio 導出項目

Android Studio導入項目的幾種方法
主題 Android Studio Gradle Eclipse
Android Studio默認使用 Gradle 構建項目, Eclipse 默認使用 Ant 構建項目。建議Android Studio導入項目時,使用 Gradle 構建項目。
導入Eclipse項目
本例中,使用到的 Eclipse 項目結構
-demo為主項目, appcompat_v7 為 library 項目。
導入Generate Gradle build files項目
Google官方建議是通過本方法進行Android Studio導入 Eclipse 項目。
這種方式有一個好處就是兼容 Eclipse 的文件目錄結構,通過版本控制中的文件過濾,可以在一個項目組中,同時使用 Eclipse 和Android Studio。
講解1
File--> Export
講解2
選擇導出類型。選擇 Android --> Generate Gradle build files 。
點擊 Next 。
講解3
很長一段英語(完全看不懂是什麼意思)。
點擊 Next 。
講解4
選擇要導出的項目。
因為我的 e-demo 項目依賴了 appcompat_v7 項目,所以我將 e-demo 和 appcompat_v7 都選擇了導出。
點擊 Next 。
講解5
最終確認要導出的項目。
Force overriding of existing files表示覆蓋導出文件。使用 Generate Gradle build files 的方式導出項目,會在項目目錄中生成一些文件。這里的覆蓋文件指的就是覆蓋這些可能已經生成過的文件。如果你之前有使用這種方式導出過項目,建議勾選。
點擊 Finish 。
講解6
這一步沒有什麼好說的,直接點擊 Finish 。
講解7
Finish點擊完畢,並沒有彈出窗口顯示導出的項目,就好像什麼事情都沒有做一樣。其實,使用這個方式導出項目,是在項目中添加了一些文件,我們可以到項目目錄下去看一看這些生成文件。
工作空間目錄下
e-demo目錄下
appcompat_v7目錄下
我們可以發現:在工作空間目錄下,多出了 gradle 文件夾和 build.gradle 、 build.gradle 、 gradlew 、 gradlew.bat 、 settings.gradle 文件;在 e-demo 目錄下多出了 build.gradle 文件; 在 appcompat_v7 目錄下多出了 build.gradle 文件。這些文件和文件夾都和 Gradle 有關系,用於構建項目。這些文件以及文件夾的作用,我們以後再說。
講解8
由於 Eclipse 的 ADT 插件已經很久沒有更新了,自動生成的 Gradle 編譯設置已經跟不上Android Studio的更新速度,所以我們需要手動修改一些內容。
打開工作空間目錄下的 gradle --> wrapper --> gradle-wrapper.properties 。修改一下內容: distributionUrl=http\://services.gradle.org/distributions/gradle-a.b.c-all.zip --> distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
打開工作空間目錄下的 build.gradle 文件。修改以下內容:
classpath 'com.android.tools.build:gradle:0.x.+'--> classpath 'com.android.tools.build:gradle:1.0.0' 。
之所以這么設置,是因為: Eclipse 導出的 Gradle 設置已經不是Android Studio 1.0 所支持的 Gradle 已經 Gradle 插件版本,需要手動更為支持的版本。否則輕則必須不能離線導入項目,重則項目導入失敗。
講解9
打開Android Studio,選擇 Open an existing Android Studio project 。
講解10
此時會彈出一個框,讓你選擇文件夾,這個時候需要注意的就是,你需要選擇原來的 Eclipse 的工作空間目錄,而不是 e-demo 目錄。
點擊 OK 。
講解11
設置導入選項。
此處有一些比較重要的設置需要講解一下。
Gradle project :此處通常顯示的路徑並不是你的 Eclipse 的工作空間的目錄,而是 Eclipse 的工作空間的目錄中的 gradle 路徑。你需要手動刪除後面的 gradle ,否則項目導入,你是看不到你的代碼的,只能看到 gradle 目錄下的內容。
Create directories for empty content roots automatically :不是很明白它的作用,一般默認即可。
Use default gradle wrapper(recommended) 和 Use local gradle disribution :這兩個是讓你設置使用的 Gradle 。默認會勾選 Use default gradle wrapper(recommended) ,我們需要手動勾選 Use local gradle disribution 。
Gradle home :勾選 Use local gradle disribution 後此項編程可編輯狀態,默認的此處的地址為Android Studio安裝目錄中的 Gradle 路徑地址。此處可能會有一些錯誤的警告,提示內容為: Gradle location is incorrect 。而你的這個目錄下,確實是有 Gradle 的。產生這個問題的原因,很可能是因為 Gradle home 選項中,路徑中的斜杠為 / 而不是 ** 。你需要點擊左右的文件選擇按鈕,重新選擇到Android Studio安裝目錄中的 **Gradle ,問題即可解決。
Offline work :設置 Gradle 使用離線的方式導入項目。你可以勾選也可以不勾選。如果你有進行 講解8 的操作,你則可以勾選,以離線的方式進行編譯。
點擊 OK 。之後便會看到編譯進度條,根據每個人機器的配置,編譯的時間不同。
編譯完成之後,自動跳轉到Android Studio的主頁面。在編譯的工程中,會有以下的彈框:
之所以有這個彈框,是因為Android Studio默認使用 JAVA 1.7 進行編譯,如果你的項目不是 1.7 ,則會彈框讓你選擇。建議選擇 Yes ,因為當你使用 JAVA 1.7 的時候,只要不使用 JAVA 1.7 的資源自動釋放這個新特性,能夠完美得兼容 JAVA 1.6 的Android設備。
如果看到下面這個界面,說明你已經導入成功了。
直接導入Eclipse項目
如果不使用 Generate Gradle build files 導出項目,可以使用Android Studio直接打開 Eclipse 工作空間,進行項目導入。
不使用Gradle編譯項目
這種方式可以兼容 Eclipse 的文件目錄結構,通過版本控制中的文件過濾,可以在一個項目組中,同時使用 Eclipse 和Android Studio。但是在Android Studio中並不是使用 Gradle 構建項目,而是使用的 Ant 。
講解12
打開Android Studio,選擇 Import Non-Android Studio project 。
在彈出的目錄選擇框中,選擇 Eclipse 的工作空間 。
講解13
接下來回讓你選擇編譯環境。選擇 Create project from existing sources 。
講解14
設置 Android Studio Project 名稱以及存放目錄。一般默認即可。
點擊 Next 。
講解15
選擇資源文件以及資源文件夾。根據你需要導入的項目進行勾選。選擇一個項目的時候,你需要選擇它依賴的 Library 項目以及他的 src 和 gen 目錄。
選擇完畢,點擊 Next 。
講解16
選擇要導入的 jar 。第一個 .mylyn 是 Eclipse 插件的內容,我們需要手動過濾掉,其他的
選擇完畢,點擊 Next 。
講解17
選擇Android Studio識別出的 Mole ,也就是 Eclipse 中的 Project 。勾選你想導入的項目即可。
選擇完畢,點擊 Next 。
講解18
選擇編譯的 SDK 。在這里,你需要選擇 Android SDK ,最好和之前使用 Eclipse 時使用的 SDK 一樣。同樣,你也可以再次進行一些簡單的環境設置,在此就不說了。
選擇完畢,點擊 Next 。
講解19
選擇識別出的 AndroidManifest.xml 文件。默認全部勾選即可。
點擊 Finish ,Android Studio就開始導入項目了。
講解18
在導入的過程中,如果Android Studio識別出原項目的依賴關系,便會彈出對話框讓你進行選擇。如果想保持之前的依賴關系,點擊 OK 即可。
當你看到這個界面,就表示導入成功了。項目使用 Ant 構建,並不是Android Studio 默認的 Gradle 。
使用Gradle編譯項目
本方法有一個缺點就是,一次只能導入一個 Eclipse 項目。對於那些只使用到了官方系列的支持包的 Eclipse 項目來說,會方面很多,而且同時兼容 Eclipse 文件目錄結構。
講解19
打開Android Studio,選擇 Import Non-Android Studio project 。
在彈出的目錄選擇框中,選擇 你想導入的項目所在的目錄,而不是 Eclipse 的工作空間 。
講解20
Android Studio識別出你的項目是一個 Eclipse Android 項目,它將重新使用 Gradle 構建項目。
Android Studio會完整復制項目文件到一個新的目錄中,你需要設置這個新目錄的地址。
設置完畢,點擊 Next 。
講解21
將之前 Ant 架構改變為 Gradle 架構。
Replace jars with dependencies,when possible :將 Ant 的 jar 依賴關系使用 dependencies 重構。
Replace library sources with dependencies,when possible :將 Ant 的 library 項目的依賴關系使用 dependencies 重構。
Create Gradle-style(cameCase) mole names :使用 Gradle 的樣式構建Android Studio的 Mole 名稱。
建議全選,點擊 Finish 。Android Studio開始編譯項目,同時進入Android Studio主頁面。
同樣的,在編譯的過程中,依然會提示你語言等級的問題,選擇 Yes 。
導入Android Studio項目
Android Studio項目,指的是使用 Gradle 進行構建的項目。默認的文件結構如下:
project-name
+ app/
+ src/
+ main/
+ assets/
+ java/
+ package
...
+ res/
+ drawable/
...
+ layout
...
+ values
...
| Androidmanifest.xml
| build.gradle
+ gradle/
+ wrapper/
| gradle-wrapper.jar
| gradle-wrapper.properties
| build.gradle
| gradlew
| gradlew.bat
| settings.gradle
有的一些Android Studio項目有對 Eclipse 做兼容處理,項目結構看起來和 Eclipse 是相同的。
講解22
當你從網路上或者其他地方獲取到一份Android Studio項目源碼時,你希望能夠導入到Android Studio中。首先,你需要先對這份源碼進行一些修改。具體的修改內容,請參照 講解8 。
打開Android Studio,選擇 Open an existing Android Studio project 。
在彈出的路徑選擇框中,選擇你要導入的Android Studio項目,點擊 OK 。
講解23
然後會彈出和 講解11 相同的頁面,同樣,和 講解11 進行一樣的設置即可。

C. android反編譯之後怎麼更快的看懂代碼

你可以試試反編譯後在eclipse中看代碼非常方便,因此將反編譯後的android代碼添加到 eclipse是很有必要的。
步驟:
1、使用dex2jar工具,將apk反編譯成.jar後綴的文件(該文件是所有.class文件的壓縮包);
2、使用jd-gui.exe工具,打開上一步驟生成的.jar後綴的文件;使用File->Save all sources菜單,將.jar文件包中的所有文件以java源碼文件形式導出。
3、eclipse中創建android工程:File->new->Project->android->Android Project from Existing code;在Root Directory:中填寫AndroidManifest.xml所在的文件夾路徑。
4、將第2步驟中生成的所有文件和文件夾一起到第3步驟生成的工程中的src文件夾中(你也可以在工程目錄下隨便創建一個目錄,然後將java源碼文件扔進出,然後在工程目錄下面的.classpath文件中添加該文件夾的目錄路徑)。

D. android 編譯的鏡像怎麼看內容

Android編譯系統在初始化的過程中,會通過根目錄下的Makefile腳本載入build/core/main.mk腳本,接著build/core/main.mk腳本又會載入build/core/Makefile腳本,而Android系統鏡像文件就是由build/core/Makefile腳本負責打包生成的。 在build/core/main.mk文件中,與Android系統鏡像文件打包過程相關的內容如下所示: [plain] view plain ...... ifdef FULL_BUILD # The base list of moles to build for this proct is specified # by the appropriate proct definition file, which was included # by proct_config.make. proct_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES) # Filter out the overridden packages before doing expansion proct_MODULES := $(filter-out $(foreach p, $(proct_MODULES), \ $(PACKAGES.$(p).OVERRIDES)), $(proct_MODULES)) $(call expand-required-moles,proct_MODULES,$(proct_MODULES)) proct_FILES := $(call mole-installed-files, $(proct_MODULES)) ...... else # We're not doing a full build, and are probably only including # a subset of the mole makefiles. Don't try to build any moles # requested by the proct, because we probably won't have rules # to build them. proct_FILES := endif ...... moles_to_install := $(sort \ $(ALL_DEFAULT_INSTALLED_MODULES) \ $(proct_FILES) \ $(foreach tag,$(tags_to_install),$($(tag)_MODULES)) \ $(call get-tagged-moles, shell_$(TARGET_SHELL)) \ $(CUSTOM_MODULES) \ ) # Some packages may override others using LOCAL_OVERRIDES_PACKAGES. # Filter out (do not install) any overridden packages. overridden_packages := $(call get-package-overrides,$(moles_to_install)) ifdef overridden_packages # old_moles_to_install := $(moles_to_install) moles_to_install := \ $(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk), \ $(moles_to_install)) endif ...... # Install all of the host moles moles_to_install += $(sort $(moles_to_install) $(ALL_HOST_INSTALLED_FILES)) # build/core/Makefile contains extra stuff that we don't want to pollute this # top-level makefile with. It expects that ALL_DEFAULT_INSTALLED_MODULES # contains everything that's built ring the current make, but it also further # extends ALL_DEFAULT_INSTALLED_MODULES. ALL_DEFAULT_INSTALLED_MODULES := $(moles_to_install) include $(BUILD_SYSTEM)/Makefile moles_to_install := $(sort $(ALL_DEFAULT_INSTALLED_MODULES)) ALL_DEFAULT_INSTALLED_MODULES := ...... .PHONY: ramdisk ramdisk: $(INSTALLED_RAMDISK_TARGET) ...... .PHONY: userdataimage userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET) ...... .PHONY: bootimage bootimage: $(INSTALLED_BOOTIMAGE_TARGET) ...... 如果定義在FULL_BUILD這個變數,就意味著我們是要對整個系統進行編譯,並且編譯完成之後 ,需要將編譯得到的文件進行打包,以便可以得到相應的鏡像文件,否則的話,就僅僅是對某些模塊進行編譯。 在前面Android編譯系統環境初始化過程分析一篇文章中,我們提到,變數INTERNAL_PRODUCT描述的是執行lunch命令時所選擇的產品所對應的產品Makefile文件,而變數PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES描述的是在該產品Makefile文件中通過變數PRODUCT_PACKAGES所定義的模塊名稱列表。因此,我們得到的變數proct_MODULES描述的就是要安裝的模塊名稱列表。 我們知道,Android源碼中自帶了很多默認的APK模塊。如果我們想用自己編寫的一個APK來代替某一個系統自帶的APK,那麼就可以通過變數PACKAGES.<new>.OVERRIDES := <old>來說明。其中,<new>表示用來替換的APK,而<old>表示被替換的APK。在這種情況下,被替換的APK是不應該被打包到系統鏡像中去的。因此,我們需要從上一步得到的模塊名稱列表中剔除那些被替換的APK,這是通過Makefile腳本提供的filter-out函數來完成的。 一個模塊可以通過LOCAL_REQUIRED_MODULES變數來指定它所依賴的其它模塊,因此,當一個模塊被安裝的時候,它所依賴的其它模塊也會一起被安裝。調用函數expand-required-moles獲得的就是所有要安裝的模塊所依賴的其它模塊,並且將這些被依賴的模塊也一起保存在變數proct_MODULES中。 注意,這時候我們得到的proct_MODULES描述的僅僅是要安裝的模塊的名稱,但是我們實際需要的這些模塊對應的具體文件,因此,需要進一步調用函數mole-installed-files來獲得要安裝的模塊所對應的文件,也就是要安裝的模塊經過編譯之後生成的文件,這些文件就保存在變數proct_FILES中。 最終需要安裝的文件除了變數proct_FILES所描述的文件之後, 還包含以下四類模塊文件: 1. 變數ALL_DEFAULT_INSTALLED_MODULES描述的文件。 2. 變數CUSTOM_MODULES描述的文件。 3. 與當前編譯類型對應的模塊文件。例如,如果當前設定的編譯類型為debug,那麼所有通過將變數LOCAL_MODULE_TAGS將自己設置為debug的模塊也會被打包到系統鏡像文件中去。 4. 與當前shell名稱對應的模塊文件。例如,如果當前使用的shell是mksh,那麼所有通過將變數LOCAL_MODULE_TAGS將自己設置為shell_mksh的模塊也會被打包到系統鏡像文件中去。 最後,moles_to_install就描述當前需要打包到系統鏡像中去的模塊文件。實際上,我們除了可以通過PACKAGES.$(p).OVERRIDES來描述要替換的APK之後,還可以在一個模塊中通過LOCAL_OVERRIDES_PACKAGES來描述它所替換的模塊。因此,我們需要通過函數get-package-overrides來獲得此類被替換的模塊文件,並且將它們從moles_to_install中剔除,這樣得到的模塊文件才是最終需要安裝的。 確定了要安裝的所有模塊文件之後,就可以將build/core/Makefile文件載入進來了。注意,文件build/core/Makefile是通過變數ALL_DEFAULT_INSTALLED_MODULES來獲得當前所有要打包到系統鏡像文件中去的模塊文件的。 文件build/core/Makefile主要就是用來打包各種Android系統鏡像文件的,當然它也是通過make規則來執行各種Android系統鏡像文件打包命令的。每一個Android鏡像文件都對應有一個make偽目標。例如,在build/core/main.mk文件中,就定義了三個make偽目標ramdisk、userdataimage和bootimage,它們分別依賴於變數INSTALLED_USERDATAIMAGE_TARGET、INSTALLED_USERDATAIMAGE_TARGET和INSTALLED_BOOTIMAGE_TARGET所描述的文件,並且它們分別表示的就是ramdisk.img、userdata.img和boot.img文件。

E. android怎麼通過pid判斷原生代碼fork出的子進程是否正在運行

1.將應用程序源碼復制進Android源碼目錄中(提前編譯好源碼) 2.使用build/envsteup.sh 配置shell - mm TARGET_PRODUCT=proct_name 或直接./build_android.sh 也能完成編譯。 3.在源碼目錄:out/target/proct/proctname/obj/APPS/test_cert_intermediates 下有三個文件:package.apk package.apk.unsigned package.apk.unaligned 將package.apk.unsigned復制出來,單獨進行sign. 4.在Windows下進行sign: jarsigner -verbose -keystore youkey.keystore d:\package.apk.unsigned youkey 5.zipalign -v 4 d:\package.apk.unsigned d:\package.signed.apk

F. 怎麼知道android源碼編譯成功

直接連上手機,如果能安裝運行就沒問題,如果是單純的編譯,那就看日誌

G. 查看apk是android哪個版本編譯

如果有一個apk,需要知道他最低安裝支持的Android版本是什麼,應該如何查看呢?
直接將apk後綴名改為rar或者zip,拉出AndroidManifest.xml?不行,AndroidManifest.xml已經被編譯過了,裡面很多內容改為二進制了。
其實用Android自帶工具即可,進入Android SDK目錄。
cd sdk\build-tools\android-4.4.2 這邊以4.4.2為例,可以參照自己的platform版本

aapt.exe list -a someapk.apk > apkversion.txt

然後用記事本之類的應用打開apkversion.txt搜索
minSdkVersion,以我這邊為例,可以看到這便是0xf,即15
E: uses-sdk (line=8)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0xf

15對應的Android版本可以從這邊查閱:
Android版本和API Level對應關系

閱讀全文

與怎麼看android編譯進度相關的資料

熱點內容
貸款買車時拿到了綠本不用解壓 瀏覽:805
網路游戲客戶端編程 瀏覽:208
當代政治哲學pdf 瀏覽:276
我的世界國際版的伺服器怎麼進不去 瀏覽:739
十分鍾帶你反編譯 瀏覽:695
vi命令行模式 瀏覽:612
安卓手機如何做到手勢截屏 瀏覽:386
程序員研發出智能辦案系統 瀏覽:114
羽絨服能用壓縮袋嗎 瀏覽:27
博弈學pdf 瀏覽:228
android項目改名 瀏覽:453
圖形化編程軟體哪個最好 瀏覽:187
路由器art編譯 瀏覽:339
共享端電腦加密後怎樣讀取列印機 瀏覽:515
怎麼做一款app手游 瀏覽:946
租阿里雲伺服器的都有哪些 瀏覽:827
怎麼解決游戲閃退的問題手機安卓 瀏覽:341
程序員加班還堅持運動嗎 瀏覽:119
如何購買騰訊伺服器ip 瀏覽:519
華為手機光遇如何換伺服器 瀏覽:867