1.反编译目标文件apk
2.创建一个新工程,包名要和目标文件的包名一致(如果有多个包,新创建的工程包名就与LAUNCHER对应的Activity的包名一致),有一个和目标文件一样的类,再创建一个相似类继承上面那个类,在子类中写自己想要实现的代
码
3.将自己创建的类导出,生成
4.将自己的apk反编译,找到创建的那个子类,将其复制到目标工程(反编译过了)对应的文件夹中
5.修改目标文件夹中的清单文件(将Activity中父类名字改成子类名字),重新打包目标文件夹
2.创建一个新工程,包名要和目标文件的包名一致(如果有多个包,新创建的工程包名就与LAUNCHER对应的Activity的包名一致),有一个和目标文件一样的类,再创建一个相似类继承上面那个类,在子类中写自己想要实现的代
码
3.将自己创建的类导出,生成
4.将自己的apk反编译,找到创建的那个子类,将其复制到目标工程(反编译过了)对应的文件夹中
5.修改目标文件夹中的清单文件(将Activity中父类名字改成子类名字),重新打包目标文件夹
6.签名打包生成的apk,安装签名过的apk,此时,完成代码植入
修改:
==================================================================
上面只是大概的流程,具体要注意的细节有下面这些:
1,清单文件里面的启动界面要修改,修改成子类的
2,代码中添加的activity和service等组件,要在目标项目的清单文件中一一声明,
3,个人代码中需要添加的权限要加入
4,替换代码的时候,只把自己的代码放入项目中,不要替换人家的代码
5,需要的资源,需要放到assers资产文件夹中,不能放到res文件中
6,个人的代码中需要的jar包,需要在反编译过的文件件中拷贝到目标文件夹对应的位置
7,还有一点也很重要,apk的名字不能有中文
8,如果重新打包不成功话,很有可能是配置文件里面 出现了错误(经常会莫名其妙的出现好多*符号,去掉就可以了)
9,在配置文件中声明组件的时候,尽量用".MainActivity"的形式,避免不符合规范的包名影响程序的运行
10,如果希望添加的代码长期运行,代码最好写在服务当中