https://blog.csdn.net/lly20000/article/details/79774755

step.1 准备工具

1.adb连接工具(我用的cofface adb  )

【cofface】adb基于最新安卓源码编译修改,兼容其它助手,增加参数,支持识别所有机型

工具详情:http://blog.cofface.com/archives/569.html

下载地址:http://pan.baidu.com/s/1qX3XQDA

2.Adreno Profiler 基于硬件层面查看内存贴图

所有有些团队为了避免别人提取所以对资源进行了加密,最近又发现了一个神器基于硬件层面查看内存贴图,这样就直接无视对方加密了

工具详情:https://developer.qualcomm.com/software/adreno-gpu-profiler

下载地址:https://developer.qualcomm.com/software/adreno-gpu-sdk/tools

3.TexturePacket和还原工具

Anti_TexturePacker 或者 unpack_plist.py

step.2 链接手机

利用adb来连接手机有两种方式: 1, wifi, 2, usb.

1. 通过wifi, 利用adb来连接手机。在pc的cmd中输入命令: adb connect 192.168.1.100 如果电脑连不上安卓手机可以试试这个【cofface】adb基于最新安卓源码编译修改,兼容其它助手,增加参数,支持识别所有机型

ps:使用adb devices命令,老是报error:device offline的错误。

刚开始报error:devices not found

重新安装adb 驱动。

解决方法:

adb kill-server

adb start-server
adb remount

再使用adb devices和adb shell就可以使用android adb功能了。

step.3 查看显存贴图

Adreno Profiler分析任意安卓游戏特效抓取资源,可以用来分析安卓手机上OpenGL ES绘制过程。这个东西牛的地方在于可以抓取任何可以运行的App,而且使用起来非常方便、没有额外限制。这个工具本质上是一个OpenGL ES Draw Call Replay;如果你用过PIX或者GPA,就会感到很非常熟悉了。

由于这个工具是高通提供的,所以只能运行在高通芯片的安卓机上。为什么要强调这一点呢?其实其他厂商也有类似工具,但是从使用限制、方便程度上来说差太多了: iOS可以用XCode自带的Frame Capture,但是这货用起来很不顺手,而且没法抓取第三方应用。其他安卓厂商也有类似的工具,例如Mali Graphics Debugger,但是使用起来比较麻烦,譬如需要越狱、上传so到系统目录之类的。下面将具体介绍其使用

有关高通Adreno其他的资料
1、Adreno 手机游戏 & 图形优化论坛:http://qualcomm.csdn.net/module/zone/qualcomm/ziyuan_detail?id=73
2、Adreno 的参考手册:http://qualcomm.csdn.net/module/zone/qualcomm/ziyuan
3、Adreno 应用示例:https://developer.qualcomm.com/mobile-development/maximize-hardware/mobile-gaming-graphics-optimization-adreno
4、Adreno profiler 的使用: http://www.kuqin.com/shuoit/20150517/346102.html
5、Andreno GPU Profiler : https://developer.qualcomm.com/software/adreno-gpu-profiler

最近发现了一个非常好用的工具Adreno Profiler,可以用来分析安卓手机上OpenGL ES绘制过程。这个东西牛的地方在于可以抓取任何可以运行的App,而且使用起来非常方便、没有额外限制。这个工具本质上是一个OpenGL ES Draw Call Replay;如果你用过PIX或者GPA,就会感到很非常熟悉了。下图是贵易的魔天记,挂起来毫无压力233

由于这个工具是高通提供的,所以只能运行在高通芯片的安卓机上。为什么要强调这一点呢?其实其他厂商也有类似工具,但是从使用限制、方便程度上来说差太多了:

  • iOS可以用XCode自带的Frame Capture,但是这货用起来很不顺手,而且没法抓取第三方应用。
  • 其他安卓厂商也有类似的工具,例如Mali Graphics Debugger,但是使用起来比较麻烦,譬如需要越狱、上传so到系统目录之类的。

下面将具体介绍其使用,然后用两个例子来讲解,一个是抓取分析聚爆Implosion的特效绘制,另一个是用来做cocos2d-x图形性能优化。

ps. 我习惯说Draw Call(DC),工具里是Render Call,下文会混用...

环境配置

软件配置

