2011-06-02

Android SDK 開發指令工具介紹 mksdcard.exe

要讓 Android 模擬器使用 SD 記憶卡,可以透過 mksdcard.exe 工具來建立一個虛擬 SD 記憶卡的影像檔 ( Image File ) ,檔案格式為 FAT32 ,指令格式為:

mksdcard.exe [ -l LABLE_NAME ] <size> [ K | M ] <IMAGENAME>

例如建立一個 512M 的 SD 卡檔案,供模擬器使用

mksdcard.exe 512M my512m
emulator.exe -avd Android231 -sdcard my512m

可以透過先前提到的 adb.exe 來對 sdcard 檔進行檔案的管理,上傳及下載。

Android SDK 開發指令工具介紹 ddms

Android Dalvik Debug Monitor Server ( DDMS ) 除錯監控伺服器,提供下列除錯監控功能:

  • 將應用程式在 Dalvik Runtime 執行時發生的錯誤,以 logcat 方式回報給開發人員。
  • 支援畫面擷取功能,可以將錯誤的畫面或訊息擷取下來,以方便後續除錯。
  • 提供一個 port-forwarding 服務,可以將這個除錯工具安裝到實體設備上,也就是說當一般用戶使用這些應用程式時,若是發生錯誤,可以將這些訊息攔截下來,回報給開發人員。
  • 提供設備上執行緒 ( Thread ) 和堆疊 ( Heap ) 的資訊和狀況。
  • 還有無線狀態資訊、撥進來的電話、簡訊訊息、模仿經緯度位置的資料等。

除錯工具 ADB 和除錯監控伺服器 DDMS 是互為表裡的,DDMS 或透過 ADB 銜接到實體或虛擬設備上來進行錯誤監控。

因為 Android 作業系統支援多工執行緒,因此每一個在 Android 作業系統上執行的應用程式都會有獨立的行程,建立自己獨立的 Dalvik VM,對每一個設備上的 VM 都會經由一個獨立的通訊埠 ( port ) 連接到 ddms 除錯監控伺服器,它會監聽除錯訊息。

譬如第一個 VM 進來,DDMS 會使用 port 8600 來監聽這個 VM 的訊息,下一個 VM 就會使用 8601 ,依此類推。因此同時時執多個應用程式時,每一個應用程式所發生的錯誤訊息都會由個別的 DDMS 負責監聽和記錄,不會有混淆。

可以直接使用 Eclipse 開發環境所提供的 DDMS 工具或是執行安裝在 Android SDK 系統目錄下 tools  內的 ddms.bat 檔。

如果你的 Eclipse 右上角沒有看到 DDMS 圖示,可以由選單 Windows -> Open Perspective -> DDMS 找到它並安裝。

除錯監控系統下方的 LogCat 視窗會即時顯示每一個程式透過 Dalvik VM 所傳出的即時訊息,程式是以 pid 行程號碼來表示。LogCat 視窗的右上角有五個按鈕用來選擇分類的訊息功能。

  • V: Verbose 顯示全部訊息
  • D : Debug 顯示除錯訊息
  • I : Info 顯示一般資訊
  • W : Warning 顯示警告訊息
  • E : Error 顯示錯誤訊息

也可以透過下方的 Filter 欄位過濾指定的除錯標籤 tag ,只有符合的除錯標籤的訊息才會顯示出來。

左上方的 Devices 視窗顯示目前 Android 模擬器中正在執行的所有行程名稱、號碼與通訊埠。

在 Devices 視窗下方是 Emulator Contorl 視窗,這個模擬控制視窗提供可以模擬電話狀態 ( Telephone Status ) 、電話行為 ( Telephone Actions ) 和 GPS 位置控制 ( Location control ),GPS 位置控制畫面讓你可以自由輸入位置的經緯度,選項有手動 ( Manual )  、下載 GPX 檔案和下載 Google Earth 產生的 KML 地圖檔案。

File Explorer 視窗會啟動檔案瀏覽器,讓你方便的瀏覽 SD 記憶卡目錄 /sdcard 和 Android 系統內的檔案目錄。File Explorer 視窗的右上方有三個圖示,分別為 adb pull, adb push, adb delete 。

另外 Devices 視窗的最右邊圖示 Device Screen Capture,可以直接擷取畫面用。

而 Android SDK 系統工具內的 DDMS 則是透過 ddms.bat 呼叫執行 ddms 除錯監控系統,在執行 ddms 之前,要記得先啟動模擬器。

