Running systrace directly from target device - android

On our boards, USB is not yet up. We are experiencing some frame drop issues while doing video playback and we would like to see whats happening using systrace. Now, I have used systrace, but, with adb and related functionality working.
Is it possible to run systrace directly from the target device so that adb is not used at all? In my opinion it should be, but am not able to find anything useful over web!
Thank you!

Related

Android Management API - boot device when power is conncted

So, as the title describes, I'm looking for a way to boot an Android device when the power charger is connected. We are making dedicated devices, in kiosk mode, and are using the Android Management API to setup everything on the device.
This covers most of our requirements, like preinstalling apps, disabling everything else, hooking it up to Managed Google Play, getting device reports etc... But for this power thing, I can't find any solutions in the docs.
The problem is that the physical power button isn't accessible to the user (don't ask my why :)), and when the battery drains they have to be able to power it up again, without unscrewing the case to get to the physical button.
I know this can be done in different ways, but I can't find anything that would work with Android Management API. I'm looking at this "fastboot" approach, since it seems pretty simple https://source.android.com/devices/bootloader/unlock-trusty#off-mode-charging
Initially, I though I could run this somehow using the devices/issueCommand endpoint https://developers.google.com/android/management/reference/rest/v1/enterprises.devices/issueCommand, but that seems to support only some predefined commands like: LOCK, RESET_PASSWORD and REBOOT.
Maybe I'm just missing something. If someone has another approach in mind, please share.
If it's any help, we also have the Android Management API hooked up to the PubSub API, and a topic there that the pulls the reports of the devices. Theoretically, I could listed to the "power connected" event there, and run some command on the device. But again, the problem is how to run this command on the device remotely.
Maybe a solution would be to make another app that will run as a background process that runs this command. I guess I would need to add it as "receiverActivity" in the policy. But the same problem remains... how to invoke this activity from the Android Management API.
The bottom line is that this needs to be fully automated. Running this command on each device manually is not an option.
Also, worth mentioning, this is an Ionic app. Although it's probably not impossible, we would like to keep this logic outside of the app itself. Ideal solution would be just to run some adb command remotely using the Android Management API.
Or maybe there is a good 3rd party app that does this, and I could install that app in the policy and invoke it somehow.
All suggestions are welcome. Maybe there is a simple solution that I've missed.
UPDATE AFTER COMMENTS: I'm not looking how the actual app can do this. I'm looking for a way to execute some "native" command when the device is initially setup from the Android Management API policy. So it should execute only once. When it sets up everything initially. It should edit some file on the device (or run some command) to enable this feature. Later, it shouldn't care if the device is turned on or not, or what apps are running on it. There are a few different ways how to do this suggested here https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected. I'm looking for a way to trigger one of these commands when the device is setup initially (only once). In other words, this should execute only when the device is enrolled. It shouldn't care about any apps running on the device.
So the "free" way to do this is using the fastboot commands. But from the AMA API this is currently not (and most likely ever) possible. This problem will always be hardware specific, since the bootloader is controlling the boot process, and the bootloader is custom made for each device.
There are options for different manufacturers though. Look into OEMConfig apps (which you can get in the Play Store for Work or from the manufacturer themselves).
Samsung has it's KNOX API, and the paid ProKiosk mode supports controlling Power Control.
Regarding the post in your question solving the problem, you will not be able to modify any files in the system since that's restricted to root. This will also never work for Managed Devices.
You could "half-automate" the process by setting up a raspberry pi or some other device with a script that waits for fastboot devices to get connected and executing the command. That way you just visit every device and put it into fastboot and plug in the device and you're off to the next one.
For clarification: adb and fastboot are two entirely different things. Fastboot is running while the device is in it's bootloader. Adb is running while the device has started android. It should technically be not possible to execute fastboot commands while android is started since the bootloader has already exited.

Newbie - adb_vendor_keys issue on dji android device