下载Adreno Profiler并安装,需要注意以下几点:

  • Adreno SDK不是必须的,可以无视;
  • 虽然Adreno Profiler提供了跨平台版本,但这货貌似是c#的,我尝试在OSX下用Mono跑但是折腾不出来,所以最好还是Windows;
  • 需要将adb添加到系统路径,可以直接下载一个Android SDK,但是我国国情导致你不一定能很方便的下载下来;还有一种取巧的办法是所谓的xx手机助手、豌豆荚等工具目录下一般都会自带,指向adb.exe所在目录即可。

硬件配置

需要一个有高通芯片的手机,我这里强烈推荐G家亲儿子Nexus系列!如果手头没有的话,可以去淘宝买个Nexus 4,虽然是几年前的机器、不过一点都不卡,而且一千块钱都不到。

注意目前Android 5.1上可能出现连接不稳定的情况,见官方论坛,我这边测试5.0倒是一直能用~所以如果遇到这个问题,建议降低系统版本再说。

再注意需要打开手机的开发者模式,并把电脑设为信任,偷懒的方法是用豌豆荚连一次,跟着指示做就行,驱动都自己装好了。

基础教程

如何抓取一帧

首先手机上打开游戏,运行到需要抓取的界面。然后在电脑打开Adreno Profiler,点左上角的Connect。这里有两种连接方式:手机直接插到电脑上,或者在同一个局域网内使用IP连接。准备好了之后点击Refresh,直至刷出对应的设备和应用:

双击连接之后,点击Scrubber GL弹出抓取界面,然后点击Capture Frame等待即可

这样其实就完成了抓取工作,是不是感觉so easy! 下面将从例子出发,介绍具体的使用。

小技巧:抓取完成之后,可以点击上方的Save将帧数据保存成apr文件,这样可以之后Open,省的每次分析都需要连接手机、打开游戏。

基础使用

这个工具使用非常简单,核心是左下角的Render Calls。它其实是抓取了一帧中所有GL部分的调用及相关数据,然后按照绘制命令组织。当选中不同的Render Call时,工具会显示从一开始到这一个命令的绘制结果,方便看到每一个中间过程。此外,在API Calls中,还可以看到每一个Render Call之前的其他命令,包括各种对GL状态机的修改:

从图中可以看到,在这个绘制动作前,对模板状态进行了设置,然后传了一些Uniform,并修改了顶点属性~更方便的是,具体的顶点数据什么也能直接看到!

如何查看、导出资源

就纹理来说,在右边可以看到所有显存里的纹理资源,点开可以看到具体的纹理参数和缩略图。在上面有一个小的按钮,可以将所有纹理都保存成一个个文件:

就Shader来说,同样也是可以看到所有Program,工具还会贴心的标出所有利用了该Shader的Render Call,下面可以看到反汇编出来的指令:

就模型来说,选中一个Render Call然后Save Vertex Data就可以导出obj,但是生成的文件还需要稍微修改下才能导入,具体打开看看就懂了~

我曾经把驯龙高手的地形导出之后放到Unity,毫无压力-。-

进阶使用

游戏性能优化

之前zhiwei写过Cocos2d-x+Lua游戏的优化总结,下面我从图形性能为例,来介绍需要注意的几个点~