Android SDK 開發工具指令介紹 adb.exe

系統除錯工具 adb.exe ( Android Debug Bridge ) 是個多功能的工具,讓你可以管理實體設備或虛擬設備上的執行狀況。adb.exe 是一個 Client/Server 型態的系統,包含下列三個部份:

  • 端末程式 ( Client ) : 這個程式是在你的開發環境上運行,可以經由命令列模式 shell 介面下達 adb 指令來操作端末程式。其它 Android 工具如 ADT 或 DDMS  都可以建立一個 adb 端末程式。
  • 伺服程式 ( Server ) : 這個程式是在你的開發環境中的背景執行,伺服程式負責管理介於端末程式和進程程式間的通訊溝通。
  • 進程程式 ( Daemon ) : 這個程式是在你的實體設備或虛擬設備的背景中執行。

adb.exe 指令除了提供應用程式除錯功能外,最重要的功能就是能將編譯好的 Android Package 程式 apk 安裝到實體或虛擬設備上。

另外 adb.exe 除錯工具也支援命令列模式 shell 指令,可以讓你輸入一些指令來管理 Android 系統。

ADB 指令的標準格式 : adb.exe [ -d | -e | -s <serialnumer> ] <command>
-d 表示使用實體連接設備
-e 表示使用模擬設備
-s 有多個設備時,指定設備的序列號碼
例如安裝 HelloWorld.apk 到 Android 模擬器,序號是 5556 的虛擬設備上
adb.exe -s emulator-5556 install helloworld.apk

偵測 ADB 伺服器的資訊
adb.exe devices
可以先看看哪個設備已經和 adb 伺服器連上了,這對於接下來要執行的 adb 指令會有幫助。後面的狀態 device 表示正在執行中,offline 狀態表示在離線狀況,no device 表示沒有裝置在執行。


取得 adb 伺服器的運作狀態
adb.exe get-state
device 運作中, offline 離線, bootloader 開機中

取得 Android 模擬器的執行序列號,如 emulator-5554
adb.exe get-serialno

安裝應用程式 apk 套件

adb.exe [ -s <serialNumber> ] install <APK_PATH>
adb.exe -s emulator-5554 install helloworld.apk
adb.exe install helloworld.apk

移除應用程式 apk 套件
adb.exe [ -s <serialNumber> ] uninstall <PackageName>
adb.exe -s emulator-5554 uninstall com.example.android.helloworld
adb.exe uninstall com.example.android.helloworld
詳細的 package 名稱可以由 Android 作業系統的 /data/data 目錄或 /data/app 目錄來查得。

Android 作業系統命令列模式
adb.exe shell
可以進入 Android 作業系統命令列模式,用來管理和查詢 Android 作業系統的目錄和執行相關的指令。如 ls, cd, mkdir, rmdir, rm, md, mv, exit 等。

上傳檔案到 /sdcard
adb.exe push  <local> <remote>
adb.exe push TestAndroid.png /sdcard

從 /sdcard 下載檔案到本地端
adb.exe pull <remote> <local>
adb.exe pull /sdcard/TestAndroid.png TestAndroid.png

變更 TCP 通訊埠
adb.exe forward tcp:6100 tcp:7100
Android 模擬器預設的 TCP 通訊埠是 6100,若要修改可以使用 adb.exe forward 指令來修改。
adb.exe forward tcp:6100 local:logd

啟動 adb 伺服器
adb.exe start-server

關閉 adb 伺服器
adb.exe kill-server

即時監控 Android 模擬器運作時所產生的除錯記錄
adb.exe logcat

顯示出系統所產生的全部錯誤訊息
adb.exe bugreport
會將 Android 模擬器的 dumpsys, dumpstate 及 logcat 的資料全部顯示出來。

Android SDK 開發工具指令介紹 emulator.exe

Android Emulator ,模擬器 emulator 是一個以 QEMU 為基礎的開發模擬工具,方便你在 Android 開發環境上設計、除錯和測試應用程式。

啟動模擬器可以透過 Android SDK Manager 來啟動,或是透過 Eclipse 的 Run -> Run 也會自動呼吸啟動模擬器,也可以透過命令列的方式來執行。

emulator.exe -avd <AVD_TARGET_NAME>
emulator.exe -avd Android231

當然在使用模擬器前要先建立好 AVD 虛擬裝置。

Android 模擬器的控制,可以透過模擬器的啟動選項 ( Startup Options ) 和終端指令 ( Console Commands ) 來控制模擬器環境的行為。

