美文网首页安卓逆向
安卓逆向新增View

安卓逆向新增View

作者: 约你一起偷西瓜 | 来源:发表于2020-08-13 17:43 被阅读0次
简介AAPT

打包一个安卓apk除了处理代码为smali之外,还要处理资源文件
打包资源用的就是SDK的tools/目录下AAPT(Android Asset Packaging Tool)
主要作用是把资源文件编译成特定格式的二进制文件

  • "assets"和"res/raw"目录下的所有资源进行打包,可压缩,不生成资源ID
  • 对assets资源之外所有的资源赋予一个资源ID常量,并且会生成一个资源索引表resources.arsc
  • 编译AndroidManifest.xml成二进制的XML文件
  • 把上面3个步骤中生成结果保存在一个“.ap_”文件,并把各个资源ID常量定义在一个R.java中

用法参考

  1. aapt l[ist]:列出资源压缩包里的内容
  2. aapt d[ump]:查看APK包内指定的内容
  3. aapt p[ackage]:打包生成资源压缩包
  4. aapt r[emove]:从压缩包中删除指定文件
  5. aapt a[dd]:向压缩包中添加指定文件
  6. aapt v[ersion]:打印aapt的版本。
下面介绍两种动态向app里面添加View的方法
1.用代码的方式实现
    private void initViewButton() {
        Button button = new Button(this);
        button.setText("Chang");
        button.setTextColor(Color.RED);
        button.setPadding(50,50,50,50);
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.RIGHT);
        this.addContentView(button,layoutParams);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ReqChange(v);
            }
        });
        button.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                ShowDialog(v);
                return false;
            }
        });
    }
2.用LayoutInflater获得View
    public View getAssetsLayout(Context ctx,String filename) {
        AssetManager am = ctx.getResources().getAssets();
        try {
                XmlResourceParser parser = am.openXmlResourceParser(assetsFile + filename);
                LayoutInflater inflater = (LayoutInflater) mcontext.getSystemService(mcontext.LAYOUT_INFLATER_SERVICE); 
                return inflater.inflate(parser, null);
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
    }

    //这里的xml是编译后的xml,原xml文件直接放在目录下会报错
    //这里的mDialogView里面的子View使用findViewWithTag来获得 
    mDialogView = getAssetsLayout(context,"assets/dialog_dynamic.xml")

    View viewByTag = helper.getViewByTag(assetsLayout, "UUID");

相关文章

  • 安卓逆向新增View

    简介AAPT 打包一个安卓apk除了处理代码为smali之外,还要处理资源文件打包资源用的就是SDK的tools/...

  • 安卓逆向课程推荐

    以下排名不分先后1.看雪安卓逆向课程2万班2.看雪安卓逆向课程3万班3.易锦安卓逆向10期4.易锦游戏逆向12期,...

  • 学习自定义View的一些文章

    安卓自定义View基础:坐标系 安卓自定义View基础:角度弧度 安卓自定义View基础:颜色 Android自定...

  • 安卓自定义View教程-1

    基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 - 角度弧度 安卓自定义View基础 - 颜色...

  • [转]自定义View的学习

    原文连接 如何关闭硬件加速 自定义View 基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 -...

  • RecyclerView源码分析(二)测绘流程上篇

    说到安卓的测绘流程,肯定会想到安卓View绘制三大流程,measure、layout、draw。通过分析View的...

  • 安卓View

    【Android 自定义 View 实战】之自定义项目通用的标题栏 CustomTitleBar 【Android...

  • 自定义View教程目录

    参考安卓自定义View教程目录

  • 关于安卓逆向你需要知道的工具及网站

    关于安卓逆向你需要知道的工具及网站 把最近接触到的安卓逆向相关的工具和网站总结下,供需要者拿去使用,还有不全和遗漏...

  • Android反编译

    1. 安卓逆向助手 有一款叫安卓逆向助手软件反编译apk 十分方便。这里给大家介绍的反编译方法就是基于这款软件的。...

网友评论

    本文标题:安卓逆向新增View

    本文链接:https://www.haomeiwen.com/subject/okcidktx.html