zoukankan      html  css  js  c++  java
  • 5. apktool 给XX手机卫士加广告页

    一. 编写广告页
    写一个广告页面,并调用其他页面的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.thisHomeActivity.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 = (TextViewfindViewById(R.id.textSplash);
            textSplash.setTypeface(fontFace);
            // 延时启动下一个Activity
            mHandler.sendEmptyMessageDelayed(MSG_START_MENU2000);
        }
    } 

    运行效果:


    (3). 确定修改点
    如果要把这个Splash页面插入到别的Activity中,需要修改哪些地方?
        AndroidManifest.xml
        资源拷贝(图片,字体)
        资源ID
        控件ID
        调用原逻辑的Activity
        Activity中修正
                类名称 包名称
                资源ID
                被调用Activity
        字符串


    二.反编译自己的APK
    1. 解包APK
    apktool 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. 添加图片
    把图片拷贝到resdrawable文件夹(注意有重名的情况)
    我们这次没有重名,如果有请在开始的时候就取一个特殊的名字

    修改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. 添加代码
    把Testsmaliorging est目录下的SplashActivity拷贝过去
    mobilesafesmalicommobilesafe

    此时我们发现已经存在SplashActivity
    2种解决方案
    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









  • 相关阅读:
    XML之四种解析dom,sax,jdom,dom4j原理及性能比较
    uni-app 下小程序bindgetuserinfo不回调原因
    微信小程序 -- 真机不打开调试无法正常使用小程序的坑
    如何申请腾讯位置服务的密钥
    使用Promise封装小程序wx.request的实现方法
    关于vue-router当中addRoutes的使用
    前端Promise总结笔记
    css怎么设置超出几行显示省略号?
    大数据Spark和Hadoop以及区别(干货)
    Spark和Hadoop的区别和比较
  • 原文地址:https://www.cnblogs.com/bingghost/p/5769322.html
Copyright © 2011-2022 走看看