run-as: Could not set capabilities: Operation not permitted

后端 未结 7 676
梦毁少年i
梦毁少年i 2020-12-05 01:29

on android 6.0.1 I am getting this error when trying to use run-as.

⋊> ~ adb shell                                                          14:29:01
shell         


        
相关标签:
7条回答
  • 2020-12-05 02:09

    In Visual Studio, App properties, Android Options, changing the debugger from C++ to .Net(Xamarin) seems to have fixed the problem for a mixed C++/C# app.

    0 讨论(0)
  • 2020-12-05 02:14

    Unlike another answer here, I have also tried to use smart switch & hard device resetting, but unfortunately that approach did not work for me (Wasted extra one hour just to try out that approach). Besides not working, it might create additional problem "samsung account: session expired" - problem, which can be fixed only if you have root access to your device.

    I by myself have used instructions from here: https://www.youtube.com/watch?v=Sy4FWLHxGYs

    and then from here: https://www.tomsguide.com/us/samsung-galaxy-s6-guide,review-2856-3.html

    for getting root access to your device, and after that run-as can be executed with additional command "su -c" as for get root user. So whole command will look like this:

    su -c run-as org.ligi.passandroid

    WARNING: Gaining root access to your device will most probably void your device warranty if you have any left.

    Additionally to this, I wanted to be able to debug my application inside Samsung Galaxy S6, so I've altered Visual studio components, more instructions can be found here:

    https://issuetracker.google.com/issues/37093233#comment53

    If you happen to have Samsung based android device - I have already reported that bug to Samsung, but I've could not get any time schedule if when and if at all they are going to fix this issue. If you own some other Android device - makes sense to report this problem to manufacturer.

    0 讨论(0)
  • 2020-12-05 02:15

    I was working from Delphi 10.1 berlin. I was presented with the same problem and my solution was to configure the sdk to the previous version. I was using Android SDK 25.2.5.32bit and downgraded to android SDK 24.3.3 32 bit. To configure:

    Tools->Environment Options -> SDK Manager

    Then, add the necessary sdk, in this case android SDK 24.3.3 32 bit.

    0 讨论(0)
  • 2020-12-05 02:16

    I had previously posted an answer here which was deleted, maybe because it was a link to another stackoverflow question referring to the answer I gave there, instead of containing the full answer.

    Reposting its contents here from https://stackoverflow.com/a/43242739/7823460:

    I had a very similar issue on Samsung Galaxy S6 Edge, trying to start debugging on VS2015, I got a different error, much less verbose than in the attached screenshot:

    run-as: Could not set capabilities: Operation not permitted

    Based on the contents of the attached screenshot above, I tried 'initializing' / factory resetting the device using Samsung's Smart Switch and it actually fixed the 'run-as' issue I was having.

    This is the only solution which worked and didn't involve rooting the device, so I believe it must be publicly available. Of course people attempting this should keep in mind that factory reset means that data will be lost, unless it's backed up. The same Samsung software helps with backing up your data.

    0 讨论(0)
  • 2020-12-05 02:17

    @RustyX answer helped my partially. zlib didn't work in my Mac. So I had to use the Android Backup Extractor to convert .ab file to .tar file. You can download it here.

    For the full step by step instruction, refer here.

    0 讨论(0)
  • 2020-12-05 02:22

    If you have a SAMSUNG device, don't bother - SAMSUNG broke run-as by dropping the setuid flag (so run-as has no chance of switching to a different identity).

    Also don't bother trying the Smart Switch "reinitialize device" workaround, it won't work until SAMSUNG fixes it in the firmware (so it is worth updating to the latest version).

    Use some other method to access your app's data, like adb backup:

    adb backup -f data.ab <my.package>
    dd if=data.ab  bs=24 skip=1 | openssl zlib -d > data.tar
    

    Instead of dd you can use the abe tool, which can also write .ab files.

    0 讨论(0)
提交回复
热议问题