emulator.exe -avd <AVD_TARGET_NAME> -skin <SKIN_ID> -sdcard <SDImageFlesPath>
emulator.exe -avd Android231 -skin HVGA -sdcard my2g
emulator.exe -avd Android231 -skin 480x320

SKINS: QVGA 240x320, WQVGA400 240x400, WQVGA432 240x320, HVGA 320x480, WVGA800 480x800, WVGA854 480x854

Android 專案欄位及檔案說明

以 HelloWorld 通用範例來說明
  • Project name: Eclipse 工作專案名稱,如 HelloWorld。
  • Application name: 應用程式的名稱,這個名稱會登錄在 Android 作業系統內。
  • Package name: Java 的封包名稱,儲存應用程式名稱的檔案路徑,如 com.example.android.helloworld
  • Crate Activity: 建立執行檔名稱。
  • HelloWorld -> src -> package_name -> HelloWorld.java 為 Java 主程式檔。
  • HelloWorld -> res -> layout -> main.xml 檔案描述人機介面畫面的規劃。
  • HelloWorld -> res -> values -> strings.xml 檔案說明已設定變數的內容。
  • HelloWorld -> AndroidMainfest.xml 資訊設定檔案描繪 Android Application and Activity 的屬性。

執行 Android 應用程式由 Eclipse 選單的 Run -> Run Ctrl+F11 出現 Run As 書面,選擇 Android Application 按下 OK 按鈕,就會開始編譯,完成後會呼叫 AVD 來執行,並顯示結果。


建立 Android 開發環境

建立 Android 開發環境步驟
  1. 安裝 JDK ( Java Development Kit ) 開發套件
  2. 安裝 Eclipse IDE for Java Developers 圖形介面開發環境
  3. 安裝 Android SDK ( Software Development Kit ) 軟體開發套件
  4. 安裝 Android 開發工具 ADT ( Android Development Tools )
  5. 設定 Android 開發工具 ADT ( Android Development Tools )
  6. 建立 Android 虛擬設備 AVD ( Android Virtual Device )
  7. 驗證 Android SDK 軟體開發環境
套件下載:  JDK , Eclipse , Android SDK
  • 環境變數設定:
將 anddroid-sdk-windows/tools 路徑加到系統環境變數 PATH 中。
執行 android.exe -h 測試。
  • 首次執行 Eclipse 需要設定工作空間 WorkSpace 的目錄空間。
  • 安裝 ADT 到 Eclipse 外掛套件中
在 Eclipse 選單中點選 Help -> Install New Software 開啟 Available Software 書面。
在 Available Software 畫面按下 Add 按鈕,在 Add Site 設定畫面中,輸入
Name: Android Development Tools
Location: http://dl-ssl.google.com/android/eclipse/
按下 OK 按鈕回到 Available Software 畫面,會看見出現 Developer Tools ,勾選要安裝的開發工具,包括 Android DDMS , Android Developer Tools 及 Android Hierarchy Viewer ,按下 NEXT 下一步開始下載,下載完成後會出現 Install Details 畫面,列出要安裝的工具,選擇 Select All 再按下 NEXT 按鈕,出現 Review Licenses 書面,選擇 I accept terms of the license agreement 再按下 Finish 按鈕,開始安裝 ADT;安裝完成後,重新啟動 Eclipse 。
  • 設定 Android ADT 開發工具
在 Eclipse 選單中點選 Window -> Preferences 開啟 Preferences 設定畫面,點選左側的 Android 節點,右側會出現 SDK Location ,按下 Browse 選擇 Android SDK 的路徑,再按下 OK 按鈕。
  • 建立 Android Virtual Device 虛擬設備
可直接由 Android SDK Manager 中新增一個 AVD 。
或是由 Eclipse 中的 Window -> Android SDK and  AVD Manager 來管理。
也可直接在命令提示字元下使用 android.exe create avd -n <NAME> -t <TARGETID> 建立,使用 android.exe list targets 可以列出所有 AVD 裝置。
  • 驗證 Android SDK 軟體開發環境
啟動 Eclipse 後,由選單 File -> New -> Project 出現 New Project 書面,選取 Android 節點的 Android Project ,會出現 New Android Project 的書面,依序輸入 Project name 勾選 Build Target ,然後在 Properties 中輸入 Application name, Package name, Create Activity 接著按下 Finish 即可建立新的 Android 專案。
  • 安裝 Windows USB 驅動程式
