Koolearn视频播发器 框架分享

Koolearn视频播发器 框架分享

本文简要介绍一下播放器UI库,以便相关项目成员对播放器UI库有一个整体的认识

一、公司安卓播放器架构组成

分四层:业务层、播放器UI层、播放器层、底层

img
img

东方盛慧科技大约 2 分钟androidandroid技术
反编译喜马拉雅提取动画实现

项目起因:设计师想做一个类似喜马拉雅的每日精选功能d交互动画,于是乎直接下了一个喜马拉雅的App文件,通过反编译,找到相关代码并研究,然后结合自身掌握的知识照猫画虎就实现了。

反编译喜马拉雅提取动画实现

  1. 下载最新apk
  2. 下载最新apktool 解压 apk
  3. 利用sublime批量查找关键字 每日精选
  4. 找到对应布局文件 main_item_daily_choose.xml
  5. 查找关键字找到对应类 DailyChooseAdapter
  6. 找到关键属性动画的两个方法 和一个关键内部类
  7. 然后脱离反编译代码 开启心中无剑胜有剑的

东方盛慧科技小于 1 分钟androidandroid技术反编译
Html转span框架原理

Html转span框架原理

项目描述:因一个不错的试题交互实现,遗憾一直没时间整理,只能在这里占位了。新东方托福Pro、新东方雅思Pro的听说读写题干部分、句子反显、单词反显、填空题交互、文章句子定位,都是采用的这个框架去实现的。

项目起因:前端资源紧张,原生资源补充

项目原理

项目主要改造的地方(无限接近浏览器解析原理)

自定义标签的添加及解析


东方盛慧科技小于 1 分钟androidandroid技术
安卓安全浅谈:我是怎么破解“某app”得到数据库加密信息的

安卓安全浅谈:我是怎么破解“某app”得到数据库加密信息的

研究背景: 公司四六级的开发,由于产品经理感觉四六级内容数据不是很完美,例句信息不够完善,感觉某款App的内容比较不错,所以让我尝试破解此app得到相关四六级词本的信息,于是.........

前提步骤:

jarsigner -verbose -keystore keystore文件路径 -signedjar 签名后生成的apk路径 待签名的apk路径 别名

一、下载app

进入app官方网站:识别二维码 得到下载地址进行下载


东方盛慧科技大约 3 分钟androidandroid技术反编译
安卓IPC通信:Binder机制总结及 java模仿实现

安卓IPC通信:Binder机制总结及 java模仿实现

本文源码地址: https://github.com/stdroom/BinderDemo

Binder简介:

安卓系统基于Linux,但Binder是安卓独有的跨进程通信方式

  1. 从系统层来讲Binder也是一个虚拟设备,驱动在/dev/binder中;
  2. 从framework层来讲,binder是ServiceManager连接各种Manager(ActivityManager,WindowManger...)和ManagerService的桥梁;
  3. 从应用层来讲,Binder是客户端和服务端通信的桥梁,客户端可以通过服务端返回的Binder来调用服务端的各种实现。

东方盛慧科技大约 3 分钟androidandroid技术源码学习
通俗的讲述JavascriptInterface注解

通俗的讲述JavascriptInterface注解

  • targetSdkVersion 是设置希望的SDK版本,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。 也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。

  • 但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用, 比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的,那么在低版本的API设备上运行程序时,可能会报错:Java.lang.VerifyError。也就是说,此属性不会帮你解决兼容性的测试问题。

  • js调用java的时候,如果设置了targetSdkVersion,当targetSdkVersion<17时没问题,targetSdkVersion>=17时不成功 如果您在编写HTML5应用,需要在JS代码中访问Java中的函数,则您会用到WebView的addJavascriptInterface()函数。因为安全问题,在Android4.2中(如果应用的android:targetSdkVersion数值为17+)JS只能访问带有 @JavascriptInterface注解的Java函数。 之前,任何Public的函数都可以在JS代码中访问,而Java对象继承关系会导致很多Public的函数都可以在JS中访问,其中一个重要的函数就是  getClass()。然后JS可以通过反射来访问其他一些内容。通过引入 @JavascriptInterface注解,则在JS中只能访问 @JavascriptInterface注解的函数。这样就可以增强安全性。

  • 如果您的应用android:targetSdkVersion数值为17或者大于17记得添加 @JavascriptInterface 注解。


东方盛慧科技大约 2 分钟androidandroid技术
ApkTool原理,源码调试流程 及防反编译实现原理

ApkTool原理,源码调试流程 及防反编译实现原理

ApkTool原理

ApkTool反编译流程

首先针对未加固的资源包进行反编译 使用命令:apktool d Koolearn_v3.6.0.apk 解压完后发现 布局文件都是可以直接看到的,并未发生任何变化,包括资源文件的命名。

ApkTool调试流程

下载源码

资源文件混淆

微信AndResGuard

未采用时 包大小,采用后包大小 35.4 32.6M 未采用时 资源文件直接查看,采用后资源文件名,布局文件名等都已被混淆,但是文件内容并未混淆


东方盛慧科技小于 1 分钟androidandroid技术反编译
新东方在线App进度上传业务

新东方在线App进度上传业务

进度业务: 既有时间点概念,对应观看进度; 也有时间片概念, 对应统计时长
视频分为:直播 直播回放 录播

曾经发生过的问题及原因

问题 原因 问题发生位置
国外学员问题 字符串转换成浮点数时,国外的小数点会变成逗号,导致上传失败 上传进度组装数据前
只上传一次问题 更新VideoProcess时,是否上传标志位设置错误 存储时

东方盛慧科技大约 2 分钟androidandroid技术
Android防止反编译的若干方法

Android防止反编译的若干方法

第一种方式

混淆策略

混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项功能

对代码的混淆

我们一般现在的破解查看Java层代码就是两种方式:

一种是直接先解压classes.dex文件出来,使用dex2jar工具转化成jar文件,然后再用jd-gui工具进行查看类结构

一种是使用apktool工具直接反编译apk,得到smali源码,阅读smali源码


东方盛慧科技大约 1 分钟androidandroid技术反编译
2