Been browsing this group, found some great answers on here, but none have helped me with my problem.
We have a new ( less than 1 month old) dji device, called a smart controller, it’s basically an android tablet, it’s built into our drone remote controller.
A few days ago it came up wirh an error message duijg # Flight, which was basically a memory overflow.
So we suspect the internal memory has been filled by the local cache files.
The issue is that this has now stopped the device even starting up.
We have tried installing drivers on our pc, including the firmware update application from dji, but this just fails every time we try it.
Today we have been following advice on here, and using Rhe ADB program on our pc, we do at least get a connection to the device.
However we can’t do anything withnht program.
Each time we try any command we get this message
Device unauthorised
This adb server $adb_vendor_keys is not set.
We have tried deleting the public key, on the pc, and creating a new one, but we can’t write that new key to the device.
We are not programmers and don’t know code, so we are doing all this on our pc in a command line prompt.
Before we give up and send it back to China, anyone got any ideas on what we might be able to do?
Thanks in advance.
Without being able the use the physical device. I do not believe there is anything that you can do. Generally speaking the error you are seeing is caused due to a permission prompt that would appear on the device authorizing your computer to interact with it.
If you could get the device to display and disable and re-enable usb debugging a security prompt should display when you connect it to your PC. Without that option I would recommend sending it back

Cyanogenmod: custom port not booting (stuck before boot animation)

I'm currently building a custom cyanogen port (CM 12.1) for a china phone (Mann Zug 5S for that matter). I've been able to build a working recovery and I've been able to build a ROM. The ROM installed fine so far, but as it gets to booting, I'm stuck before the boot animation begins. Only a static image is displayed.
I tried to find some information via /proc/last_kmsg (in CWMR), but I did not find any differences to the output with a working stock ROM.
I'd very grateful for any ideas or hints where to look and what to try to narrow down the issue.
Best regards,
Phil
I'm stuck in the same issue. During the boot can you access to logcat with
adb logcat or can you see your device in adb devices?
The problem is that without logcat we cannot log the boot process in order to see what goes wrong!
I suggest you to check also these logfiles, if you have them:
/cache/recovery/last_log
/proc/kmsg
/dev/log
Other hints if you are using a stock kernel image:
Did you import every proprietary libraries (.so files in /system/lib and /system/vendor/lib folders)?
Did you import proprietary executables (in /system/bin)?
Did you import every other vendor files you think can be involved in the boot process (in /system/vendor and other folders)?
I'm trying this roadmap to get my rom booting. I hope it helps

Debugging Android Apps without USB or root

I'm currently developing a small android app which communicates with a FTDI chip over USB so I can't use logcat to get the logs live. Unfortunatly the Android device is a Galaxy Tab 2 with Android 4.1.2 which I'm not allowed to root. That means adb-wireless won't work too. And because it's just a small app setting up a bugtracker system like ACRA seems a bit oversized.
Is there another way to get the logs of my app?
Many thanks
I can't think of any "live" logcat output, but you can view your Logcat Output (which is Buffered) via adb logcat. Test the things in your app you want to do or to get the Error you try to solve, then connect the USB to a Computer running adb and dump the Log.
More information for the logcat Command can be found here
You can make a utility function that opens an HTTP connection and writes to a web server.
This adds a little overhead to your application, but works fine to get log info.
Easy to implement, no rooting required!
Or you could write a little service that runs a web server that responds to requests with a dump on logcat (or a tail or logcat or something).
It might even be possible to write a shell script that uses curl or wget to do this (that is send get requests to a webserver in order to pass logcat output), but you might need to install them, which in turn you might need root for, so... maybe this wouldn't meet your needs.
I guess it might even be possible to create a network share on your workstation, mount it on your android device and just redirect logcat output to a file on the share. But I didn't try it - let me know if you do!
You could use apps like Logcat or others alike, which will give you the same output as your IDE Logcat console.
You can turn on the logging, do your stuff in your app, and return to the logcat app to check out the log, mail it to yourself etc.
I did a little bit more research and it seems that there's no possibility to read the logs easily without having root rights. You're able to read the logcat output using bugtracking libraries like ACRA in your Android app, but it's a lot more effort to include them and analyze the logs.
I'm going to develop on my own (rooted) tablet with adb-wireless now.

android error feedback device

I was wondering if there is any way to get any feedback of what's going on behind the scenes when running an app on an Android device. If I use the emulator and eclipse I can see what's happening in the logcat. But I'm making a program with ROS android and it I cannot run it on the emulator. Now my program crashes and I don't know why. Is there any way I can get more information?
Thanks
You can use adb to debug the app on your device. See http://developer.android.com/guide/developing/device.html
I can think of a couple (less than elegant) ways to try and find out what's going on.
1) Display toasts from potential problem areas (Does it have a screen?)
2) Write logs to the SD card (does it have an SD card??)
EDIT
I wasn't thinking clearly... you have to be able to load the program to the device, so you must be able to connect it to your PC. So, as Agarwal pointed out, you can most likely hook it up, run it on the device/robot/whatever and see what happens with the logcat.

Categories

Resources