如何制作apk軟件

文章插圖
1JAVA編程制作apk
2 去網上找一些免費的apk制作網 不過一般很坑
誰知道用什么工具可以制作簡單的apk軟件,android studio,或 Eclipse
apk軟件的制作!使用android sdk ,+ Eclipse,打包成apk
APK怎樣編寫第一部分:apk應用介紹,解包和打包,常用軟件
相信每為機友對APK文件都不陌生 。你可能每天都與APK文件打交道,無論是安裝和卸載有用的應用工具、插件、好玩的游戲等等 。。。尤其是最近關于2.3.4 XXJVP ROM的漢化,更成為論壇里的熱門話題 。你們可曾知道ROM是怎樣漢化的嗎?說來容易做來難 。這里要涉及很廣泛的知識、手段,以及要花大量的時間 。
1. APK文件簡介
APK是Android Package的縮寫,即Android application package文件或Android安裝包 。每個要安裝到Android平臺的應用都要被編譯打包為一個單獨的文件,擴展名為 .apk 。APK文件是用專業軟件eclipse編譯生成的文件包,其中包含了應用的二進制代碼、資源、配置文件等 。通過將APK文件直接傳到Android手機中執行即可安裝 。APK文件其實就是zip格式,但其擴展名被改為apk,在Windows下用解壓軟件WinRAR/WinZIP/7-Zip可以直接打開 。解壓后,你會看到有幾個文件和文件夾 。一個典型的APK文件通常有下列內容組成:
AndroidManifest.xml程序全局配置文件
classes.dexDalvik字節碼
resources.arsc編譯后的二進制資源文件
META-INF\該目錄下存放的是簽名信息
res\該目錄存放資源文件
assets\該目錄可以存放一些配置文件
下面對這些文件和目錄做些基本的注釋和介紹:
? AndroidManifest.xml
該文件是每個apk應用程序都必須包含的文件,它描述了應用程序的名字、版本、權限、引用的庫文件等等信息 。
? classes.dex文件
classes.dex是java源碼編譯后生成的java字節碼文件 。dex是Dalvik VM executes的全稱,即Android Dalvik執行程序 。利用解析工具可以將其轉換成java來加以閱讀和理解 。
? resources.arsc
編譯后的二進制資源文件 。在做主題美化時要常與這個文件打交道 。
? META-INF目錄
META-INF目錄下存放的是簽名信息,有三個簽名文件,用來保證apk包的完整性和系統的安全 。在eclipse編譯生成一個apk包時,會對所有要打包的文件做一個校驗計算,并把計算結果放在META-INF目錄下 。這就保證了apk包里的文件不能被隨意替換 。比如拿到一個apk包后,如果想要替換里面的一幅圖片,一段代碼, 或一段版權信息,想直接解壓縮、替換再重新打包,基本是不可能的 。如此一來就給病毒感染和惡意修改增加了難度,有助于保護系統的安全 。
? res目錄
res目錄存放資源文件 。包括圖片,字符串等等 。res下有若干個子目錄,主要為drawable,layout,xml 。
解包后,幾乎所有可能的修改和編輯工作基本都在這里 。漢化ROM的主要工作就在這里 。漢化ROM實際上就是漢化所有的apk應用程序的字符文件 。
? assets目錄
assets目錄可以存放一些配置文件,這些文件的內容在程序運行過程中可以通過相關的API獲得 。
下面以“設置”應用程序Settings.apk為例 。用WinRAR打開文件后,看到以上介紹的六項內容 。現在,即使你已經對文件解壓,你還是無法直接閱讀每個文件的內容 。為了讀出這些文件的內容,從而進行進一步的修改和編輯,你就必須具有相應的工具了(請到第二節) 。
2. APK應用程序的解包和打包工具
這一節主要介紹在Windows系統中常用的幾個工具包,用來對apk應用程序進行解包、打包、反編譯、解析 。所有apk工具包都要求java環境(這個我就不介紹了,自己學習去吧) 。這些工具可以從網上各個論壇獲取 。我在近一個月里收集了幾個常用的工具包,我會打包上傳與有志于對apk進行操作的機友分享 。主要推薦有三個工具包 。
1) apktool
apktool可能是當今最為流行的apk工具包,由解包、打包、簽名程序組成 。被稱之為“apk反編譯利器” 。去Google一下apktool,有非常多的資源,無論是軟件下載,還是使用教程 。對非三星的應用程序進行操作,很好用 。
打開apktool工具包,看到如下內容:
Akp程序的解包和打包軟件由2個程序來完成:apktool.jar 和 aapt.exe 。
另外提供一個批處理文件:apktool.bat,其內容為:
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
運行apktools.jar需要java環境(1.6.0版本以上) 。apktool.jar用于解包,apktool.jar和aapt.exe聯合用于打包 。testkey.pk8和testkey.x509.pem是簽名程序 。
解包命令:
apktool d xxxxxx.apk ABC
這里“d”表示要解碼 。Xxxxx.apk是要解包的APK文件 。ABC是子目錄名 。解包的文件會放在這個子目錄內 。
打包命令:
apktool b ABC yyyyy.apk
這里“b”表示要打包,ABC是子目錄名,是解包時產生的子目錄,用來存放所有解包后的和修改后的文件 。yyyyy.apk是打包后產生的新的APK文件 。
在上傳的apk工具包里,已經另外加了兩個批處理文件:Unpack-apk.bat和Repack-apt.bat 。前者用于apk的解包過程,后者用于編輯后的文件的打包和簽名 。把待解包的apk文件放到Unpack-apk.bat的同一個目錄里,雙擊Unpack-apk.bat,apk文件解包開始,產生3個子文件夾,解包后的文件被放在Working_APK文件夾內 。詳細內容將在第二部分描述 。另外,批處理文件允許同時對多個apk文件順序進行解包和打包 。
注意:文件名里不允許有空格,不能有中文 。
使用前,要先安裝框架文件:apktool if framework-res.apk
如果是三星系統,還要安裝:apktool if twframework-res.apk
2) apk manager
apk manager是另一個“apk反編譯利器” 。它比apktool工具包還要強大些 。三星的許多apk系統應用程序用了三星的閉源系統,用apktool可以解包,但是打包不成功 。這時,apk manager就好用了 。
打開apk manager工具包,看到如下內容 。軟件都放在other子目錄里 。運行apk manager要求adb工具包(見下圖中的3個adb文件) 。把待解包的apk文件放到place-apk-here-for-modding子目錄里,雙擊腳本批處理程序Script.bat,選擇選項:9,產生一個子文件夾projects,解包后的文件被放在這個子文件夾內 。詳細內容將在第二部分描述 。
在使用時,有時apktool和apk manager交替使用,一個不行就用另外一個 。所以,在編輯apk應用程序時兩者都要掌握 。
注意:文件名里不允許有空格,不能有中文 。
使用前,要先安裝框架文件:apktool if framework-res.apk
如果是三星系統,還要安裝:apktool if twframework-res.apk
3) Dex2jar和XJad
該方法不是直接對apk文件進行解包 。它是首先提取apk文件內的classes.dex文件,然后使用dex2jar.jar工具包將classes.dex解包成jar文件,再通過XJad 或者其他class反編譯工具進行java反編譯,最后生成java源文件 。
但是,使用這個工具包無法進行classes.dex的還原(當然也無法進行apk的打包) 。盡管如此,這個工具包仍然很重要,因為它把classes.dex文件轉換成了可以更容易閱讀的java源文件 。在修改apk應用程序時,必不可少,是一極強的輔助工具 。相比之下,apktool和apk manager反編譯后得到的是Dalvik 反編譯碼 (Dalvik opcodes),需要很專業的知識來閱讀,很不直觀 。如果你讀懂了java源文件,那修改相對應的Dalvik碼不就容易多了嗎 。
4) 其它工具包簡介
此外,還有許多工具包可用 。這些也容易在網上找到 。
a) DoAPK
DoAPK實際上就是apktool工具包 。有人把apktool寫成了帶窗口界面的可執行文件 。
b) Google Smali
有兩個程序:baksmali.jar和smali.jar 。baksmali.jar用來反解析dex和odex文件,得到Dalvik碼 。然后用smali.jar還原成dex文件 。例如,在修改狀態欄時間顯示顏色時,要用的這兩個解析程序 。
c) AXMLPrinter2.jar
AXMLPrinter2.jar對apk文件內的 AndroidManifest.xml和main.xml進行操作,將XML還原成文本文件,便于閱讀 。
d) Apkdb
是一個集成apktool,smali,Dex2jar,簽名等功能的工具 。
e) 其它工具
不再介紹 。自己動手到網上去搜索吧 。
我把這些收集到的apk工具包打包上傳,供你們使用,免得你們找來找去 。
集成Apk工具包下載地址:
http://u.115.com/file/clnar7bm
第二部分:三星閉源系統apk文件的處理,漢化和簽名
在這一部分,我們要進入實戰 。首先,利用一個具體的例子來闡述apk工具包的使用,對apk文件進行解包、漢化、打包和簽名 。然后,我們來對付三星閉源系統的apk程序,達到我們修改、漢化和美化的目的 。我們假定所有apk文件都是單個獨立文件,不含odex文件(在官版ROM中,通常每個apk都分成兩部分,第一部分是apk,第二部分是odex 。將它們合并是另一個題目,這里不作敘述) 。
1. 配置框架(Framework)環境
在處理APK文件時,apktool需要框架文件(framework-res.apk)來解碼和打包 。apktool已經包含了標準的框架,所以在大多數APK文件的解包時,不需要另外提供框架文件 。但是,某些制造商(例如三星)使用了他們自己的框架文件,為了解包,就不得不從手機中或從ROM中把框架文件(framework-res.apk)提取出來,然后安裝到計算機 。安裝命令是:
apktool if framework-res.apk
安裝后就會得到:~\apktool\framework\1.apk
注意:三星系統(例如:I897)有兩個框架文件:framework-res.apk和twframework-res.apk 。在使用apktool之前,要安裝這兩個框架文件 。安裝方法同上:
apktool if framework-res.apk
apktool if twframework-res.apk
安裝后就會得到:~\apktool\framework\1.apk和
~\apktool\framework\2.apk 。
許多人拿來apktool工具包用,說解不開包,運行出錯 。原因是沒有配置框架環境 。
2. akp文件的漢化和修改
我首先來講對一般的(非三星)apk應用程序進行解包、漢化和打包 。為你們方便和敘述目的,我在上傳的apktool和apk manager工具包里都帶了一個小的apk應用程序SilentBoot_EN.apk 。這個程序是“靜音啟動”,就是通過這個程序來設置開機時是否有開機音樂 。我在我的2.3.4 XXJVP ROM里也集成了這個akp程序,現在你們自己來把它漢化一下吧 。我們用apktool工具包來做 。
漢化步驟如下:
1) apk程序解包首先把SilentBoot_EN.apk復制到Unpack-apk.bat的同一個目錄里(我已經放好了)
雙擊Unpack-apk.bat,apk文件解包開始 。DOS窗口出現,顯示解包進程和一系列信息,直到解包結束 。
apk-04.gif
解包結束后,在工作目錄下產生3個子文件夾:New_APK,Raw_APK和Working_APK 。解包了的文件被放在Working_APK文件夾內,原始apk文件(SilentBoot_EN.apk)被復制一份到Raw_APK文件夾保存 。見界面截圖如下:
apk-05.gif
在Working_APK字文件夾里產生了一個子夾_SilentBoot_EN.apk,里面存放所有解包后的文件 。在_SilentBoot_EN.apk之下有兩個文件夾 /res和/smali,還有兩個文件AndroidManifest.xml和apktool.yml 。用文本編輯器打開AndroidManifest.xml看看,是不是在第一部分里介紹的內容 。你要修改的內容在/res文件夾內 。
打開/res文件夾,看到里面有5個子夾,/drawable存放apk應用的圖標(Icon),drawable-hdpi存放其它要用的圖形文件,/layout是apk的布局文件,/values里是字符文件 。漢化apk就是漢化/alues文件夾內string.xml文件的內容 。
2) 字符漢化
這里只適用于懂英語的同學 。如果你不懂英語,就照表抄課好了 。
用文本編輯器打開string.xml,其內容為:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="app_name">Silent Boot</string>
<string name="labelEnabled">Enable Silent Boot</string>
<string name="textEnabled">Device is muted on shutdown.</string>
<string name="textDisabled">Device is NOT muted on shutdown.\nBoot soundis played if the device is shut down with sounds enabled.</string>
</resources>
要漢譯的字符是:Silent Boot,Enable Silent Boot,Device is muted on shutdown,Device is NOT muted on shutdown.\nBoot sound is played if the device is shut down with sounds enabled 。
先別急,我現在來教你怎樣處理文件 。有兩種漢化方法:a) 正規漢化,b) 強制漢化 。
a) 正規漢化
一個apk應用在漢化后應該能在英文和中文系統下都能使用 。/values目錄下的是英文語言包 。為了建一個中文語言包,與/values并行創建一個子文件夾:/values-zh-rCN(必須用這個文件名!) 。這里values-zh是中國地區語言包(包含港澳臺及內地),values-zh-rCN是中文簡體語言包(只包含內地),values-zh-rTW是中文繁體語言包(港澳臺) 。
把/values文件夾里的strings.xml等語言文件復制進/values-zh-rCN 。在我們的例子中,只有strings.xml一個文件 。
進入/values-zh-rCN,用文本編輯器打開strings.xml,然后你就翻譯吧,把英文描述譯成相應的中文 。
例如,我們可以把上面的string.xml文件譯成:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="app_name">靜音啟動</string>
<string name="labelEnabled">開啟靜音啟動</string>
<string name="textEnabled">關機也是靜音</string>
<string name="textDisabled">關機不是靜音\n如果沒有開啟靜音啟動,關機時播放開機音樂 。</string>
</resources>
里面有個操作符“\n”是換行符,迫使換行顯示文本內容 。之后存盤,用“另存為”(Save As)存成UTF-8格式 。這是保持中文文本的格式 。
在作漢化工作時,要對string.xml文件進行修改 。有時也需要修改其它xml文件,一個一個地認真查看,一個一個地漢化 。
b) 強制漢化
所謂“強制漢化”就是不產生/values-zh-rCN文件夾 。而是在/values文件夾內把需要漢化的文件都直接譯成中文 。顯然,如果在英文操作系統中沒有中文字庫的話,強制漢化的apk在英文系統中可能顯示亂碼 。所以,建議養成良好習慣,采用“正規漢化” 。
高級內容:以上的漢化是修改string.xml,把英文譯成相應的中文就好了,然后打包和簽名 。但是,在有些apk文件里,所顯示的字符文字并不都在xml文件里 。apk原作者把某些字符寫在代碼中 。反編譯后,存放在/smali文件夾里 。一層一層地找下去,最后你會看到一大堆Dalvik碼文件,都是以.smali為文件擴展名 。舉一個例子,用文本編輯器打開某個.smali文件,看到:
const-string v5, "ServiceMode"
“ServiceMode”會在apk執行時顯示為英文 。因此,需要漢化 。在I897 ROM里,用工程模式特殊代碼看到的多半屬于這一類 。漢譯起來非常花時間 。我們要把ServiceMode譯成“服務模式” 。怎么處理呢?你不能把const-string v5, "ServiceMode"直接改成const-string v5, "服務模式" 。打包會失敗的 。正確的做法是把相應的中文字符用16進制的unicode來表示 。例如:把“服務模式”用16進制的unicode表示就是\u670d\u52a1\u6a21\u5f0f。每一個漢字用4個字符表示,\u表示為16進制的unicode碼 。好了,正確的漢譯是:
const-string v5, "\u670d\u52a1\u6a21\u5f0f "
網上有中文字符與16進制unicode碼的對照表或轉換工具 。我在這部分提供一張轉換表供你們使用 。見附件 。
3) Apk打包和簽名
打包操作很簡單,沒有什么好講的 。照著做就行了 。
回到apktool目錄,鼠標雙擊批處理文件Repack-apk.bat,apk文件就打包好了 。在Repack-apk.bat批處理中,每個apk文件打包好后就緊跟著進行簽名操作 。所以,執行完Repack-apk.bat后,打包和簽名都完成了 。
打包和簽名好了的apk文件存放在New_APK文件夾內,文件名加了一個前綴New_ 。在我們的例子中,所生成的新的apk應用程序為New_SilentBoot_EN.apk 。這就是漢化好了的apk程序了 。
現在你需要把文件改成你需要的名字:SilentBoot_CN.apk,安裝到手機試一下吧!欣賞一下你自己漢化的apk程序!是不是很爽!有成就感吧!
3. 三星akp文件的漢化和修改
好了,有了以上對apk解包、修改(漢化)、打包、簽名做基礎,我們現在來看怎樣對三星apk進行操作 。我們手里用的是三星I897手機,/system/app目錄下的很多apk應用程序都是三星程序,典型的包括framework-res.apk,twframework-res.apk,TouchWiz30Luancher.apk 。由于三星采用自己的閉源系統,對其漢化、修改、打包和簽名有一定難度,目前還沒有發現完全適合于三星apk的專用工具 。因此,需要采取特殊手段來達到目的 。
apktool對所有三星apk文件都是可以解包的,對某些apk是可以打包簽名的,但是,對另外一些apk的打包總是失敗 。這里需要指出的是,即使你對三星apk文件打包簽名成功,這個生成的apk程序也無法在三星手機上運行!原因是三星使用了其閉源的特殊簽名 。
由于某些三星apk文件無法用apktool進行打包,所以我們在這一節使用功能更強大的apk manager進行解包和打包 。在執行apk manager腳本批處理Script.bat時,有很多選項(見下圖) 。我們用到選項9和11 。選項9是反編譯(解包),選項11是再編譯(打包) 。由于三星不承認其它簽名,所以這里簽名并不重要 。但是,如果你在處理非三星的apk文件,那簽名還是需要的,要用的選項12和14 。
操作步驟:
1)把待解包的apk文件(例如:TouchWiz30Launcher.apk)放到place-apk-here-for-modding子目錄里
2)雙擊腳本批處理程序Script.bat,你會看到上面的界面
apk-06.gif
3)選擇選項9進行解包,回車,開始解包
4)解包結束后,產生一個子文件夾projects,里面有一個字文件夾(TouchWiz30Launcher.apk),解包后的文件被放在這個子文件夾內 。
5)選擇選項24退出程序
6)按照上一節的方法進入projects/TouchWiz30Launcher.apk文件夾,把string.xml和有關的部分進行了漢化修改
7)修改和漢化結束后,再運行批處理程序Script.bat
8)選擇選項11進行打包 。需要的時間較長,請耐心等待打包結束
9)打包結束后,在place-apk-here-for-modding文件夾內產生了一個新的未簽名的apk文件:unsignedTouchWiz30Launcher.apk
為了在手機上運行apk應用程序,簽名是必需的 。那怎樣對三星apk應用程序進行簽名處理呢?一個有效的方法就是借用原來解包前apk文件已經有的簽名,把原來的簽名與新的編輯內容進行合成 。從而,達到我們解包、修改、漢化、打包和“簽名”的目的,使新的apk程序可以在三星I897上運行 。
合成操作步驟:
1)先用WinRAR打開原始的apk文件TouchWiz30Launcher.apk,里面有3個文件和兩個文件夾 。在第一部分講過每一個文件和文件夾的作用 。這里不再描述 。
apk-07.gif
2)再用WinRAR打開生成的apk文件unsignedTouchWiz30Launcher.apk 。里面是沒有簽名文件的,就沒有文件夾META-INF,我們也不需要它 。
apk-08.gif
3)從unsignedTouchWiz30Launcher.apk中提取我們編輯過的東西 。為此,用鼠標把resources.arsc文件從unsignedTouchWiz30Launcher.apk文件窗口拖進TouchWiz30Launcher.apk的窗口,去覆蓋原來的resources.arsc文件 。你也可以先把原來的resources.arsc刪除,然后再做拖入的動作 。
4)出現一個參數窗口 。在壓縮方式處選擇“Store”(存儲) 。然后按“OK” 。
apk-09.gif
5)退出WinRAR 。結束 。新的三星apk應用程序就制作好了,簽名是利用了原始的簽名 。文件是TouchWiz30Launcher.apk 。
說明:
1)如果修改了/res目錄下的內容,在第3步,就復制resources.ars 。如果修改了/smali目錄下的內容,在第3步,就復制classes.dex 。
2)只可以替換這兩個文件,別的都不要動 。
3)在第4步的壓縮方式,一定要選“Store” 。
漢字Unicode編碼對照表下載:Chinese-Unicode.rar (558.06 KB)
到此,第二部分就結束了 。最近由于工作很忙,整理和編輯工作受阻,故發布較慢,請諒解!
如何生成apk安裝包【怎樣制作apk軟件教程,怎樣制作apk軟件手機】如果你的JDK及eclipse都已安裝成功.你還要安裝一個android SDK然后新建一個android application project,編寫程序,build你的項目,就可以得到APK安裝包了
- 網易我的世界信標怎么做,我的世界四大傀儡制作
- 怎樣發出mua聲音教學,表示親親的擬聲詞
- 100個超強吸引人的直播標題,開直播標題怎樣吸引人
- 怎樣做個app軟件開發,怎樣做個app軟件代理
- 相冊幻燈片怎么制作,幻燈片制作視頻教學
- 中老年服裝搭配要注意什么 中老年選擇怎樣圖案的服裝好 中老年服飾品牌加盟
- 泡菜蘿卜的制作方法 家用,泡菜蘿卜的腌制方法和配料
- 筆記本電腦怎樣重裝系統,筆記本電腦系統怎么重裝win7
- 怎樣查詢車輛違章圖片,手機怎樣查詢車輛違章
- 精美的紙盒 手工制作,精美的紙盒子怎么折