啟動 Android SDK Manager ,選擇 Available Packages ,勾選 Third party Add-ones -> Google Inc. add-ons (dl-ssl.google.com) -> Google Usb Driver package, revision 4 ,按下 Install Selected 出現 Choose packages to Install 畫面,勾選 Accept 再按下 Install 開始下載安裝。
完成後會儲存在 <sdk>/usb_driver 目錄中,接入 android 裝置到 usb 上時,再依安裝驅動程式的畫面來安裝 windows usb driver。

2011-06-01

深入淺出為您講解安卓系統下軟件的漢化

首先,你要先做好下面三個步驟
(需要下載的所有東西都在帖子後面)
1、由於漢化需要你的系統有java環境,所以我們要先安裝:jdk
2、編寫需要漢化的文本的軟件:npp.5.8.5.Installer  
3、下叫做《編譯》的附件後解壓得到aapt 、apktool、apktool.jar 這3個東西,全部剪切後粘貼進C盤的WINDOWS文件夾方便以後調用


OK,接下隨便下個英文軟件

1、比如軟件叫a.apk,這個軟件放在E盤
2、開始——運行——輸入:cmd——輸入:apktool d e:\a.apk e:\b    
這一步等於把軟件a.apk反編譯到E盤的文件夾b裡,
這裡要注意,b文件夾不用你創建,你只要輸入前面的語句,自動生成,
之後反編譯後的東西都在b文件夾裡,我一開始就在這問題上傻傻的卡了半小時
3、打開notepod++軟件(就是一開始需要做的3步驟第2步安裝的軟件)
4、在反編譯後生成的文件夾b\res\values\strings(一般需要漢化的都在這裡,因為是初級教程,我們不考慮其他的,複雜的下個教程會講到),
將strings這東西拉進notepd++裡,將需要漢化的漢化掉,這裡建議把原英文軟件安裝進手機裡邊使用邊找哪裡有英文,
英文差又喜歡漢化的,去google查,改好後保存退出
5、用apktool編譯:開始——運行——輸入cmd——輸入:apktool b e:\b,這樣就可以在該文件夾找到build\apk\resources.arsc
6、用winrar解壓a.apk到文件夾c,把之前編譯得到的resources.arsc文件覆蓋進去
7、然後把文件夾c打包:下叫做《打包》的附件後解壓得到_Data和sign_pack,把這兩個東西都拉到E盤,然後把文件夾c直接拖到sign_pack就成
8、打包後的文件夾叫做C_signed,裡面有個叫做C_H的文件就是漢化後的文件啦!!!



via: 當樂漢化

一步步深入smali,完美去廣告

一:之前的準備工作:
1:檢測是否有安裝java環境,沒有的話去下載安裝jdk1.6以上版本
下載地址http://www.oracle.com/technetwork/java/javase/downloads/index.html
2:android SDK環境
下載地址:http://dl.google.com/android/android-sdk_r08-windows.zip
3:常用的APK反編譯工具,見附件
4:學習常用Dalvik指令集,地址:http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

以下是我的文檔結構(記住這個結構,以下的過程都會基於此結構):
d:\android
d:\android\sdk---sdk所在目錄
d:\android\crack---破解反編譯工具所在目錄
d:\android\crack\apktool---apktool目錄
d:\android\crack\auto-sign---簽名工具

sdk包下載後,解壓得到如下結構:
D:\android\sdk\add-ons
D:\android\sdk\platforms
D:\android\sdk\platform-tools
D:\android\sdk\tools
D:\android\sdk\SDK Manager.exe

運行SDK Manager.exe,在彈出的窗口中找到:Avaliable packages,右側展開:Android Respository
在裡面找到:SDK Platform Android 2.2,API 8,revision 2(安裝2.2版的虛擬機)

接下來會下載安裝,時間可能會長點,耐心等

接下來需要設幾個系統環境變量
XP:我的電腦-〉右鍵-〉屬性-〉高級-〉環境變量
Win7:計算機-〉右鍵-〉屬性-〉高級系統設置-〉環境變量
在彈出的窗口中點擊:新建
按以下值填寫
變量名:ANDROID_SDK_HOME
變量值:D:\android\sdk (看你自己的目錄而定)
接著在系統變量的框裡下滾找到:Path
雙擊打開
在最後面加入值 ;D:\android\sdk\tools\(注意前面的分號,目錄按你自己目錄而定)
點擊確定,關閉窗口,重啟電腦

