# Unable to install PVRTrace on Android

**URL:** <https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911>\
**Category:** PowerVR Insider\
**Tags:** pvrtrace\
**Created:** [October 2, 2013, 11:46am UTC](https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911 "2013-10-02T11:46:03Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![fmaingaud](https://avatars.discourse-cdn.com/v4/letter/f/f05b48/32.png) [@fmaingaud](https://forums.imgtec.com/u/fmaingaud)\
**Post date:** [October 2, 2013, 11:46am UTC](https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911/1 "2013-10-02T11:46:03Z")

</div>

Hello,  
  
  
  
We’ve got trouble installing PVR Trace on Android devices. First of all we can’t have our devices rooted, so we started to use the “manual installation without root permissions”.  
  
  
  
PVR SDK is install on the host  
  
Android SDK is fully install too on the host  
  
PVRTraceApp.apk has been installed on the devices  
  
  
  
  
  
First question, in the “PVRTrace.User Manual.pdf”, appendix B2, it is said:  
  
  
  
"Note: These instructions assume the following default locations for files (the locations can be changed during installation):  
  
…

- The PVRTraceSetup app has been used to install the Trace libraries on the device to: /data/data/com.powervr.OGLES2Texturing/lib/libPVRTrace.so"  
  
  
  
=\> This tool can’t be used to do that on a non rooted devices, is this something we have to care about?  
  
  
  
  
  
Second question, in the “PVRTrace.User Manual.pdf”, appendix B2, it is said:  
  
  
  
“Edit pvrtrace.cfg so it points to the Android framework libraries (since we are calling PVRTrace before the Android shim). pvrconfig.cfg should look similar to this:  
  
Note: pvrconfig.cfg should be placed on ‘/sdcard’ so the user can read and write to the file without root permissions.”  
  
  
  
=\> Sentence starts talking about “pvrtrace.cfg” and then “pvrconfig.cfg”, is this normal?  
  
  
  
=\> We’ve copied two files (the same one) with both names in “/mnt/sdcard"  
  
Content is this one:  
  
”[host]  
  
EglLibraryPath = /system/lib/libEGL.so  
  
Es1LibraryPath =/system/lib/libGLESv1\_CM.so  
  
Es2LibraryPath = /system/lib/libGLESv2.so  
  
  
  
[record]  
  
TraceFile = /sdcard/trace.pvrt  
  
RecordData = 1  
  
StartFrame = 0  
  
EndFrame = 500  
  
SaveFrameBuffer = 0  
  
SaveFileToDisk = 1  
  
Network = 0  
  
DebugInfo = 0"  
  
  
  
  
  
We’ve added the following in our main java class  
  
" static {  
  
try {  
  
System.load("/data/data/com.powervr.OGLES2Texturing/lib/libEGL\_PVRTRACE.so");  
  
System.load("/data/data/com.powervr.OGLES2Texturing/lib/libGLESv2\_PVRTRACE.so");  
  
System.load("/data/data/com.powervr.OGLES2Texturing/lib/libPVRTrace.so");  
  
}  
  
catch( UnsatisfiedLinkError e ) {  
  
System.err.println(“PVR Native code library failed to load.n” + e);  
  
}  
  
}  
  
"  
  
  
  
=\> We’ve changed our Android.mk with the following:  
  
“LOCAL\_LDLIBS := -lGLESv2   
  
-ldl   
  
-llog   
  
-Lc:/Imagination/PowerVR/GraphicsSDK/PVRTrace/Recorder/Android\_armeabi-v7a   
  
-lEGL\_PVRTRACE   
  
-lGLESv2\_PVRTRACE”  
  
  
  
=\> We are compiled using VisualGDB under Visual Studio. A warning message is telling that EGL\_PVRTRACE and GLESv2\_PVRTRACE are not system libs (but this is only a warning)  
  
  
  
  
  
Starting our apk give the following result:  
  
"10-02 15:39:54.178: I/dalvikvm(12132): Turning on JNI app bug workarounds for target SDK version 8…  
  
10-02 15:39:54.248: D/dalvikvm(12132): Trying to load lib /data/data/com.powervr.OGLES2Texturing/lib/libEGL\_PVRTRACE.so 0x41209070  
  
10-02 15:39:54.248: W/System.err(12132): PVR Native code library failed to load.  
  
10-02 15:39:54.248: W/System.err(12132): java.lang.UnsatisfiedLinkError: Cannot load library: load\_library[1091]: Library ‘/data/data/com.powervr.OGLES2Texturing/lib/libEGL\_PVRTRACE.so’ not found"  
  
  
  
  
  
