apktool回編譯失敗怎麼回事
1. apktool 回編 報錯: brut.common.BrutException:could not exec (exit code = 1) 請各位大神幫忙 謝謝!
apktool解包後確實存在打包回不去的問題,這種情況下即使解包後什麼都不做直接回編也失敗,問題出在apk包上,可能做了反編譯的處理,使jar包結構發生改變,這種情況下就無法對該apk進行反編譯和回編的處理了。
匯編時出現:
F:apktool>apktool b Hello Hello.apk
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
otExist: apktool.yml
at brut.androlib.Androlib.readMetaFile(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.apktool.Main.cmdBuild(Unknown Source)
at brut.apktool.Main.main(Unknown Source)
Caused by: brut.directory.PathNotExist: apktool.yml
at brut.directory.AbstractDirectory.getFileInput(Unknown Source)
經驗證是,反匯編時沒有生成apktool.yml
進行反匯編時,改用命令apktool d -r xx.apk xx便可以解決(加上了-r選項)。
(1)apktool回編譯失敗怎麼回事擴展閱讀:
匯編執行指令經匯編程序翻譯為機器指令,二者之間基本上保持一一對應的關系。匯編偽指令又稱作匯編指示,用於向匯編程序提供用戶自定義的符號、數據的類型、數據空間的長度,以及目標程序的格式、存放位置等提示性信息,其作用是指示匯編程序如何進行匯編。使用匯編語言編寫的源代碼,需要通過使用相應的匯編程序將它們轉換成可執行的機器代碼。這一過程被稱為匯編過程。
許多匯編程序可以識別代表地址和常量的標簽(label)和符號(symbols),這樣就可以用字元來代表操作數而無需採取寫死的方式。普遍地說,特定的匯編語言和特定的機器語言指令集是一一對應的。
許多匯編程序為程序開發、匯編控制、輔助調試提供了額外的支持機制。有的匯編語言編程工具經常會提供宏,它們也被稱為宏匯編器。
2. 安卓系統。用apktool導入框架,反編譯SystemUI,回編譯卻顯示一大片的error,即使是
你的systemui.apk是不是曾經被人反編譯過的,還是你原蠢賣先不小心刪猜檔則了apk裡面的某個圖片穗棚文件,再或者這個apk不能反編譯吧
3. apktool 回編譯失敗 怎麼解決
、反編譯=回編譯後分別是
smali目錄 回編譯為 classes.dex 文件
res目錄 回編譯為 resources.arsc 文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali 。
所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。1、反編譯=回編譯後分別是
smali目錄 回編譯為 classes.dex 文件
res目錄 回編譯為 resources.arsc 文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali 。
所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。
3、出錯問題1
在漢化時,往往會不小心刪掉一些符號,如 "<" ">"符號等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
這些小小的錯誤都會導致回編時譯檢查出錯。
所以漢化時,注意對校,然後再回編譯。
建議使用一些高級的文本編輯器,支持語法高亮視圖的。
4、出錯問題2
最近發現有些APK文件 反編譯後,就算不漢化直接回編譯,都會出錯。
有可能的原因1,反編譯後XML文件語法中@符號 前面多了"\" (\@ ),
用文本編輯工具 直接替換【\@】為【@】,應該可以解決。
建議使用最新版本的反編譯工具。
5、建議大家使用新版本的APKTool工具,
當然如果新的有問題也可以試試舊的一、系統文件漢化再次強調
1、漢化Settings.apk(系統設置)、MMS.apk(信息)、Phone.apk(電話)、
等等系統文件,一定要先 安裝構架,具體看另個文件
<關於APKTool工具反編譯Settings.apk問題>。
2、系統文件漢化完後不需要簽名,直接替換漢化後的文件,就可以了。
主要是,系統文件放在系統目錄,無需再次讀取簽名獲得許可權,已經是高級了。
二、打包說明
1、通常漢化完回編譯後,會自動生成所有APK內的文件,或者自動生成*.APK文件。
但是建議大家不要直接使用該文件,進了使用替換法,替換掉你漢化後的文件,
如:resources.arsc,如果修改過的圖片,等等…
2、很多人對於APK文件 解壓縮或壓縮 都用「WinRAR」或「好壓」,這里不推薦。
希望大家安裝7-Zip這個壓縮工具,對於zip格式的支持是最好的。而且很方便,
不需要重新關聯apk 直接右鍵打開就行了。替換直接拖拉進去,就OK了一、回編譯出錯問題
(1.提示 strings.xml 最後一行錯誤,檢查是否</string>符號錯誤;
在漢化時,往往會不小心刪掉一些符號,如 "<" ">"符號等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
(2.提示 strings.xml 最頂部含中文代碼首行錯誤,編碼格式不對,轉換成 UTF-8;
(3.提示 public.xml 出錯,檢查改動過的 arrays.xml 是否代碼有錯誤的地方;
二、一切能正常但無法回編譯
還有一種情況,apktool最新版本能正常反編譯一個apk文件,在未做任何修改的情況下,無法回編譯。
這是就要注意了,可以嘗試一下用低版本的apktool進行【反編譯】,然後在用高版本的apktoo工具【回編譯】。
這里向大家推薦用 【APKDB】 這個工具,很方便,反編譯時可以選擇apktool的版本。
4. 反編譯成功,不做任何修改回編譯失敗,出現這樣的提示,如圖,哪位高
反編譯後的文件夾內丟失apktool.yml文件!
這個文件是APKTOOL工具回編譯時必要的文件,在反編譯APK時會自動生成,裡麵包含APKTOOL反編譯某個APK文件的相關信息!此文件內容不可包含中文!
格式如下:
java">version:1.4.3
apkFileName:BluetoothFileTransfer_Ad-free_4.80.apk
isFrameworkApk:false
usesFramework:
ids:
-1
第一行代表APKTOOL程序的版本
第二行是APK程序名稱
第三行是說明該APK是不是Framework級的文件
第四行到最後,我不是很清楚,估計是使用Framework的級別吧
如果你回編譯的APK不屬於系統級文件,你可以按照以上內容新建一個apktool.yml文件。不過版本行一定要寫你當前使用的apktool程序的版本!
5. E4A寫的APK用apktool反編譯成功,但是修改後回編譯時失敗
1 有沒有載入framework-res.apk構架?在編譯一些系統程序時需要先載入framework-res.apk這個系統構架。
2 反編的文件及framework-res.apk是不是官方原版未改動過的?很多時候出錯是因為反編的文件是別人或自己改動過的,建議直接從官方固件中提取文件進行編譯。
3 技巧說明使用的工具是否版本過低?目前APK編譯工具apktool已更新到1.5.2了,這里有本人珍藏的互動式界面版下載:點我下載
4 技巧說明以上都沒有問題?反編後什麼也不改回編也出錯?那隻有一個方法了:可以嘗試一下用低版本的apktool進行反編譯,然後在用高版本的apktoo工具回編譯
5 打開要編譯文件夾目錄下的 apktool.yml,修改apkFileName參數為 非中文,問題可以解決
6 反匯編時沒有生成apktool.yml,進行反匯編時,改用命令apktool d -r xx.apk xx便可以解決(加上了-r選項)
6. apktool 回編 報錯: brut.common.BrutException:could not exec (exit code = 1) 請各位大神幫忙 謝謝!
解決方式:
把母包里的bool.xml拷貝到融合的apk里。
代碼如下:
W: F:PackageTemp102294game esvaluespublic.xml:1063: error: Public symbol bool/abc_config_actionMenuItemAllCaps declared here is not defined.
W: F:PackageTemp102294game esvaluespublic.xml:1064: error: Public symbol bool/abc_config_closeDialogWhenTouchOutside declared here is not defined.
W: F:PackageTemp102294game esvaluespublic.xml:1065: error: Public symbol.
(6)apktool回編譯失敗怎麼回事擴展閱讀:
apktool 回編失敗
1、反編譯=回編譯後分別是
smali目錄 回編譯為 classes.dex 文件
res目錄 回編譯為 resources.arsc 文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali 。
所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。
7. APKTOOL怎樣用的,我反編譯成功之後回編譯失敗,出現下圖這樣的情況是怎樣的
編譯失敗是操作過程中錯誤造成的。解決方式如下:
1、首先去官方網站點擊下載可用的最新ApkTool。