打開 /sdk/tools/目錄,雙擊android.bat,在彈出的窗口中,選擇:Virtual devices
點擊右側的:New 新建虛擬機
輸入虛擬機的名稱,Target中選擇要使用的系統版本,SD Card的Size那裡填SD卡的大小,通常填128就成
然後點擊下面的 Create AVD 創建
回到剛才的界面,列表中列出了剛新建的虛擬機,雙擊打開虛擬機
等很長時間虛擬機啟動

反編譯工具:
遊戲原文件:


二:去除遊戲Zoo Trip中的廣告,完美去廣告是指刪掉程序中一切跟廣告調用相關的類,方法,視圖
將apk文件拷貝到 d:\android\crack\apktool 目錄下,為方便操作,重命名為a.apk
打開cmd窗口
輸入: 
cd d:\android\crack\apktool
d:
輸入:adb devices
檢測虛擬設備是否連上,正常的會返回:emulator-5554   device 類似信息
輸入:adb install a.apk
在虛擬設備上安裝原apk文件,並運行查看效果,先玩一通,看下廣告都在哪
廣告總共出現在四處:

第一處:程序啟動界面

第二處:遊戲結束界面(此處有兩個廣告,中間的那個大的對話框樣的為非google廣告)

第三處:分數提交界面

第四處:更多遊戲界面

接下來我們來看apk文件的內部
輸入:apktool d a.apk
反編譯apk文件,得到目錄a
輸入:apktool b a
看文件能否順利編譯回去。

一切正常後,打開 a\build\apk 把裡面的classes.dex拷貝到:d:\android\crack\dex 目錄下,將文件拖動到dex2jar.bat上面,將自動轉成jar文件,然後運行jd-gui.exe,打開剛剛生成的classes.dex.dex2jar.jar,然後會看到對應的java代碼,這種方式查看到的代碼並不是完整的源碼,有很多的出入,僅供參考。




via: 一步步深入 smali

當樂漢化教程:七、smali文件中文本的處理


七、smali文件中文本的處理
相信跟著前幾章操作過的讀者可以發現,有相當一部分遊戲的漢化方法和軟件是類似的,只要會使用apktool反編譯apk文件,然後修改xml文件裡面的文字就能完成漢化工作。這類遊戲很適合新手來嘗試,類似於怒鳥那樣的遊戲漢化起來就相對複雜,最好積累了足夠經驗後再進行。
這章我們會用一個簡單的遊戲來說明下遊戲漢化的過程,大部分的操作和第二章裡的軟件漢化是類似的,主要是想用通過其說明下classes.dex文件中(反編譯後為若干smali文件)文本的處理方法和注意事項。

首先可以在http://android.d.cn/game/84.html下載到我們要漢化的遊戲:迪斯尼找茬。然後和第二章中一樣,用apktool對apk文件進行反編譯。
查看後發現,strings.xml文件中只有一個"Find It Disney",這是遊戲在手機裡顯示的名字。其他的文本,例如菜單項的內容都不在這裡。
對於這樣的文本我們有兩種處理辦法:
第一種是逐個打開反編譯出的xml文件,看裡面是不是有需要翻譯的文本。一般推薦按照這個進行,雖然每個都打開看比較麻煩,但是可以最大限度地避免出現遺漏。
第二種是利用軟件的搜索功能,一般這個方法更多地用在查找遺漏的文本,因為未必所有文字都能找到合適的關鍵字。


我們先用第一種方法,大部分的文本在layout文件夾下的xml文件裡,例如mainmenu.xml中是菜單裡的文字。(僅截取部分)
  1. ……
  2. <Button android:textColor="#ffffffff" android:layout_gravity="center_horizontal" android:id="@id/mainmenustart" android:background="@drawable/defaultbuttonxml" android:layout_width="150.0sp" android:layout_height="wrap_content" android:layout_marginBottom="10.0sp" android:text="Start Game" />
  3. ……
复制代码
翻譯後:
  1. ……
  2. <Button android:textColor="#ffffffff" android:layout_gravity="center_horizontal" android:id="@id/mainmenustart" android:background="@drawable/defaultbuttonxml" android:layout_width="150.0sp" android:layout_height="wrap_content" android:layout_marginBottom="10.0sp" android:text="开始游戏" />
  3. ……
复制代码
都翻譯修改完之後,我們可以注意到,文本儲存的形式都是android:text="???"這個樣子,因而可以在emeditor中使用"android:text="作為關鍵字來搜索檢查一下。

