All Projects → diaoxinqiang → DrawContainerDemo

diaoxinqiang / DrawContainerDemo

Licence: other
作业盒子批注控件反编译

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to DrawContainerDemo

typeioc
Dependency injection container for typescript / javascript
Stars: ✭ 32 (+88.24%)
Mutual labels:  container
GnuPlot
A PHP Library for using GnuPlot
Stars: ✭ 26 (+52.94%)
Mutual labels:  draw
docker-cassandra-k8s
Cassandra Docker optimized for Kubernetes
Stars: ✭ 13 (-23.53%)
Mutual labels:  container
drawim
A simple drawing library in Nim, inspired by p5js
Stars: ✭ 66 (+288.24%)
Mutual labels:  draw
smokey
Smoke tests for GOV.UK
Stars: ✭ 42 (+147.06%)
Mutual labels:  container
drupal-container
Drupal container for running Drupal sites with Docker, built with Ansible.
Stars: ✭ 37 (+117.65%)
Mutual labels:  container
knowledge
Everything I know: DevOps & CloudNative, Music, Homelab, Blockchain, AI, etc...
Stars: ✭ 84 (+394.12%)
Mutual labels:  container
solr-container
Ansible Container project that manages the lifecycle of Apache Solr on Docker.
Stars: ✭ 17 (+0%)
Mutual labels:  container
nxt registry
A simple registry to implement the container pattern
Stars: ✭ 16 (-5.88%)
Mutual labels:  container
tableau-server-docker
Dockerfile for Tableau Server on Linux - Single Node
Stars: ✭ 111 (+552.94%)
Mutual labels:  container
awesome-cloud-native-security
awesome resources about cloud native security 🐿
Stars: ✭ 233 (+1270.59%)
Mutual labels:  container
android-3d-model-viewer
Android app to load 3D models in obj, stl, dae & gltf format using pure OpenGL ES 2.0. Published on Play Store https://play.google.com/store/apps/details?id=org.andresoviedo.dddmodel2
Stars: ✭ 150 (+782.35%)
Mutual labels:  draw
p3y
A single binary reverse proxy written in go. It was developed for use in Kubernetes, to wrap services like Prometheus with simple BasicAuth and TLS encryption.
Stars: ✭ 15 (-11.76%)
Mutual labels:  container
cubefs
CubeFS is a cloud native distributed storage platform.
Stars: ✭ 3,062 (+17911.76%)
Mutual labels:  container
docker-nfs4
Simple containerized NFS v4 server running on Alpine Linux
Stars: ✭ 19 (+11.76%)
Mutual labels:  container
codewind-vscode
Extension for developing cloud-native, containerized applications from VS Code
Stars: ✭ 17 (+0%)
Mutual labels:  container
db2-docker
Docker image to run DB2 LUW
Stars: ✭ 37 (+117.65%)
Mutual labels:  container
undock
Extract contents of a container image in a local folder
Stars: ✭ 119 (+600%)
Mutual labels:  container
exploit-CVE-2016-6515
OpenSSH remote DOS exploit and vulnerable container
Stars: ✭ 53 (+211.76%)
Mutual labels:  container
PainlessDocker
Painless Docker book git repository.
Stars: ✭ 17 (+0%)
Mutual labels:  container

DrawContainerDemo

作业盒子批注控件反编译

《作业盒子》批注作业效果

作业盒子-批改控件.gif

《作业盒子》反编译提取控件

作业盒子-批改控件提取.gif

你可能的收获:

  • 学会简单的反编译
  • 一些反编译技巧:实战提取两个知名应用的控件,借鉴学习
  • 学会一种提高工作效率的偷懒方法
  • 希望能给读者正在做的项目有点启发,少走点弯路

每一个android开发程序员很有必要掌握一些逆向工程的知识技巧,其中好处不胜枚举,我细数一二:

《作业盒子-教师版》批注控件(APK下载地址)
《作业盒子》批注作业控件评价
  • 编辑模式:同时支持双手缩放,以及单手批注
  • 缩放的同时,批注笔头粗细跟随缩放
  • 不可编辑模式:支持双手缩放,单手拖拽
  • 并且支持批注回退 让我老老实实做,估计最少也得3天,就算实现了,估计还有不少bug需要修复.没错,我就是这么不自信.有点自知之明还是好的. 但是,反编译提取控件,估计也就1,2个小时. 我们项目也需要实现类似功能.一直有个用户需要的需求迟迟没有落地---[图片上的文字看不清楚,需要支持放大功能,但是同时还得支持批注功能] 因为没有想到好的交互实现方案,并且有其他功能要做,做这个需求性价比太低了,开发周期这么紧,最后不了了之.而现在,简直是分分钟的事.

授人以鱼不如授人以渔

总结一下反编译参考竞品的技巧:

  • 先看主干,再细看旁枝末节. 什么意思呢?就是先看其大体项目架构,用了什么开源库,浏览一下AndroidManifest,都有什么Activity,通过英文单词去猜测其功能(一个优秀的项目,对类的命名必然是直观易懂的)
  • 实践动手.这个也很重要,因为单纯看来的是不准确的,是不可能深入理解其核心逻辑的,必须尽可能的将其抽取出来做成demo,以此验证自己的猜测.当然,动手是一种冒风险的事情,因为有可能自己的猜测落空.
  • 信心. 心里面的想法:我就有预感自己会成功,蜜汁自信.
  • 耐心. 这事情没那么容易,但真没那么难.

反编译的实用价值(教你偷懒)

不懂偷懒的程序员,不是好程序员.

功利性价值

核心业务的复杂功能实现,可能需要一个月,但是如果你通过反编译源码级别地了解竞品,借鉴竞品,说得粗俗点,竞品脱了裤子让你观摩,那你完成这个功能可能只需要1个星期,节省了三个星期,开发效率提高300%

自我价值

只是为了工作敲代码的程序员,就有点shameless了.不应该只看到其功利性价值,更应该去挖掘自我价值,学习一些优秀程序员敲的商用级别代码; 这两个反编译过程,我是带着强烈好奇心去完成的:

  • 卧槽,怎么他们的下拉控件做的这么好?
  • holy shit,怎么他们的批注实现思路这么赞呢? 非常珍惜这种好奇心.好奇心是个好东西,会驱动你去做更多以前没做过的事,让你有更多激动人心的发现,会更加想变得优秀,当然,也会让自己更加开心.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].