As you understood, nothing is working. Can anyone can help us solve this problem? Thanks in advance.

---

<div class="post-metadata">

**Author:** ![guillemv](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.imgtec.com/guillemv/32/177_2.png) [@guillemv](https://forums.imgtec.com/u/guillemv)\
**Post date:** [October 4, 2013, 7:46am UTC](https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911/2 "2013-10-04T07:46:52Z")

</div>

Hi,  
  
  
  
I did actually write a blog port about that 🙂  
  
[https://www.imgtec.com/index.php/powervr-developers/pvrtrace-and-rootless-recording-on-android](https://www.imgtec.com/index.php/powervr-developers/pvrtrace-and-rootless-recording-on-android)  
  
  
  
Notice as well that we wrote a manual that will be included in the upcoming 3.2 release.  
  
  
  
Cheers,  
  
Guillem

---

<div class="post-metadata">

**Author:** ![fmaingaud](https://avatars.discourse-cdn.com/v4/letter/f/f05b48/32.png) [@fmaingaud](https://forums.imgtec.com/u/fmaingaud)\
**Post date:** [October 8, 2013, 8:04am UTC](https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911/3 "2013-10-08T08:04:40Z")

</div>

Hi Guillem,  
  
  
  
Thanks to your blog I’ve made some progress. I’m now able to build the version, and PVRTrace is starting without any problem in my application.  
  
  
  
But I’ve got now another problem:  
  
When using the savetodisk option the trace.pvrt is created and always growing. But when loading it with PVRTrace GUI (Analysis) I’ve got a message saying we have a partial recording and I’ve got only one frame whatever the time I let the game play. It seems to me that it is like pvrtrace never translate the “swap frame” directive. I’ve deducted this watching the frame statistics with all values growing depending on the time the application is running.  
  
  
  
When using the PVRTrace GUI as a remote controller, I’ve got the control of my application (play/stop/wait, etc). But The local trace.pvrt remains empty (it could be the same problem)  
  
  
  
Here is my cfg file in /mnt/sdcard  
  
  
  
[host]  
  
EglLibraryPath = /system/lib/libEGL.so  
  
Es1LibraryPath =/system/lib/libGLESv1\_CM.so  
  
Es2LibraryPath = /system/lib/libGLESv2.so  
  
  
  
[record]  
  
TraceFile = /sdcard/PVRTrace/trace.pvrt  
  
RecordData = 1  
  
StartFrame = 0  
  
EndFrame = 10  
  
SaveFrameBuffer = 1  
  
SaveFileToDisk = 1  
  
Network = 0  
  
NetworkWait = 1  
  
DebugInfo = 1  
  
  
  
Any idea would be appreciated, Thanks, François

---

<div class="post-metadata">

**Author:** ![fmaingaud](https://avatars.discourse-cdn.com/v4/letter/f/f05b48/32.png) [@fmaingaud](https://forums.imgtec.com/u/fmaingaud)\
**Post date:** [October 8, 2013, 2:07pm UTC](https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911/4 "2013-10-08T14:07:17Z")

</div>

By adding NetworkSendData = 1 to the cfg file I’m now able to send some data by the network, but the result is worst, I still don’t see and new frame and now I’m not able to see any texture (what I have when recording data on local file)  
  
  
  
I’ve tried on different devices (Kindle Fire & Samsung Galaxy S) with the same result on both.

---

<div class="post-metadata">

**Author:** ![JoeDavis](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.imgtec.com/joedavis/32/71_2.png) [@JoeDavis](https://forums.imgtec.com/u/JoeDavis)\
**Post date:** [October 9, 2013, 8:21am UTC](https://forums.imgtec.com/t/unable-to-install-pvrtrace-on-android/1911/5 "2013-10-09T08:21:52Z")

</div>

Hi François,  
  
  
  
The partial recording warning is something you can ignore. It usually indicates that an optimized PVRT loading path cannot be taken (we’ll think of a clearer way to warn the user in a future release).  
  
  
  
Try you try recording again with “SaveFrameBuffer = 0”? The SaveFramebuffer option is very costly, as a glReadPixels() is done each frame to capture the rendered image.  
  
  
  
If you’re still having issues, can you email [devtech@imgtec.com](mailto:devtech@imgtec.com)? We can give you access to a file transfer system so you can share your PVRT with us for investigation.  
  
  
  
Thanks,  
  
Joe