其中E:\apktool\t是用apktool反編譯時設定的目錄。
檢查後沒有遺漏後,和軟件一樣再用apktool編譯,並簽名打包,安裝到手機進行測試。

測試的時候我們發現,菜單界面仍然有英文

說明這部分文本被我們遺漏了,但是xml文件裡並沒有這句話("Sound:Off"在mainmenu.xml裡面有,但修改後並沒有顯示)。
另外一些提示框裡的文字(比如退出確認)也還是英文,一般這樣的文本是被存儲在了classes.dex文件中。
classes.dex文件存儲著apk應用裡主要的代碼,有時會有少部分文本被以代碼的形式存儲在裡面(也有時很多),利用apktool的反編譯功能使得我們也能對其進行修改。
前面說過,classes.dex被反編譯成smali文件,這實際是文本文件,可以用文字編輯工具打開。一般來說反編譯出來的smali文件很多,一個一個查看並不現實,因此我們只能用搜索的辦法,或者直接搜索需要的句子:

或者搜索關鍵字:

這是因為在smali文件中,文本(字符串)大多以const-string類型保存,因此搜索"const-string"就能找到它們。
我們將MainMenu.smali文件裡的"Sound: On"和"Sound: Off"修改掉,再次編譯看下效果。(注意編碼要設定為UTF-8無簽名)
    1. ……
    2. iget-object v1, p0, Lmonkeypunch/android/finditdisney/MainMenu;->sound:Landroid/widget/Button;
    3. const-string v2, "声音:开"
    4. invoke-virtual {v1, v2}, Landroid/widget/Button;->setText(Ljava/lang/CharSequence;)V
    5. ……
    复制代码

    同樣的方法,我們修改其他的遺漏文本,這需要我們盡可能的玩通遊戲來查看是否有遺漏。
    這裡要特別提醒,當使用搜索"const-string"的方法在smali文件裡尋找文本時,最好能把要修改的句子事先在遊戲裡確認一下,我們可以看到,搜索出來的結果非常多,有些看似應該翻譯的句子實際是遊戲代碼的一部分,一旦修改很可能會導致運行出錯,因此一定要特別小心,盡可能少改動,並多做測試。
    想做的更仔細一點的話,可以再修改下遊戲裡面的圖片(png格式),這樣一個遊戲的漢化就完成了。

    via: 當樂漢化教程

    使用 apktool 去除廣告教學

    先瞭解下軟件的廣告原理一個軟件若要顯示廣告,需要先導入SDK,並在AndroidManifest.xml中註冊。
    res\layout目錄內的xml文件就包含有廣告界面的配置代碼,修改這些代碼就可以去除廣告界面。
    另外還要屏蔽廣告下載源,不然只是單單不顯示廣告界面而已,軟件還會下載廣告所需的數據,耗費流量。
    目前Android的廣告供應商有兩個,一個是Admob,一個是Google Ads,前者已被後者收購,但兩者SDK依然獨立。

    廣告代碼
    Admob的廣告代碼為:
    <com.admob.android.ads.AdView
    android:id=”@+id/ad”
    android:layout_width=”fill_parent”
    android:layout_height=”wrap_content” />

    Google Ads的廣告代碼為:<com.google.ads.GoogleAdView
    android:id=”@+id/adview”
    android:layout_width=”wrap_content”
    android:layout_height=”wrap_content” />

    廣告下載源
    Admob的廣告下載源:
    http://r.admob.com/ad_source.php
    http://mm.admob.com
    http://api.admob.com

    Google Ads的廣告下載源:http://pagead2.googlesyndication.com/pagead/afma_load_ads.js

    去廣告步驟:
    1、去除廣告下載源

    - 解包classes.dex(方法上面已講過),用Notepad++ Portable搜索廣告下載源地址(若不知道軟件用的是哪個供應商的廣告的話,最好兩家的下載源都搜索下),如圖:



    搜索結果如下:


    - 將廣告下載源地址修改成無效的地址(例如0.0.0.0、192.168.1.1等),如圖:



    - 完成後保存,重新打包classes.dex,拖回apk安裝包替換原文件。

    2、去除廣告界面1 將剛剛已經替換了classes.dex文件的apk安裝包用APKTool反編譯。

    2 用Notepad++ Portable搜索廣告代碼(上面已列出)
    - 如圖,將搜索路徑定位到res文件夾(就是反編譯後的res文件夾),代碼只搜索開頭就行了,如:com.admob.android.ads.AdView 和 com.google.ads.GoogleAdView。
    如圖:




    - 搜索結果:



    ③ 雙擊黃顏色區域,修改下圖上方的代碼 android:layout_width="fill_parent" 修改為 android:layout_width="0.0dip"android:layout_height="wrap_content" 修改為 android:layout_height="0.0dip"




    修改后:


    - 將所有搜索到的代碼按照上面修改,完成後保存,用APKTool重新編譯打包,可簽,安裝即可。

    * 再作下解釋:
    android:layout_width="fill_parent" 修改為 android:layout_width="0.0dip"android:layout_height="wrap_content" 修改為 android:layout_height="0.0dip"
    之所以這麼修改,是因為要讓廣告窗口不顯示,android:layout_width定義的是廣告窗口的寬度,android:layout_height定義的是廣告窗口的高度,0.0dip代表0像素,將兩者後面的值修改為0.0dip,那麼高和寬都是顯示0像素,等於不顯示,達到了去廣告窗口界面的目的。


    via: microdu

    APK反編譯利器 apktool GUI版 1.3.4 遠離命令行!!!

    忘了命令行吧 有了它只需點幾下鼠標就搞定了
    使用前安裝JDK!!!
    按圖片以查看大圖

