Jump to content

Hans♫

Members
  • Content Count

    122
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Hans♫


  1. When I target iOS 12 I get linker errors related to the Facebook SDK, while linking towards iOS11.2 works fine.
    I hoped that Delphi 10.3.1 fixed it, but it didn't so now I ask here.
    What can it be?

     

    I am using:
    Delphi 10.3.1
    XCode 10.1 (10B61)
    SDK iOS12.0
    The SDK is included by setting "Options passed to the LD linker" (in: Project Options > Building > Delphi Compiler > Linking) to "-ObjC -lz -framework FBSDKCoreKit -weak_framework Bolts"

     

    The errors I get with different versions of the Facebook iOS SDK:


    FBSDK 4.40 (latest SDK)
    Error: "___isOSVersionAtLeast", referenced from:      -[FBSDKApplicationDelegate application:openURL:options:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate applicationDidBecomeActive:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      ___51-[FBSDKApplicationDelegate openURL:sender:handler:]_block_invoke in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate openURLWithSafariViewController:sender:fromViewController:handler:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKWebDialog _applicationFrameForOrientation] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKWebDialog.o);      -[FBSDKPaymentProductRequestor logTransactionEvent:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKPaymentObserver.o);      ...

     

    FBSDK 4.36
    Error: "___isOSVersionAtLeast", referenced from:      -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate applicationDidBecomeActive:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKApplicationDelegate openURLWithSafariViewController:sender:fromViewController:handler:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o);      -[FBSDKPaymentProductRequestor logTransactionEvent:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKPaymentObserver.o);

     

    FBSDK 4.15
    It works, but this SDK version is deprecated.


  2. Thank you for your persistence Dalija. I have a heart for Delphi too, and I somewhat regret that I posted the image, because I still have no proof if it is our code or Delphi code that fails.
    With the graph I am basically bashing 10.3 RIO because I am tired of its quality.

     

    Our database access uses exactly the same code on Windows, Mac and iOS. No crashes detected or reported on Windows and Mac.
    But as you said, iOS is just waiting for a reason to take your app out. It is a lot more strict on everything.
     


  3. I investigated all recent crash reports delivered to XCode for the app. The majority of the crashes contains a reference to a sqlite file in our app and "Code 0xdead10cc", which means "terminated by the OS because it held on to a file lock or sqlite database lock during suspension"

     

    The positive news is that the user will not discover the crash because it happens when it enters suspension state anyway.

     


  4. Its just a screen dump from App Analytics in App Store. I did not make the graph, Apple did:

     

    EarMasterIOScrash_byOS_full.png.e165683a2964b841ef7260f3bfe22088.png

     

    The graph is not a scientific proof that those Delphi versions are the cause of the leaps, but it is interesting that both leaps happened exactly at the same time as upgrading the Delphi version. 

     

    Except for 10.3 Rio, I am still very pleased with Delphi as it allows us to share 99% of the codebase among the Windows, OSX and IOS versions of our app.

    BTW, on iOS we are using the native iCL components and not FMX.


  5. Our iOS app made with Delphi showed an alarming increase of crashes with the latest update, that was built with Delphi 10.3. So I made this graph in "App Store Connect" that shows a similar increase of crashes when upgrading to Delphi 10.2.2. This is a bit scary... where will it end...

     

    Graph shows crashes per week:

    EarMasterIOScrash.png.b4549721af2827df1724251a67e0ad3f.png

    The vertical gray lines shows when we released a new update of our app.

    The number of sessions per week is almost the same during the whole period, so that does not influence the graph.

    Unfortunately I don't remember what version of Delphi I was using before the 10.2.2 upgrade.

    • Like 2
    • Thanks 1

  6. With Delphi 10.3 Rio, I have added MacOSX SDK 10.14 in the SDK Manager, which I use to build my apps. However, when I run "otool -l <binaryfilename>" on the deployed executable I get this:

    cmd LC_VERSION_MIN_MACOSX
    version 10.8
    sdk 10.8

    This happens also with an empty app.

    It is a problem because I need to Notarize the app with Apple, and it fails with the reply: "The binary uses an SDK older than the 10.9 SDK".

     

    How can I change that?


  7. Thanks for the demo app. Compiled with 10.3 it gave the same result as previously - until I logged out of Windows and in again, then it worked.

    Apparently in Windows 10 GetScreenScale returns only the value present at login time, that's why my first experiments did not work.

    Later I turned on the "Fix blurred apps" setting in Windows 10 and then it returns the correct value immediately even without logging in again.

     

    That's great, so Rio 10.3 works!

    However, when compiled with 10.2.3 it now always returns 1.0, even if I reboot after having changed the scaling in Windows. I am going to figure out why that happens...


  8. I use ScreenService.GetScreenScale to get the Screen scaling. It was partly broken in 10.2.3, but in 10.3 it seems to be completely broken. 

    In 10.3: No matter what scaling is set in Windows: 150%, 175% or 200%, the return value of ScreenService.GetScreenScale is 1.0. 

    In 10.2.3 it did return the value 1.5 with 150% scaling, but with 175% and 200% scaling it also returned 1.5

    I post it here before I post it as a bug in QP, in case I missed something...?

     

    This is the function where I use it (and yes it does actually call GetScreenScale):

    function tScreenScale.GetScreenScale: Single;
    var ScreenService: IFMXScreenService;
    begin
      Result := 1;
      if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
        Result := ScreenService.GetScreenScale;
    end;

     


  9. iOS does not exist as a platform I can choose anywhere in 10.3. Even if it did exist, AFAIK I would still be required to choose an SDK before I could add iOS as a target platform in a project. But I cannot add any iOS SDK at all, as described in my question.

     

    Edit: and when I want to add a SDK, I have to choose the platform before I can choose what Connection Profile I want, which leads me to conclude that it has nothing to do with XCode because it doesn't even connect with XCode to check, but maybe the macOS build caused the iOS platform to be removed?

     

    Edit2: I tried to build and run an empty iOS app with XCode, then building and running a macOS app with Delphi, but still no change.


  10. My Delphi 10.3 Rio installation has no iOS target:

    SDK manager > Add > Select Platform: There is only Windows and macOS on the list. iOS is not there.

    Tools > Manage Platforms: shows that iOS target is installed.

     

    paserver runs and connects fine on the mac, as I can build and run macOS applications from 10.3 Rio.

    I have installed MMX, CnPack and Project Magician.

    What can I do to make the iOS target show up?

     

×