Hans♫
Members-
Content Count
135 -
Joined
-
Last visited
-
Days Won
4
Everything posted by Hans♫
-
FYI: Graph showing iOS crashes with recent Delphi versions
Hans♫ replied to Hans♫'s topic in Cross-platform
Good news about iOS crashes! I owe Embarcadero and all of you to show the updated crash report graph. The problem was an internal hard limit in librtlhelper.a on the number of OC wrappers that could be created. As my app uses the TMC iCL native components, and is a large and comprehensive app, it wraps thousands of OC objects. Each new Delphi version used more and more OC wrappers on its own, leaving less for use in the app. That's seen clearly on the previous graph I showed. Marco sent an updated version of librtlhelper.a to me with a higher internal limit, and the result is seen clearly on the graph below. There are still some crashes though, which might indicate that a some of our users still reach the limit, <irony>since I can't imagine that there can be other errors in our software</irony>. -
Just an update on my experience: I can debug with XCode 11 on iOS versions older than iOS 13. It is devices with iOS 13 that causes the problem, not XCode 11.
-
@sjordi Yes, I know about this. It is standard procedure to open the Xcode devices with every new device, so it can be prepared for debugging. @Sherlock Yes, I can debug on iOS 12, both before and after upgrading to XCode 11 - so the problem is with either iOS 13 or iPhone 11 Pro. I don't have anymore time to spend on this right now, there are endless combinations of things to try and test. But I hope someone else will investigate this further.
-
I can confirm what is said previously: I can deploy my app to an iPhone 11 Pro with iOS 13 through Xcode 11, and the app runs fine. However, I cannot run it from Delphi ("Run" or "Run without debugging"). They both deploy the app to the device, but then shows the message "Can't start debugserver on device - device support image was not mounted". After that, I can just run the app manually on the device, but without debugging. Not a big problem as debugging usually fails anyway, so running in debugmode is already the very last option for me.
-
Ok, thank you both. I just started the upgrade to Xcode 11, so I might have more news in 1-2 hours 🙂
-
Yes, I am using an empty app to test it. It only contains a few lines that uses the FBSDK. This is the code. It calls the "ActivateApp" function and tries to show a Facebook Link Sharing Dialog on iOS. But it fails in the linking process (with the errors mentioned earlier), so the code never executes. Note, I had to add some Objective-C classes to the Grijjy unit, as it did not include all the ones I need (the modified unit is attached): uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, iOSapi.UIKit, iOSapi.Foundation, Macapi.Helpers, Grijjy.FBSDK.iOS.API, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TForm1 = class(TForm) procedure FormShow(Sender: TObject); end; var Form1: TForm1; implementation {$R *.fmx} function GetRootViewController: UIViewController; begin //Get the main window to be the parent of the facebook window (First window is always the main window) Result := TUIWindow.Wrap(TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication).windows.objectAtIndex(0)).rootViewController; end; procedure ShowShareDialogMode(aContent: Pointer); var lFBSDKShareDialog: FBSDKShareDialog; begin lFBSDKShareDialog := TFBSDKShareDialog.Create; lFBSDKShareDialog.setshareContent(aContent); lFBSDKShareDialog.setFromViewController(GetRootViewController); lFBSDKShareDialog.setMode(FBSDKShareDialogModeNative); if not lFBSDKShareDialog.canShow then //if FB app not installed, fallback to web access lFBSDKShareDialog.setMode(FBSDKShareDialogModeFeedBrowser); lFBSDKShareDialog.Show; end; procedure ShareLink(const aLink: string); var lLinkContent: FBSDKShareLinkContent; begin lLinkContent := TFBSDKShareLinkContent.Create; lLinkContent.SetcontentURL(StrToNSUrl(aLink)); ShowShareDialogMode( NSObjectToID(lLinkContent) ); end; procedure TForm1.FormShow(Sender: TObject); begin TFBSDKAppEvents.OCClass.activateApp; ShareLink(''); end; Grijjy.FBSDK.iOS.API.pas
-
That is really strange. I wonder what difference we have in our configuration that causes this error to happen for me and not for you? Would it be possible that you make a screen shot of your Project Options? (the "Compiling" page and the "Linking" page)
-
I tried to use the Grijjy implementation that you linked to earlier, but I still get the same linker error: ___isOSVersionAtLeast", referenced from: -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o); However, I just realize that you do not mention your iOS SDK version. I only have the problem with iOS 12, not with iOS11 and earlier. What iOS SDK do you use?
-
How to decrypt "EldoS AES" encrypted data on a 64 bit target?
Hans♫ posted a topic in Delphi Third-Party
Our software has been using the EldoS AES unit (128 bit key and ECB), to encrypt data stored locally on the users computers (binary data stored in a stream). Now on a 64 bit target, this library no longer works, but our software should still be able to read existing data on the client computers, even when it is the 64 bit edition of our software running. This leaves us with two options: 1) Make the EldoS AES encryption/decryption work with 64 bit. 2) Find another library that can decrypt existing data correctly Add 1: Did anyone convert it to work with 64 bit? It uses some pointer tricks, for example: SomeLongWordVar := PLongWord(@InBuf[0])^ to convert 4 bytes from an array of byte (InBuf) to LongWord. Not sure if that would work in 64 bit. Add 2: I quickly tried to decrypt with Lockbox 3, but get the error: "Invalid ciphertext - block padding is corrupted". Maybe I am using it wrong, but it could also be they are not compatible. Any suggestions what I could use or do to read the old encrypted data from a 64 bit application? -
How to decrypt "EldoS AES" encrypted data on a 64 bit target?
Hans♫ replied to Hans♫'s topic in Delphi Third-Party
I am using a Delphi beta under an Embarcadero NDA, so I suppose I cannot reveal what 64 bit target it is 😉 -
How to decrypt "EldoS AES" encrypted data on a 64 bit target?
Hans♫ replied to Hans♫'s topic in Delphi Third-Party
That did the trick! I searched and replaced all occurences of the text "LongWord" with "Uint32" and now it works. Thanks for the input. -
How to decrypt "EldoS AES" encrypted data on a 64 bit target?
Hans♫ replied to Hans♫'s topic in Delphi Third-Party
It is declared as a TAESBuffer: TAESBuffer = array [0..15] of byte; I would actually expect that trick to work on 64 bit, but I don't know. It was just an example of the code. All I can say is that the total encryption and decryption produces different results on 64 bit than on 32 bit. The reason could be very simple or very complex, but I thought I would first ask here to hear other developers experiences, before I spend more time trying find a way through. -
We use it for two things: 1) Allow users to share their achievements in our App on Facebook 2) To report all our in-app sales to Facebook so the ROI can be calculated for our Facebook Ads.
-
That sounds great. What version of Delphi, XCode and iOS-SDK do you use?
-
No one using the Facebook SDK in an iOS app? If it works for you, please let me know, then at least there is hope...
-
Who is doing MacOS app with RadStudio for clients ?
Hans♫ replied to Rollo62's topic in Cross-platform
Our MacOS app has 20.000+ users (in addition to the Win and iOS users). Each of those had to confirm the message from MacOS that they are using an outdated app... Looking very much forward to the 64 bit compiler! -
Exporting my 10.3 settings before upgrading to 10.3.1, the Migration tool shows the text "Generating the migration file... Access is denied" What can it be?
-
Excellent point! - You are right, I just typed in a file name without specifying the path, and that was the reason. After having specified a destination filename WITH path, it works fine! Thank you for pointing me in that direction.
-
FYI: Graph showing iOS crashes with recent Delphi versions
Hans♫ replied to Hans♫'s topic in Cross-platform
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. -
FYI: Graph showing iOS crashes with recent Delphi versions
Hans♫ replied to Hans♫'s topic in Cross-platform
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. -
FYI: Graph showing iOS crashes with recent Delphi versions
Hans♫ replied to Hans♫'s topic in Cross-platform
Ha, ha, we only release an update when there is nothing new, nothing fixed and absolutely no change in the code 😉 The graph is no proof, but its an indication. -
FYI: Graph showing iOS crashes with recent Delphi versions
Hans♫ replied to Hans♫'s topic in Cross-platform
Its just a screen dump from App Analytics in App Store. I did not make the graph, Apple did: 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. -
FYI: Graph showing iOS crashes with recent Delphi versions
Hans♫ replied to Hans♫'s topic in Cross-platform
Yes, I have the graph by OS also, but in both situations where the the graph stepped up, it happened with the same OS. So that is not the reason. -
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?
-
Why is macOS app internally built towards SDK 10.8?
Hans♫ replied to Hans♫'s topic in Cross-platform
Now added to Quality Portal that you cannot Notarize a Delphi MacOSX app. I found there is actually another problem too. Please vote for it: https://quality.embarcadero.com/browse/RSP-23368