美文网首页Android技术进阶
某视频软件优化流程

某视频软件优化流程

作者: L我是小学生 | 来源:发表于2019-12-29 21:12 被阅读0次

某视频软件优化流程

简介

MHYS凉凉后,众多新的视频软件犹如雨后春笋般冒出。试用许多软件之后,发现这款XXYS还是不错的,但是软件仍有一些限制,针对其作出部分优化。

这篇文章将会介绍具体去除广告的细节!!

大家如有问题请提交issue。

GITHUB地址

“XXYS”优化流程

0x01 去首页广告

  • 修改点:2

  • 修改方式:启动SplashActivity后直接跳转到MainActivity。将调用倒计时方法的函数替换为跳转页面的方法。修改编译器自动生成的方法。

  • 具体修改:

    • Smali修改
    
    #第一处
    
    .method public static synthetic a(Lcom/gulu/all/ui/activity/SplashActivity;)V
    
        .registers 1
    
        .line 3
    
        #invoke-virtual {p0}, Lcom/gulu/all/ui/activity/SplashActivity;->ea()V
    
        invoke-virtual {p0}, Lcom/gulu/all/ui/activity/SplashActivity;->ca()V
    
        return-void
    
    .end method
    
    #第二处
    
    .method public static synthetic d(Lcom/gulu/all/ui/activity/SplashActivity;)V
    
        .registers 1
    
        .line 1
    
        #invoke-virtual {p0}, Lcom/gulu/all/ui/activity/SplashActivity;->Y()V
    
        return-void
    
    .end method
    
    #第三处
    
    .method public onRequestPermissionsResult(I[Ljava/lang/String;[I)V
    
        .registers 4
    
        .line 1
    
        invoke-super {p0, p1, p2, p3}, Landroidx/fragment/app/FragmentActivity;->onRequestPermissionsResult(I[Ljava/lang/String;[I)V
    
        .line 2
    
        invoke-static {p0, p1, p3}, Lcom/fanle/adlibrary/utils/ADPermissionsCheckUtils;->a(Landroid/content/Context;I[I)Z
    
        move-result p1
    
        if-eqz p1, :cond_c
    
        .line 3
    
        #invoke-virtual {p0}, Lcom/gulu/all/ui/activity/SplashActivity;->ea()V
    
    invoke-virtual {p0}, Lcom/gulu/all/ui/activity/SplashActivity;->ca()V
    
        :cond_c
    
        return-void
    
    .end method
    
    
    • 相关Java方法的含义
    
    /**
    
    * ca方法
    
    * 跳转MainActivity
    
    */
    
    /* renamed from: ca */
    
    public /* synthetic */ void mo5115ca() {
    
            if (TextUtils.isEmpty(PreferencesUtil.getString("lock_screen_pwd"))) {
    
                if (ActivityStack.getInstance().getStackSize() <= 1) {
    
                    ActivityUtils.a(MainActivity.class, C0416R.C0411anim.screen_zoom_in, C0416R.C0411anim.screen_zoom_out);
    
                }
    
                finish();
    
                return;
    
            }
    
            ARouter.c().a(AroutePath.LOCK_SCREEN_PWD).s();
    
            this.f2421d.postDelayed(new C2734wT(this), 200);
    
        }
    
    /**
    
    * ea方法
    
    * 展示广告
    
    */
    
    /* renamed from: ea */
    
    public final void m2944a() {
    
            String a = ADUtil.a(ADPPlat.SPLASH);
    
            if (TextUtils.isEmpty(a)) {
    
                m2948d();
    
                return;
    
            }
    
            if (!a.equals("1")) {
    
                ADPlugManager.g().a(this, ADPPlat.SPLASH, a, this.mFlAd, new C2693sW(this, a));
    
            } else if (this.f2420c != null) {
    
                Glide.with(this).load(this.f2420c.getPic()).apply(new RequestOptions().placeholder(C0416R.mipmap.startup).error(C0416R.mipmap.startup)).listener(new C2669rW(this)).into(this.mImgSplash);
    
            } else {
    
                m2948d();
    
            }
    
        }
    
    /**
    
    * Y方法
    
    * 初始化倒计时方法
    
    */
    
    /* renamed from: Y */
    
    public final void m2948d() {
    
            this.mStartSkipCountDown.setVisibility(0);
    
            AdGroup adGroup = this.f2420c;
    
            int parseInt = (adGroup == null || TextUtils.isEmpty(adGroup.getCountdown())) ? 5 : Integer.parseInt(this.f2420c.getCountdown());
    
            this.f2422e = new CountDownUtil((long) (parseInt * 1000), 1000, this);
    
            this.f2422e.start();
    
        }
    
    /**
    
    * onRequestPermissionsResult方法
    
    */
    
    public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
    
            super.onRequestPermissionsResult(i, strArr, iArr);
    
            if (ADPermissionsCheckUtils.a(this, i, iArr)) {
    
                m2944a();
    
            }
    
        }
    
    

0x02 去播放页广告

  • 修改点:1

  • 修改方式:从源头下手,修改广告工具类。将其返回内容设置为空。在MovieDetailActivity中不管是加载播放视频前的5s广告还是视频详情下方的广告都会先判断ADUtil#a是否为空。ADUtil所在的包位置为com.fanle.adlibrary.utils

  • 具体修改:

    • Smali修改
    
    #注释掉整段,最后返回空字符串,这里可以直接返回null
    
    .method public static a(Lcom/fanle/adlibrary/domain/ADPPlat;)Ljava/lang/String;
    
      .registers 21
    
      # const/4 v0, 0x4
    
        # .line 1
    
        # new-array v1, v0, [Ljava/lang/String;
    
        # const-string v2, "1"
    
        # const/4 v3, 0x0
    
        # aput-object v2, v1, v3
    
        # const-string v4, "2"
    
        # const/4 v5, 0x1
    
        # aput-object v4, v1, v5
    
        # const-string v6, "3"
    
        # const/4 v7, 0x2
    
        # aput-object v6, v1, v7
    
        # const-string v8, "4"
    
        # const/4 v9, 0x3
    
        # aput-object v8, v1, v9
    
        # .line 2
    
        # sget-object v10, Lmk;->a:[I
    
        # invoke-virtual/range {p0 .. p0}, Ljava/lang/Enum;->ordinal()I
    
        # move-result v11
    
        # aget v10, v10, v11
    
        # const-string v11, ""
    
        # if-eq v10, v5, :cond_37
    
        # if-eq v10, v7, :cond_30
    
        # if-eq v10, v9, :cond_29
    
        # move-object v10, v11
    
        # goto :goto_3d
    
        # :cond_29
    
        # const-string v10, "ad3"
    
        # .line 3
    
        # invoke-static {v10}, Lcom/fanle/adlibrary/utils/ADSPConfig;->a(Ljava/lang/String;)Ljava/lang/String;
    
        # move-result-object v10
    
        # goto :goto_3d
    
        # :cond_30
    
        # const-string v10, "ad2"
    
        # .line 4
    
        # invoke-static {v10}, Lcom/fanle/adlibrary/utils/ADSPConfig;->a(Ljava/lang/String;)Ljava/lang/String;
    
        # move-result-object v10
    
        # goto :goto_3d
    
        # :cond_37
    
        # const-string v10, "ad1"
    
        # .line 5
    
        # invoke-static {v10}, Lcom/fanle/adlibrary/utils/ADSPConfig;->a(Ljava/lang/String;)Ljava/lang/String;
    
        # move-result-object v10
    
        # :goto_3d
    
        # const-string v12, "[|]"
    
        # .line 6
    
        # invoke-virtual {v10, v12}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
    
        # move-result-object v10
    
        # if-eqz v10, :cond_95
    
        # .line 7
    
        # array-length v12, v10
    
        # if-lez v12, :cond_95
    
        # .line 8
    
        # array-length v12, v10
    
        # const/4 v13, 0x0
    
        # const/4 v14, 0x0
    
        # const/4 v15, 0x0
    
        # const/16 v16, 0x0
    
        # const/16 v17, 0x0
    
        # :goto_50
    
        # if-ge v13, v12, :cond_9b
    
        # aget-object v3, v10, v13
    
        # const/16 v18, -0x1
    
        # .line 9
    
        # invoke-virtual {v3}, Ljava/lang/String;->hashCode()I
    
        # move-result v19
    
        # packed-switch v19, :pswitch_data_e8
    
        # goto :goto_7e
    
        # :pswitch_5e
    
        # invoke-virtual {v3, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    
        # move-result v3
    
        # if-eqz v3, :cond_7e
    
        # const/4 v3, 0x3
    
        # goto :goto_7f
    
        # :pswitch_66
    
        # invoke-virtual {v3, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    
        # move-result v3
    
        # if-eqz v3, :cond_7e
    
        # const/4 v3, 0x2
    
        # goto :goto_7f
    
        # :pswitch_6e
    
        # invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    
        # move-result v3
    
        # if-eqz v3, :cond_7e
    
        # const/4 v3, 0x1
    
        # goto :goto_7f
    
        # :pswitch_76
    
        # invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    
        # move-result v3
    
        # if-eqz v3, :cond_7e
    
        # const/4 v3, 0x0
    
        # goto :goto_7f
    
        # :cond_7e
    
        # :goto_7e
    
        # const/4 v3, -0x1
    
        # :goto_7f
    
        # if-eqz v3, :cond_90
    
        # if-eq v3, v5, :cond_8e
    
        # if-eq v3, v7, :cond_8b
    
        # if-eq v3, v9, :cond_88
    
        # goto :goto_91
    
        # :cond_88
    
        # const/16 v17, 0x1
    
        # goto :goto_91
    
        # :cond_8b
    
        # const/16 v16, 0x1
    
        # goto :goto_91
    
        # :cond_8e
    
        # const/4 v15, 0x1
    
        # goto :goto_91
    
        # :cond_90
    
        # const/4 v14, 0x1
    
        # :goto_91
    
        # add-int/lit8 v13, v13, 0x1
    
        # const/4 v3, 0x0
    
        # goto :goto_50
    
        # :cond_95
    
        # const/4 v14, 0x0
    
        # const/4 v15, 0x0
    
        # const/16 v16, 0x0
    
        # const/16 v17, 0x0
    
        # .line 10
    
        # :cond_9b
    
        # new-array v0, v0, [I
    
        # const/4 v2, 0x0
    
        # aput v14, v0, v2
    
        # aput v15, v0, v5
    
        # aput v16, v0, v7
    
        # aput v17, v0, v9
    
        # add-int v17, v17, v16
    
        # add-int v17, v17, v15
    
        # add-int v3, v17, v14
    
        # if-lez v3, :cond_b9
    
        # .line 11
    
        # new-instance v4, Ljava/util/Random;
    
        # invoke-direct {v4}, Ljava/util/Random;-><init>()V
    
        # invoke-virtual {v4, v3}, Ljava/util/Random;->nextInt(I)I
    
        # move-result v3
    
        # add-int/2addr v3, v5
    
        # goto :goto_ba
    
        # :cond_b9
    
        # const/4 v3, 0x0
    
        # :goto_ba
    
        # const/4 v4, 0x0
    
        # .line 12
    
        # :goto_bb
    
        # array-length v6, v0
    
        # if-ge v2, v6, :cond_e6
    
        # .line 13
    
        # aget v6, v0, v2
    
        # add-int/2addr v4, v6
    
        # if-gt v5, v3, :cond_e0
    
        # if-gt v3, v4, :cond_e0
    
        # .line 14
    
        # new-instance v0, Ljava/lang/StringBuilder;
    
        # invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    
        # const-string v3, "\'\u52a0\u8f7d\u5e7f\u544a\uff1a"
    
        # invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        # aget-object v3, v1, v2
    
        # invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        # invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    
        # move-result-object v0
    
        # const-string v3, "ADUtil"
    
        # invoke-static {v3, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
    
        # .line 15
    
        # aget-object v0, v1, v2
    
        # return-object v0
    
        # .line 16
    
        # :cond_e0
    
        # aget v6, v0, v2
    
        # add-int/2addr v5, v6
    
        # add-int/lit8 v2, v2, 0x1
    
        # goto :goto_bb
    
        # :cond_e6
    
        const-string v11, ""
    
        return-object v11
    
        nop
    
        :pswitch_data_e8
    
        .packed-switch 0x31
    
            :pswitch_76
    
            :pswitch_6e
    
            :pswitch_66
    
            :pswitch_5e
    
        .end packed-switch
    
    .end method
    
    
    • 相关Java方法的含义
    
    /**
    
    * 修改后的ADUtil类
    
    */
    
    package com.fanle.adlibrary.utils;
    
    public class ADUtil {
    
        /* renamed from: a */
    
        public static String m8923a(ADPPlat adpPlat) {
    
            return "";
    
        }
    
    

0x03 无限次数播放

暂不公布,敬请谅解!!

相关文章

  • 某视频软件优化流程

    某视频软件优化流程 简介 MHYS凉凉后,众多新的视频软件犹如雨后春笋般冒出。试用许多软件之后,发现这款XXYS还...

  • 卸载某视频软件啦

    看了差不多一个月的直播卖货了,觉得也差不多到时候了,所以该卸载了。 享受了一把购物的乐趣,觉得有钱真好,更想让自己...

  • 2018-10-07

    本期私董会提案 某游戏化管理APP,是一款为中小微企业赋能,帮助其优化流程提高效率的EHR工具。 软件立足于激励,...

  • Android 知识

    Android 知识随笔 1.布局优化include merge viewstub 2视频播放流程 采集 —>处理...

  • 怎么练内功

    结论 练内功是梳理和优化内部核心业务流程,以及支持业务流程的软件系统。 # 核心业务流程的梳理要围绕当前的战略地...

  • 为什么优化Python的代码?月薪25K的程序员用万字长文告诉你

    了解优化的步骤 进群:125240963 即可获取数十套PDF哦1 本小节将简要介绍软件优化的步骤。 处理流程 下...

  • UITableView 滚动流程性优化

    UITableView 滚动流程性优化 UITableView 滚动流程性优化

  • 某停车APP支付流程优化方案

    0)、表结构优化 停车订单表:去掉paid_amount和busness_amount等金额,只保留总金额,应付金...

  • Android WebView 优化汇总

    目录 引言:Html加载流程 加载流程各节点耗时分析优化 加载流程结构优化 客户端优化 Html加载流程 创建并初...

  • 生活感想之制作视频

    这几天老婆学制作视频有点小成绩,自己拍视频再用某软件配上有励志语录的小视频,然后发在某手某音还有几个人来点赞,也增...

网友评论

    本文标题:某视频软件优化流程

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