5. apktool 給XX手機衛士加廣告頁

來源:互聯網
上載者:User

標籤:

一. 編寫廣告頁
寫一個廣告頁面,並調用其他頁面的demo (1) 設計介面如下

(2) 編寫代碼如下public class SplashActivity extends Activity {    private static final int MSG_START_MENU = 1;    @SuppressLint("HandlerLeak")    Handler mHandler = new Handler() {        public void handleMessage(android.os.Message msg) {            switch (msg.what) {            case MSG_START_MENU:                Intent intent = new Intent();                intent.setClass(SplashActivity.this, HomeActivity.class);                startActivity(intent);                finish();                break;            default:                break;            }        };    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_splash);        // 設定字型        Typeface fontFace = Typeface.createFromAsset(getAssets(),                "fonts/handwriting.ttf");        TextView textSplash = (TextView) findViewById(R.id.textSplash);        textSplash.setTypeface(fontFace);        // 延時啟動下一個Activity        mHandler.sendEmptyMessageDelayed(MSG_START_MENU, 2000);    }} 
運行效果:

(3). 確定修改點如果要把這個Splash頁面插入到別的Activity中,需要修改哪些地方?    AndroidManifest.xml
    資源拷貝(圖片,字型)    資源ID    控制項ID    調用原邏輯的Activity
    Activity中修正
            類名稱 包名稱
            資源ID
            被調用Activity
    字串


二.反編譯自己的APK 1. 解包APKapktool d test.apk

2. 目錄說明assets 存放字型資源res 存放圖片資源 layout 字串等資源smali存放代碼

其他檔案請參考開發中的目錄,基本一一對應需要注意的是在res/values目錄有一個public.xml該檔案由apktool產生, 裡面儲存了所有的ID選項如果需要添加資源ID,直接在這裡添加,apktool就會幫你編譯回去


三.開始修改過程 1.先把目標apk解包

2. 添加字串定位到public.xml中加入 <public type="string" name="splash_info" id="0x7f040027" />


定位到string.xml加入

請確保id和名稱的值不要和string的其他字串有重疊
3. 添加字型目標APK沒有assets檔案夾,我們直接把我們的assets檔案夾拷貝過去放到根目錄即可

4. 添加圖片把圖片拷貝到res\drawable檔案夾(注意有重名的情況)我們這次沒有重名,如果有請在開始的時候就取一個特殊的名字
修改public.xml檔案 <public type="drawable" name="splash" id="0x7f02001c" />

可以看到值和名字選中之後都沒有重複的即可
5.添加layout把layout目錄下的activity_splash.xml拷貝到目標layout下面
基本上該Activity有多少控制項id  就要在public.xml定義多少
為了方便 我把dimen全部直接替換過來了
修改public.xml如下
<public type="id" name="textSplash" id="0x7f080051" />

同時需要在public.xml加上activity_splash的ID
<public type="layout" name="activity_splash" id="0x7f030023" />

同時需要在ids.xml中加上一項

記錄下這2個ID值 textSplash   0x7f080051
activity_splash  0x7f030023
6. 添加代碼把Test\smali\org\bing\test目錄下的SplashActivity拷貝過去mobilesafe\smali\com\mobilesafe

此時我們發現已經存在SplashActivity2種解決方案a. 換一個目錄拷貝b. 重新命名
我們選擇較麻煩的重新命名法: (1). 重新命名源檔案源檔案:
重新命名成: (^ _ ^ 後面加了一個1)

(2). 替換類名開啟我們的SplashActivity1.smali將org/bing/test/SplashActivity全部替換成com/mobilesafe/SplashActivity1

同樣在SplashActivity1$1.smali中將org/bing/test/SplashActivity全部替換成com/mobilesafe/SplashActivity1
最後修改handleMessage裡面HomeActivity為com/mobilesafe/SplashActivity (目標APP的主Activity)
(3).修改資源ID找到setContentView 將上面的常量值修改成 0x7f030023
找到findViewById將上面的常量值修改成 0x7f080051
發現變紅了 有smali文法外掛程式就是爽(請百度:sublime配置smali文法外掛程式  用記事本估計又被坑一波)
爆紅是因為指令格式的問題, 把const/high16 修改成 const就好



7.修改AndroidManifest檔案
將原來的主Activity 改成我們的Activity
8. 回編譯

報錯則回顧哪裡還沒有做到位
然後簽名,運行成功
四.總結基本上開發需要的哪些細節,這裡修改就得修改哪些點
實際運用可以考慮把過程寫成自動化流程,給定廣告模版檔案,自動插入相應位置這樣就可以批量插廣告  ^ _ ^
例子下載網站連結接:http://pan.baidu.com/s/1i5hlCCd 密碼:pc1c







來自為知筆記(Wiz)

5. apktool 給XX手機衛士加廣告頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.