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.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. 解包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. 添加图片

把图片拷贝到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

此时我们发现已经存在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

来自为知笔记(Wiz)

时间: 2024-10-12 13:37:26

5. apktool 给XX手机卫士加广告页的相关文章

手机卫士10_widget_流量统计_手机杀毒

1._widget入门: 查看帮助文档>>Developrs>>API Guides>>App Widgets 实际上是一个迷你的应用程序VIew视图,嵌入在另外一个应用程序视图. 标准的android和兼容widget的手机才能显示,被修改过的系统是无法显示的. 实现步骤: ①创建类继承APPWidgetProvider//一个方便的帮助类,用来实现一个appwidget 它继承了广播接收者,实现原理也是通过广播实现的,特殊的广播接收者. ②在清单文件里配置广播接收者

手机卫士13_屏幕适配_异常处理_盈利模式_混淆加密

今天是手机卫士最后一天 1,简易屏幕适配: ①使用线性,相对,帧布局,这三种常用布局在所有设备上几乎可以完整实现,多使用dp,sp,不要使用像素,dp,sp会自动适应屏幕 ②浮动窗体显示的距离问题:它show出来的距离就是像素,所以显示距离不会适应屏幕. 代码里接收的单位一般都是像素. 解决方式:把输入的数字转换成dp单位. 得到像素密度*像素 获得dp数据,根据屏幕实现的像素效果 通过工具类去转换成dp数据DesityUtils 2,应用程序的异常处理: 2.1 alpha版本:小范围的内部测

手机卫士04_ 手机定位_超级管理员_数据库

1.1 定位功能简介: 常见的定位方式: ①网络定位:(IP地址),拨号上网一般是动态分配,如果网吧公司,就是静态分配的. 比较有名的数据库:纯真Ip数据库,有很多公开的ip信息 根据ip地址定位.可能很准确,也可能只是一个大概的范围 ②基站定位:必须有手机卡才能基站定位 根据手机与基站联系的信号强弱+算法定位. 定位效果:可能很准确,(与基站位置相关,周围基站越多越近效果越好.) ③GPS定位:采用卫星定位 利用卫星的位置与手机GPS模块的建立联系,通过算法判断位置. 至少需要三颗卫星,获取手

手机卫士01

开题:手机卫士这样的一个项目可以很好的复习基础所学的知识点,因为它覆盖面广,用来做安卓深入学习是一个很好的选择. 1,开始一个项目 写一个好的代码不仅是看功能是否实现,而且代码具有较高的可读性 1.1 代码组织方式: ①采用业务逻辑模块组织代码,以小米阅读为例: 功能一:阅读器reader com.xiaomi.reader 功能二:分享 share com.xiaomi.share 功能三:便签 note com.xiaomi.note 按功能划分包,即使一部分功能被移除了,另外的功能也不会受

手机卫士-12

手机卫士-12 课1 手机杀毒模块 杀毒原理: 1.什么是病毒:特殊的程序,存在在硬盘里面. - 如何定义计算机病毒: 1.侵犯用户的隐私,偷窃你的私隐数据 2.盗号,偷钱.(特洛伊,木马)灰鸽子 3.恶意程序,危害设备 前提:在用户不知情的情况下安装,在特殊的情况下出发. 红蜘蛛,灰鸽子 2.如何杀毒? 把硬盘上的病毒程序,文件删除掉 删除问题: 1.不知道哪个文件是病毒. 2.无法清除.互相守护.A.exe B.exe C.exe 3.杀毒软件的工作 1.找到病毒 2.删除病毒 3.修复系统

手机卫士-10

手机卫士-10 课1 窗口小部件widget widget是什么? 阅读文档doc develop--->API Guides---->App Widgets linux命令ps:查看进程 kill+进程pid:杀掉进程 窗口小部件widget使用方法 创建widget测试 依照文档实现窗口小部件widget 创建widget窗口小部件的步骤 1.创建一个新的实现类:父类是AppWidgetProvider //1.写一个类继承 AppWidgetProvider //因为这个类是一个广播接收

手机卫士-05

手机卫士-05 课1 模仿网易新闻下拉加载分页数据listView 在activtiycallsafe.xml里重新修改(去掉原来的button) activtiycallsafe.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l

手机卫士12_软件锁,应用程序相关

1,软件锁(功能描述:当软件处于以加锁的列表中时,打开这个软件会跳转到密码输入界面,输入正确会跳转到软件界面,否则密码错误) ①ui参考 不使用fragment,采用布局叠加隐藏,点击一个文本,就显示一个界面(列表ListView),另一个布局界面隐藏起来(frameLayout帧布局实现). ②程序未加锁界面的展现 找到所有关心的控件,默认把所有的应用程序未加锁界面列表中. 参考条目ui 额外:加锁的小图标带有状态选择器,点击变换图片 横线可以考虑加个宽度为1的imageView; ③点击条目

360手机卫士插件化RePlugin今日开源

写在前面 "RePlugin将在6月底开源,这将是我们献给安卓世界最好的礼物."当我们宣布这一消息时,心中的激动,无以言表.是的,三年的"厚积",如今的"薄发",看似平凡的话,实际上却饱含了我们太多的激动.辛酸与泪. 那么今天,我们就来详细的和您聊一聊,这个从2014年中旬,正式在手机卫士上启用,并即将开源的360 RePlugin,究竟能为我们,更为您能带来什么. GitHub地址:https://github.com/Qihoo360/ReP