首先需要看一下每一个Render Call干了什么,是否有意义。根据不同游戏类型,对Draw Call个数应该有个大概掌握。这个当然是越少越好啦~

    • 是否有无效Render Call,我曾经见过一个全屏绘制“无效果”,也就是屏幕内容在绘制前后结果完全一致,不知道到底干啥了...
    • 是否有绘制到屏幕外的Render Call,也就是模型在屏幕外的情况;这个其实应该是引擎自动优化掉相机范围外的物体,不过有的引擎不具有这个能力_(:

Adreno Profiler 提取手机游戏资源的更多相关文章

  1. 使用Adreno Profiler分析android游戏

    有时候我们需要对自己的游戏或者别人的游戏进行分析,比如我们需要了解一个引擎的大体渲染的流程,这个时候我们可以借助一些工具,在PC上我们可以使用Microsoft PIX.Intel GPA.Nvidi ...

  2. 提取Unity游戏资源和脚本

    UnityStudio UnityStudio可以直接在自己的软件上查看图片.shader.文本.还能直接播放音频.甚至还能看场景Hierarchy视图的树状结构.强烈推荐用UnityStudio. ...

  3. Unity 提取游戏资源之ktx转换

    http://blog.csdn.net/akof1314/article/details/38022263 从雨松的博文<Unity3D研究院之mac上从.ipa中提取unity3D游戏资源( ...

  4. Adreno Profiler分析任意安卓游戏特效+抓取资源

    听说可以抓去任意游戏特效..保存下,有空研究 AdrenoProfiler 下载地址 Adreno Profiler分析任意安卓游戏特效+抓取资源 教程

  5. Unity3d/2d手机游戏开发第二版 (金玺曾) 随书资源

    http://pan.baidu.com/s/1c0xpn4s Unity3d2d手机游戏开发配书资源文件.rar 1.36G 书上的链接坏掉了,我在论坛上面买了一份,放这分享给买了书找不到资源的同学 ...

  6. (转)unity3D 如何提取游戏资源 (反编译)+代码反编译

    原帖:http://bbs.9ria.com/thread-401140-1-1.html 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源.教我们初步的破解unity3d资 ...

  7. Adreno Profiler连接安卓手机profile第三方app渲染过程

    1,下载Android SDK,adb在Android SDK/platform-tools下. 2,添加adb环境变量:http://www.cnblogs.com/xwlyun/archive/2 ...

  8. cocos2dx游戏资源加密之XXTEA

    在手机游戏当中,游戏的资源加密保护是一件很重要的事情. 我花了两天的时间整理了自己在游戏当中的资源加密问题,实现了跨平台的资源流加密,这个都是巨人的肩膀之上的. 大概的思路是这样的,游戏资源通过XXT ...

  9. 手机游戏渠道SDK接入工具项目分享(三)拨开云雾是个坑

    一直在纠结是先写框架设计还是先写掉过的坑,最后本这娱乐大众的态度先写掉过的坑让大家乐呵下. 项目开发过程中遇问题无数,回顾下8个大坑照成了项目一定程度上延期甚至返工. 项目一开始几个人把现有3家主流的 ...

随机推荐

  1. Hibernate中"二级缓存"配置

    实体类 : package cn.happy.entity; public class Emp { private Integer empNo; private String empName; pub ...

  2. IOS-如何锁定Xcode的API头文件

    如何锁定Xcode的API头文件1, 打开终端2, 前往Xcode.app, 命令: cd /Applications/Xcode.app3, 把头文件修改为只读, 命令: sudo chown -h ...

  3. day20 project+查看新闻列表 + 点赞 + 图片验证码 + 评论和多级评论 + 后台管理 + webSocket + kindEditor

    Day20回顾: 1. 请求生命周期 2. 中间件 md = [ "file_path.classname" ] process_request[可有可无] process_res ...

  4. Ansible 小手册系列 十二(Facts)

    Facts 是用来采集目标系统信息的,具体是用setup模块来采集得. 使用setup模块来获取目标系统信息 ansible hostname -m setup 仅显示与ansible相关的内存信息 ...

  5. Sum All Numbers in a Range

    我们会传递给你一个包含两个数字的数组.返回这两个数字和它们之间所有数字的和. 最小的数字并非总在最前面. 这是一些对你有帮助的资源: Math.max() Math.min() Array.reduc ...

  6. JS正则表达式的分组匹配

    什么是分组 通俗来说,我理解的分组就是在正则表达式中用()包起来的内容代表了一个分组,像这样的: var reg = /(\d{2})/ reg.test('12'); //true 这里reg中的( ...

  7. 跨域问题Java方式解决及Nginx方式解决【亲测可行】

    这两天和前端同事调试微信公众号项目,就遇到了跨域问题:网上相关博客也挺多的,但有很多细节没有点到,在此呢我也再次记录一下解决方式: (算是踩坑日记吧~ ~ ~)   !问题发现: 页面加载不出来,控制 ...

  8. C# 图片缩放,拖拽后保存成图片的功能

    窗体界面部分如下: 鼠标的缩放功能需要手动在 OpertaionImg.Designer.cs 文件里面添加一句代码,具体代码如下: //picturePhoto显示图片的控件 this.pictur ...

  9. Vue项目上线后刷新报错404问题(apache,nginx,tomcat)

    转自:https://www.cnblogs.com/sxshaolong/p/10219527.html 很简单,需要 服务器端 加个配置文件,然后 重启服务就好了,记住一定要 重启服务,否则无效!

  10. Linux(CentOS 7) 新增或修改 SSH默认端口

    通过ssh连接到服务器,登录root用户 执行命令编辑sshd配置文件 vi /etc/ssh/sshd_config 找到这一行 # Port 去除#号,修改22 为你想要的端口 重启sshd服务 ...