moredip / PublicAutomation

Other
4 stars 22 forks source link

Not working in IOS7 #5

Open abcde12321 opened 11 years ago

abcde12321 commented 11 years ago

This framework does not work in the new IOS7 beta5 system. I have checked it with IPHONE5. The console will give an entitlement missing error.

I wonder if anyone can help with this?

gfontenot commented 11 years ago

I haven't seen any problems on Xcode 5 or iOS 7. Is this still happening? Can you give more info about the problems you're seeing?

abcde12321 commented 11 years ago

Hi, gfontenot, I worked on it for a project a few months ago( using xcode beta, ios7 beta, iphone5 ), the error i got is that when executing the code (simulate user touch) in the console it said "no valid entitlement", so nothing is really executing.

Is there any specific instructions to use this library?

Thanks a lot for helping.

gfontenot commented 11 years ago

I can't replicate, but a couple of things might help:

  1. You might try checking out the code in TestingWithFrank/PublicAutomation. That version of the code should be more up to date, and has been tested against iOS 7 and Xcode 5.
  2. The warning you are seeing might have been from a bug that existed in the beta versions of Xcode 5. I believe that the bug has been fixed. Again, trying the code in the above linked repo might help.
  3. You might need to enable the accessibility support in the simulator in order for PublicAutomation to be able to interact with the simulator. If you have run a test suite with Frank or KIF, it should be on since both of these frameworks turn it on at runtime. If you want to see how they accomplish this, you can check this method from the KIF source code (Frank does something similar, I believe, but I'm not sure where it lives in the codebase.)
gfontenot commented 10 years ago

Been looking into this for days, and I'm pretty much nowhere. It seems like UIAutomation is getting loaded fine, but that the messages passed to UIASyntheticEvents are just getting ignored. I'm wondering if something changed inside UIAutomation for 7.0 that causes even UIASyntheticEvents to be inaccessible from the currently running app the way the higher level APIs are. None of this happens on the simulator, it only happens on device. Not really sure where to start digging here. @moredip, do you have any ideas?

moredip commented 10 years ago

I'm assuming you've tried adding the entitlement that the automation api is complaining about? Other than that I'm a little stumped too to be honest. Are there any error messages or logs that provide any hints?

It's possible that with iOS 7 there needs to be a separate automation process running on the device perhaps? You could try launching the app via automation and then running PublicAutomation methods after that.

gfontenot commented 10 years ago

Ah. I thought that the entitlement issue described by @abcde12321 was unrelated, but after digging through the logs for the device, it looks like the test app is missing the com.apple.private.hid.client.event-dispatch entitlement. I have to assume that this was an entitlement added with 7.0. It's impossible to add this entitlement, because it won't match the entitlements in the provisioning profile. I'm assuming that this isn't an issue on the simulator because the simulator ignores some (if not all) entitlements to begin with.

So, it looks like using UIAutomation on the device simply isn't possible on iOS 7. Huge bummer. @moredip I'm assuming this issue affects Frank as well?

mattvperry commented 10 years ago

Any update on this?

amorican commented 10 years ago

For those still looking at this issue:

I confirm that anything I tried with UIAutomation works wonderfully on the Simulator, but fails (almost) silently on the device with the missing entitlement message in the console (let's consider ourselves lucky we're even getting the message, it seems tons of entitlements have been added to private API's in iOS 7, this is the only one so far that gives me a specific message on what's missing.)

I have just Jailbroken an iPhone 4 with iOS 7.0.4, added the entitlement com.apple.private.hid.client.event-dispatch to my app, and fake-code-signed it with ldid, and it all works good.

Of course regrettably this will not help folks for whom Jailbreaking is not an option.

gfontenot commented 10 years ago

Thanks for confirming my suspicions, Frank. Bummer. I've filed a radar to make the Objective-C side of the UIAutomation framework public for testing use. I'd encourage other people to do the same.

On Jan 7, 2014, at 6:07 PM, Frank Le Grand notifications@github.com wrote:

For those still looking at this issue:

I confirm that anything I tried with UIAutomation works wonderfully on the Simulator, but fail (almost) silently with the missing entitlement message in the log (let's consider ourselves lucky we're even getting the message, it seems tons of entitlements have been added to private API's in iOS 7, this is the only one so far that gives me a specific message on what's missing.)

I have just Jailbroken an iPhone 4 with iOS 7.0.4, added the entitlement com.apple.private.hid.client.event-dispatch to my app, and fake-code-signed it with ldid, and it all works good.

Of course regrettably this will not help folks for whom Jailbreaking is not an option.

— Reply to this email directly or view it on GitHub.

amorican commented 10 years ago

I filed one too a little while ago.