⑴ java 解壓縮 APK 並重新局部替換文件後打包 怎麼弄
你是想要反編譯別人的apk吧,apk里res里的文件都是編譯過,你根本不能直接修改。
去用apktool這個工具,能反編譯和重新編譯。只不過再編譯後的apk需要重新簽名
⑵ 怎麼樣把 apk 轉為java
需要工具:
1、dex2jar-0.0.7.11-SNAPSHOT(其他版本也行)
2、jd-gui
把apk應用包,用解壓縮軟體打開,解壓出classes.dex
然後把classes.dex放到dex2jar-0.0.7.11-SNAPSHOT的目錄下,即和bin同一目錄
然後打開命令提示符,進入到dex2jar-0.0.7.11-SNAPSHOT,執行命令dex2jar.bat classes.dex
會生成一個classes_dex2jar.jar文件
然後用jd-gui打開classes_dex2jar.jar文件(裡面都是class文件)
你就可以看到源代碼了
file-->save all sources可以導出java文件。
⑶ java解析apk包名以及版本號時報錯,java.util.zip.ZipError。請問這是什麼問題啊只有在正式伺服器會出現
java解析apk包名以及版本號時報錯,java.util.zip.ZipError
引入的jar包不對,或者你的壓縮文件不標准。
一般就會報這個錯誤。
關於上面英語的翻譯:
Key features(主要特性):Create, Add, Extract, Update, Remove files from a Zip file(針對ZIP壓縮文件創建、添加、抽出、更新和移除文件)
Read/Write password protected Zip files(讀寫有密碼保護的Zip文件)
Supports AES 128/256 Encryption(支持AES 128/256演算法加密)
Supports Standard Zip Encryption(支持標准Zip演算法加密)
Supports Zip64 format(支持zip64格式)
Supports Store (No Compression) and Deflate compression method(支持Store(非壓縮)和Deflate壓縮方法---不太明白)
Create or extract files from Split Zip files (Ex: z01, z02,...zip)(針對分塊zip文件創建和抽出文件)
Supports Unicode file names(支持Unicode編碼文件名)
Progress Monitor(進度監控)
⑷ 如何動態載入android的so文件,如何壓縮apk尺寸
您好,很高興為您解答。
一、 工具集介紹 (項目地址: https://github.com/liyuming1978/NativeLibCompression)
安卓壓縮工具集提供了一個極為簡潔的方法,能夠比安卓原有的Zip提供更高壓縮比的存儲應用內的so文件 (後期版本還可以支持壓縮動態載入的jar包,以及游戲資源文件),同時提供了應用內網路更新下載壓縮文件的方法,使得應用可以將部分so存儲到雲端,減小應用的尺寸。
壓縮原理: 壓縮工具會把所有的so使用LZMA演算法壓縮到assert目錄,應用在第一次啟動的時候,會解壓到應用的私有目錄下
二、 工具集組成
工具集為一個安裝程序,建議安裝在默認路徑下,安裝在program files下在win7可能有讀寫許可權的問題導致一些異常
安裝後,你可以看見4個目錄,此目錄內都含有源碼。
安裝後的四個目錄如下
其中 ApkLibComrepss 為java命令行程序的源碼,在此目錄的bin子目錄中,你可以找到ApkCompress.jar ,使用這個文件可以把一個普通的apk文件轉換為壓縮的apk文件
CompressDemo為一個樣例代碼,你可以參考這個代碼知道如何整合壓縮的SDK。
DecRawso是壓縮的SDK,你的開發工程需要引用這個SDK,並進行一些源碼上的修改,才能整合壓縮的功能
RawsoCreator為windows下的轉換工具, 這個工具一般無需使用, 僅僅在調試和二次開發壓縮SDK的時候使用。
三、 如何整合壓縮SDK
打開CompressDemo,我們以這個工程為例子講解如何整合壓縮SDK
1. 首先需要引入DecRawso工程
2. 然後需要在你的工程內最初始的地方調用DecRawso.NewInstance。在此demo工程內,是在MainActivity.java的OnCreate內調用了此方法, 此方法是創建了一個解壓的唯一實例。注意:此方法是非同步的,所以你可以傳入一個handler接受非同步解碼完成的消息,如果同時傳入參數showProgress=true,SDK內會產生一個進度對話框以阻塞主進程。不推薦使用DecRawso.NewInstance(mContext,null,false);的方式,此方式不接受任何消息,且無進度對話框,解壓會在後台自動完成,並且在應用第一次load so的時候阻塞直到後台解壓完成。所以如果阻塞時間過長,可能會導致應用無響應。
3. 修改load so文件的方法:所有的System.loadlibrary(***)改為 System.load(DecRawso.GetInstance().GetPath(「***"));
新版本, 這步可以省略了,sdk會修改system的libaray載入路徑,一般情況下,系統升級不會出問題 (非正規代碼,小概率會隨android升級修改新的代碼),如果方便的話,還是採用System.load(DecRawso.GetInstance().GetPath(「***"))
經過這幾個簡單的步驟,壓縮的SDK已經整合到工程內了。
四、 如何壓縮發布APK
使用ApkCompress.jar壓縮發布APK。 此工具為命令行工具。一般的此命令使用方式為:在命令行運行ComPressApk.jar-a C:/my/test.apk -k c:/key *** ### alias -x86http://www.test.com (也可以運行 java –jarComPressApk.jar )
-a 後面跟apk路徑名, 可以不是全路徑
-k 後面是簽名文件[key storepasskeypass alias name] ,key可以不是全路徑名 (name 如果不寫, 默認就是CERT)
-x86 表示需要存儲x86庫文件在雲端, 後面跟以http://開頭的鏈接,最後實際的存儲位置應該為 http://www.test.com/cloudrawso_x86
命令執行完以後, 會生成test_CompressAlign.apk. 這個apk就是壓縮後的apk
五、 開發模式和壓縮模式
為了方便開發,在實現開發的過程中(修改了源碼支持壓縮後),也可以不壓縮so,apk也可以正常運行,壓縮的SDK內部會自動判斷是否有壓縮包, 如果沒有壓縮包,則載入的路徑恢復成android默認的路徑。所以最方便的開發是,先整合代碼,在開發過程中和原來一樣開發(不壓縮),在發布的時候才壓縮apk
六、 X86和ARM庫混合調用
在實現開發過程中,可能會有某些第三方庫確實沒有x86版本,通常情況下ISV並不在x86目錄下放置arm的第三方庫,那麼在實際運行過程中會導致缺庫現象的發生。在缺庫的情況下,壓縮的SDK會在x86設備上自動解壓arm的壓縮包,避免缺庫現象的發生。(只有真正載入了缺失的庫才是缺庫,庫文件不一致並不一定就是缺庫)
但是顯然這樣會導致運行的低效率,如果在第三方so和x86的庫完全沒有相互引用的情況下(也就是說這些庫都是java層使用JNI調用的,在native層沒有相互調用),可以拷貝arm的第三方庫到x86目錄下,這樣就不會出現缺庫的情況。當然這種情況會導致arm庫多餘的拷貝,在以前的zip壓縮情況下,會使得壓縮包變大,但是在新的LZMA壓縮情況下,庫大小完全不會增大,因為LZMA壓縮由於字典比較大,能夠盡可能的壓縮關聯的幾個文件,如果文件完全相同,LZMA的壓縮會和單個文件基本一致。
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
⑸ java怎樣獲取apk文件icon圖標
java獲取apk文件icon圖標的方法步驟如下:
1、解壓apk,apk實際上是zip壓縮檔。
2、解析AndroidManifest.xml文件,解析application節點,獲取android:icon屬性,得到圖標資源文件名。
3、圖標資源大多數位於/drawable-hdpi目錄下。
4、嘗試讀取png或者jpg格式,如果還讀取不到,那就按照沒有圖標處理。
⑹ 修改apk解壓和反編譯有什麼區別
你好!
APK就是個壓縮包,裡面有已經編譯好的Java偽指令(二進制的,但是是偽指令)和圖片、聲音、布局等「資源」。
而反編譯,則是把Java的偽指令還原成Java的代碼(人類看得懂的玩意兒)。後者能徹底修改別人的程序。
我的回答你還滿意嗎~~
⑺ 如何反編譯Apk得到Java源代碼
具體步驟: 1.首先將apk文件後綴改為RAR並解壓。 2.解壓rar文件,得到其中的classes.dex文件 3.我們需要用到dex2jar 把dex文件轉為jar文件。 3.1把解壓得到的classes.dex文件放入dex2jar.bat 所在目錄 ) 3.2打開DOS命令行,進入dex2jar所在目錄,運行 dex2jar.bat classes.dex 生成 classes_dex2jar.jar 4.最後用jd-gui.exe打開生成的classes_dex2jar.jar我們就能開到應用的源代碼了。
⑻ 如何反編譯Apk得到Java源代碼
1.下載反編譯工具
需要下載四個工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:將apk中的classes.dex轉化成Jar文件。
JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:輔助windows批處理工具。
下載地址:
dex2jar:http://code.google.com/p/dex2jar/downloads/list
JD-GUI:http://code.google.com/p/innlab/downloads/lis
apktool:http://code.google.com/p/android-apktool/downloads/list
工具截圖:
2.解壓縮APK包
apk文件也是一種常見的zip,常用的壓縮軟體就可輕松地解壓apk文件。用壓縮軟體將apk文件中的文件解壓到一個文件夾中,得到APK中的資源包括XML文件和classes.dex文件,classes.dex就是java文件編譯再通過dx工具打包而成的。
解壓截圖:
3.反編譯dex文件
解壓apk文件後,你會發現res目錄的圖片沒有加密,但java源碼編譯成了一個classes.dex文件,無法用普通的反編譯class文件的方法來處理,dex2jar可以將dex文件轉換成普通的jar包。
解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路徑)。
將在同目錄得到普通jar包:classes_dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。
編譯截圖:
生成jar文件的截圖如下:
4.反編譯jar包
得到jar包後,下載自已喜歡的反編譯工具,推薦使用JD-GUI,有比較簡單的圖形界面,可以反編譯單個class文件,也可以反編譯jar包,比較方便。
打開壓縮文件JD-GUI,運行jd-gui.exe,打開上面生成的jar包,即可看到源代碼了。
截圖如下:
5.反編譯xml文件
打開解壓的res\layout目錄,有很多xml文件,如果你想看下作者是如何設計界面的,你會很失望,因為你看到的是一大堆亂碼!這個時候我們需要用到的是apktool。
具體操作方法:將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
在DOS命令行中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。
這樣就得到了可以得到編譯的源碼和XML資源。
注意:文件的路徑中最好不要出現中文!
http://jingyan..com/article/dca1fa6fbe140ef1a4405212.html
⑼ 怎麼用java編寫一個程序實現從android中的apk文件包得到.dex文件
直接解壓縮apk文件就行。。
把apk文件改成rar後綴,解壓縮就能看到dex文件了啊