apk反编译后修改文件的几个注意点

反编译后的文件如下:

    --res

    --smali

    --AndroidManifest.xml

    --apktool.yml

 

一、添加资源

除了将相应的资源放到对应的目录下外,还要做如下修改:

1.在public.xml 中,将添加的资源按照已有的格式,添加到对应的地方,并分配一个未使用的16 位编码的数值。格式:<public type=" 填写对应type(drawable/layout/anim/color/string/id 等)" name=" 定义的资源名称" id=" 分配的数值" />,e.g:<public type="id" name="Img" id="0x7f080054" />

2.如果需要添加type 位id 的项,还需要在ids.xml 中添加如下格式的项:

<item type="id" name=" 定义的资源名字">false</item>

e.g:<item type="id" name="Img">false</item>

这是因为,"@+id/" 格式定义的id 表示在修改完某个布局文件并保持后,自动在R.java 中生成相应的int类型变量。但是反编译后的代码不可能        再自动去生成,只能把id 设置成好像已经存在的样子,去调用一个已经存在的资源的id 。相应的在修改layout 时,也不能使用"@+id/" 而                是"@id/" 格式去定义id 。

二、添加代码

      将要添加的代码单独的作用一个应用(以b 代替)进行编译调试,测试ok 后,将b 应用的apk 进行反编译。如果a 应用是需要添         加这些改动的应用,只需要反编译a 应用,然后将b 的代码加入到a 中对应位置就可以。注意其中package 及所属class 文件名字       修改。如果是添加了activity ,记得要在AndroidMenifest.xml 中添加activity 的注册。

三、反编译后生成的public.xml的注意点

          public.xml文件中的资源不能重复定义。

          public.xml文件中的任意两个资源的ID不能一样

          public.xml文件中定义的资源必须能找到该文件(如果你删除了一些文件,必须要对应的删除public.xml中的该行)

          public.xml文件中尽可能全面(如果你添加了某资源,最好确保在public.xml中也添加)

          public.xml文件中的资源的ID尽可能连续(当你为添加的文件添加声明时,赋予的ID尽可能是连续的)

编译之后的代码结构为:

--build

--dist

--res

--smali

--AndroidManifest.xml

--apktool.yml

编译后的apk 就在dist 文件夹中。将apk 用签名工具签名后就可以使用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值