名稱: 11052010061e9a6b6bc1647ecc.jpg
查看次數: 25
文件大小: 76.8 KB
ID: 79667

    1.3.4版:1. 更新 apktool.jar版本 為1.4.1 版本,解決部分apk不能使用的問題。

    1.3.2版
    1.增加:log導出功能。==================================================================功能:
    1. 反編譯APK文件,生產到同名目錄中。
    2. 將反編譯的APK重新編譯,在當前目錄生成2個文件,1個簽名的和一個未簽名的。
    3. 反編譯dex(odex)轉smali文件
    4. 將反編譯的dex、odex 重新編譯成dex文件
    5. 將dex轉成jar

    使用方法:
    將要處理的文件、文件夾拖拽到編輯框,點擊按鈕即可。

    注意:
    1。部分功能不支持中文路徑,文件、文件名稱儘量改簡單,提高成功率。


    via: http://www.qkshare.com/thread457661.html

    APK反編譯利器Apktool實現android程序漢化

    說起APK的漢化,目前大部分教程都是讓用Hex Workshop或者Android ResEdit來做。但是實際操作後,就會發現:
    1、Hex Workshop操作繁瑣,經常出現搜不到想要修改的字符的情況;
    2、Android ResEdit簡單用用可以,修改稍微複雜一點就會出現整條整條丟字符串的情況;並且新內容不能比原內容長——誰能保證我的本地化語言就一定比原來的短 呢?
    現在好了,老外寫的《android-apktool》軟件,可以幫助我們把APK反編譯,生成程序的源代碼和圖片、XML配置、語言資源等文件。我們對 圖片和語言資源等文件修改後,可以再把它們編譯打包成APK,簽名後就是手機可以安裝的本地化/修正版APK了。
    《android-apktool》軟件軟件可以訪問它的主頁http://code.google.com/p/android-apktool/下 載獲得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。下載 後解開,為了方便使用,按作者的推薦把得到的4個文件複製到C:Windows文件夾裡。
    這個工具是Java寫的,需要你的電腦安裝了JRE或者JDK,並在系統環境變量Path裡加入java.exe所在路徑。
    以上準備工作做好後,就可以用它來反編譯APK了。這裡我用動態壁紙的APK來做示範。
    如果用過動態壁紙,你也許會發現在設置壁紙時,界面的顯示有點問題:「動態壁紙」,在手機上中文顯示為「當前壁紙」。這是「動態壁紙選擇 器」LiveWallpapersPicker.apk的翻譯錯誤造成的。
    (假設LiveWallpapersPicker.apk放在C盤根目錄)
    開始 > 運行,輸入cmd,回車。 apktool d "C:LiveWallpapersPicker.apk" "C:LiveWallpapersPicker"
    (命令行解釋:apktool d 要反編譯的文件 輸出文件夾)
    這樣,LiveWallpapersPicker.apk就被反編譯了,輸出內容在C:LiveWallpapersPicker文件夾裡。
    打開C:LiveWallpapersPicker文件夾,我們發現裡面有一些XML文件和一些文件夾。絕大部分情況下,語言和圖片資源都在res文件 夾裡,我們這個例子當然不例外。
    打開res文件夾,可以其中又是很多文件夾。(又是)絕大部分情況下,語言資源都放在values*文件夾裡。比如說values放默認語言(英語居多),values-de放德語,values-fr放法語等等。一般我們關心的是values-zh-rCN(簡體中文)和values-zh- rTW(繁體中文)。
    打開values-zh-rCN文件夾,其中有個strings.xml。打開看看:
    < ?xml version="1.0" encoding="UTF-8"?>
    < resources>
    < string name="application_name">動態壁紙選擇器
    < string name="live_wallpaper_picker_title">當前壁紙
    < string name="live_wallpaper_preview_title">當前壁紙預覽
    < string name="configure_wallpaper">設置...
    < string name="wallpaper_instructions">設置壁紙
    < string name="live_wallpaper_empty">無當前壁紙。
    < string name="set_live_wallpaper">設置壁紙
    < string name="wallpaper_title_and_author">%1$s提供者:%2$s
    < string name="live_wallpaper_loading">正在載入當前壁紙…
    < /resources>
    很好,就是它了。把「當前壁紙」都改為「動態壁紙」,再檢查和修正標點——中文內容用中文標點(強烈呼籲大家注意標點問題,目前馬大哈太多了)後, 保存。
    本例改這麼多就夠了。其它複雜的APK建議把res文件夾裡的內容都檢查下,至少你關心的語言文件夾裡的內容都檢查下。
    改完後,就可以重打包了。還是在cmd命令行裡,輸入: apktool b "C:LiveWallpapersPicker"
    (命令行解釋:apktool b 要打包內容所在文件夾)
    就可以了。生成的APK在C:LiveWallpapersPickerdist文件夾裡,叫out.apk。
    這個out.apk是沒有簽名的,所以不能直接裝到手機裡。簽名工具和方法見http://www.hiapk.com/bbs/thread-21261-1-1.html, 這裡不說了。
    簽名後得到的APK,就是可以裝到手機裡的了。
    操練:去掉免費版軟件的廣告條
    打開google code發現Apktool更新了,居然支持win了。。。。
    那本文就是一篇介紹在windows環境下使用Apktool的筆記。
    安裝
    1.先裝JAVA環境,JDK/JRE都行,裝過的就跳過吧.
    2.下載apktool.jar及相關文件,這裡apktool-1.0.0.tar.bz2 apktool-install-windows-2.1_r01-1.zip
    3.解壓apktool.jar到 C:Windows 解壓apktool-install-windows.zip到任意文件夾(例如E盤根目錄)
    4.Win+R 運行CMD,用cd命令轉到apktool-install-windows所在文件夾,輸入apktool看看。會列出一些幫助的話就成功了。 Apktool 命令
    apktool d XXX.apk ABC 反編譯 XXX.apk到文件夾ABC
    apktool b ABC 從文件夾ABC重建APK,輸出到ABCdistout.apk
    然後我們反編譯一枚軟件玩玩…
    AutoMemoryManager的免費版底部有一條廣告,去掉它吧。
    把com.lim.android.automemman.apk放到同文件夾(我的就是E盤根目錄)
    Win+R 運行CMD
    E:< 回車>
    E:>apktool d com.lim.android.automemman.apk AMM < 回車>
    I: Baksmaling…
    I: Decoding resource table…
    I: Decoding resources…
    I: Copying assets and libs…
    現在文件被decode到E:AMM了,打開E:AMMeslayoutmain.xml看,所有都可見了吧~
    編輯第59行
    < com.admob.android.ads.AdView android:id=”@id/ad”
    android:layout_width=」fill_parent」 android:layout_height=」wrap_content」 admobsdk:backgroundColor=」#ff000000〞 admobsdk:textColor=」#ffffffff」 admobsdk:keywords=」Android application」 />

    改為
    < com.admob.android.ads.AdView android:id=」@id/ad」 android:layout_width=」0.0dip」 android:layout_height=」0.0dip」 admobsdk:backgroundColor=」#ff000000〞 admobsdk:textColor=」#ffffffff」 admobsdk:keywords=」Android application」 />
    然後CMD輸入
    E:>apktool b AMM
    I: Checking whether sources has changed…
    I: Smaling…
    I: Checking whether resources has changed…
    I: Building resources…
    I: Building apk file…
    用Auto-sign簽名E:AMMdistout.apk 安裝
    這樣廣告就不見了
    再看,嘿嘿~很帥吧…
    這其實就是改了AndroidManifest.xml裡的ADmob廣告ID罷了