Select to view content in your preferred language

ArcGIS for iOS 10.1.1 is NOT compatible with iOS7

1211
5
09-24-2013 10:04 AM
ShawnCastrianni
Emerging Contributor
The ArcGIS framework library references a symbol "__ZTISt12out_of_range" that has been removed from the CoreTelephony framework provided by Apple in iOS7.  CoreTelephony framework from iOS6 has this symbol so everything is good when running on the old version.  You can see this for yourselves by using nm on both CoreTelephony for iOS6 and iOS7 and then on ArcGIS.  The end result is the exact same app binary that runs on iOS6 will fail immediately on iOS7 at startup with:

Dyld Error Message:
Symbol not found: __ZTISt12out_of_range
Referenced from: /var/mobile/Applications/F2E81A42-3AC2-4263-9977-E9CC44C37BD6/RigInfoMobileiOS.app/RigInfoMobileiOS
Expected in: /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony
in /var/mobile/Applications/F2E81A42-3AC2-4263-9977-E9CC44C37BD6/RigInfoMobileiOS.app/RigInfoMobileiOS
Dyld Version: 324


I verified that if I remove my ArcGIS dependency, the app starts up just fine.  Therefore, I have three questions:


  1. Why would Apple remove something from a core framework if others could be referencing it?  That would cause all end users that upgraded to iOS7 to have all their apps crash for those that referenced this symbol.  Perhaps, ESRI referenced a private symbol that was not part of the public API?

  2. This symbol that is not found seems to be an error related symbol, as if my app is encountering some error and then crashing trying to handle that error.  Is there some way for me to avoid encountering the original error in the first place?

  3. Is anybody else experiencing this issue when running on iOS7?


0 Kudos
5 Replies
EricIto
Occasional Contributor
I think this may be related to your use of Xamarin.

http://forums.xamarin.com/discussion/8238/app-using-ios6-sdk-crashes-when-running-on-ios7-device

The ArcGIS app is built with 10.1.1 and runs just fine on iOS 6/7.

Can you send us a small sample which crashes for you that is not using Xamarin?
0 Kudos
ShawnCastrianni
Emerging Contributor
I am the same guy that posted over on Xamarin as well.  I wonder if you guys are actually reading what I am typing as the name on this post matches the name on the post over in Xamarin so it was obvious it is the same post to two different user forums.

Look, this is very simple.  If you run nm on the ArcGIS library, you will see several references to a symbol:

         U __ZTISt12out_of_range


That proves that the ArcGIS references this out_of_range symbol that is coming from an external source.  If you then run nm on CoreTelephony from iOS6, you get:

00059d94 D __ZTISt12out_of_range
00059d94 D __ZTISt12out_of_range


This proves, along with the error message in my original post, that this symbol comes from CoreTelephony in iOS6.  However, if you run the same nm command on CoreTelephony from iOS7, you get NOTHING!  This proves that Apple either removed this symbol or moved it somewhere else. I just ran nm on all the frameworks from iOS7 and I think I found it in AudioToolbox.  So I thought maybe I could solve this problem by adding AudioToolbox as an additional framework.  I tried that but I get the same error.  The error seems to imply that it needs to be in CoreTelephony?  I am not sure.

As far as providing an example, why do you think that is necessary if you can run these nm commands yourself and verify what I am saying is true?  The error in my original post clearly states that this symbol is expected to be in CoreTelephony but the nm command shows that it is not there for iOS7.
0 Kudos
EricIto
Occasional Contributor
I realize it was the same person posting, I was merely referring to the post in that link because of the use of Xamarin, which we do not officially support.

The reason I was asking for a sample that exhibits this behavior, is because we are not able to reproduce this crash. CoreTelephony is not a framework we reference. It was also not even made public until iOS 7.

Are you able to reproduce this with the MapViewDemo that ships with our SDK?
0 Kudos
ShawnCastrianni
Emerging Contributor
I will see if I can create a test program.  I do not have my hopes up as I have done a lot of experimentation here to try and narrow down what the problem is.  If my build machine creates the build, it runs fine.  it is only my dev machine that produces an app that crashes on startup.  If my other developer produces a build on his dev machine, it used to crash a few days ago but now it doesn't.  He did make a change to his machine within those few days which was to install the Xcode command line tools.  His machine now has the same version of xcode 4 and the command lines tools as the build machine and both produce good binaries.  My dev machine has xcode 5 with both ios 6 and 7 and a later version of command line tools.  If I build the app against ios 6, it crashes.  If I build the app against ios 7, it runs but then suffers from ios7 look and feel issues which I do not have time to address.  this symbol comes from Standard C++ and is the out_of_range exception class.  If you edit the file:
/usr/include/c++/4.2.1/stdexcept

you will see the out_of_range class which I believe is this undefined symbol.  So I cannot figure out what is the cause of the problem as it could be any one of the following variables:

  • OSX Mountain Lion vs. Lion

  • xcode 4 vs. 5

  • Xamarin vs. Objective C

  • ios 6 vs. ios 7



While I try to create a test program, maybe all of this information about the Standard C++ stdexcept file might help you to figure something out on your end.  I do know that if I remove ArcGIS from my app, it starts up just fine.
0 Kudos
CharlesArbuckle
Deactivated User
With the new ios7 update, when ever I take a picture to drop into our Arcgis map the camera shows the picture sideways. Is anyone aware of this and will there be a fix coming soon?
0 Kudos