

Rollo62
Members-
Content Count
1950 -
Joined
-
Last visited
-
Days Won
25
Everything posted by Rollo62
-
I see light in the tunnel .... this is one small step for a man - one giant leap for mankind
-
iOSapi_AVFoundation AVAudioSession extension doesn't work
Rollo62 replied to Rollo62's topic in Cross-platform
Here is something for FPC, but quite old. https://github.com/ObjectUp/CrossRoads/blob/master/CrossRoads_DelphiVER280_Port/LSNLibrary/unLSNSound.pas I'm not sure if and how binding FPC solution into Delphi makes sense, probable the iOS bridges were too different, but since the first version of FMX based on this I still have hope that there is a second way. -
iOSapi_AVFoundation AVAudioSession extension doesn't work
Rollo62 replied to Rollo62's topic in Cross-platform
@Dave Nottage Or did I misunderstand your post, and you say this is currently under 10.3.3 NOT usable, even with the proposals you gave, because Objective-C bridge cannot handle it yet ? That would be the worst case, I need that urgently, my customers already ask why can't we do what other apps can do. I monitor the changes in all Delphi iOSApi and AndroidApi units since the last 5 or 6 versions, so far never changed anything since years, only copyright year is eagerly updated. My hope is that all the available system interfaces might get linked to FMX units soon. Is there maybe a helpful unit from the FPC community, at least this didn't jump in my eye yet ? Any solution welcome, to configure background and foreground audio. -
@Sherlock But this is also sending a notification, and the user must open the notification to start the app, right ? I think the process on the phone is quite similar from local and remote notification. Or is there any possibility to replace the default notification with lets say a more prominent view/launcher via remote notifications ?
- 11 replies
-
- ios
- background
-
(and 1 more)
Tagged with:
-
iOSapi_AVFoundation AVAudioSession extension doesn't work
Rollo62 replied to Rollo62's topic in Cross-platform
A yes, great. So I better check the c headers from now on, instead of Apple Docs. Every time I see a NSError now I will have to replace it bei PPointer, what a mess Then there were many wrong entries in the unit, I only wonder why this seems to work with setCategory, at least I get no exceptions. Unfortunately it still doesn't run without exception, and I think I've tried all optiions, see alternatives (A) to (C) and (1) to (5), I've tried most combinations with same result. When I don't use local copy with different name iOSapi_AVFoundation_Ex I do get compiler errors in FMX.Media.iOS, seems that one uses the original unit, and cannot work with my local copy. Thats why I used a different unit name, that also is working for other iOS units before. unit iOSapi_AVFoundation_Ex; //<-- local copy, with extensions and changed GUID var LAVAudioSession : AVAudioSession; LError : NSError; LRes : Boolean; (A) as PPointer, called by @LPError (B) as PPointer, called by LPError (although this makes not much sense) //LPError : PPointer; (C) as Pointer, called by @LPError LPError : Pointer; begin LAVAudioSession := TAVAudioSession.Wrap( TAVAudioSession.OCClass.sharedInstance ); // (1) this works as far as I can say, at least never see exceptions I can say LRes := LAVAudioSession.setCategory( AVAudioSessionCategoryPlayback, LError); // (2) first approach, throws exception LRes := LAVAudioSession.setCategoryWithOptionsError( AVAudioSessionCategoryPlayback, AVAudioSessionCategoryOptionDuckOthers, LError); // (3) Dave's proposal // Because the corresponding declaration in Objective-C is: // - (BOOL)setCategory:(AVAudioSessionCategory)category error:(NSError **)outError //PPointer = ^Pointer; {$NODEFINE PPointer} { defined in sysmac.h } //NSError = interface; // (A), (B) set to nil before LPError := nil; //<-- this always shows same crash, no matter what (A),(B),(C), (2)-(5) LRes := LAVAudioSession.setCategoryWithOptionsError( // (4a) this alternative both version should be identical -> get from string //CocoaNSStringConst(libAVFoundation, 'AVAudioSessionCategoryPlayback'), // (4b) this alternative get from dedicated function, doing same as above //AVAudioSessionCategoryPlayback, // (4c) this alternative from Dave's original proposal, using different mode CocoaNSStringConst(libAVFoundation, 'AVAudioSessionCategoryPlayAndRecord'), // (5a) this alternative is a simple integer constant 0x2, defined as const = 2 AVAudioSessionCategoryOptionDuckOthers, // 2 // (5b) this alternative also crashes same //2, // (5c) this alternative from Dave's original proposal, using different option 0, @LPError); if LPError <> nil then begin LError := TNSError.Wrap(LPError); end; if not LRes or (LError <> nil) then begin // Something wrong end; -
iOSapi_AVFoundation AVAudioSession extension doesn't work
Rollo62 replied to Rollo62's topic in Cross-platform
@Dave Nottage Thanks for the correction, I will check this out. What I really dont understand why this should be different. There is a prototype in the iOSapi_Foundation.pas file already, the setCategory function setCategory(theCategory: NSString; error: NSError): Boolean; cdecl; It uses the error: NSError type I simply tried to copy that, and extent to function setCategoryWithOptionsError( category: NSString; withOptions : AVAudioSessionCategoryOptions; error: NSError): Boolean; cdecl; Why should it be error: PPointer, right now ? function setCategoryWithOptionsError(category: NSString; withOptions: AVAudioSessionCategoryOptions; error: PPointer): Boolean; cdecl; Also the FmxExpress header conversions from @Eli M. shows it with special NSError type. Edit: NSError is defined in iOSap_Foundation as interface PPointer ist jus a pointer to pointer in System NSError = interface(NSObject) ['{8E8F832A-5F75-4F65-A18B-5A8E2F49A867}'] function code: NSInteger; cdecl; function domain: NSString; cdecl; function helpAnchor: NSString; cdecl; function initWithDomain(domain: NSString; code: NSInteger; userInfo: NSDictionary): Pointer; cdecl; function localizedDescription: NSString; cdecl; function localizedFailureReason: NSString; cdecl; function localizedRecoveryOptions: NSArray; cdecl; function localizedRecoverySuggestion: NSString; cdecl; function recoveryAttempter: Pointer; cdecl; function userInfo: NSDictionary; cdecl; end; ... PPointer = ^Pointer; {$NODEFINE PPointer} { defined in sysmac.h } How can the type of "error" change in one unit, is this another Apple-Magic ? And the original libraries from Apple seems to use similar types as well, here are all the variants. Why to use NSError in one, and PPointer in the other, I don't get that ? func setCategory(_ category: AVAudioSession.Category) throws func setCategory(_ category: AVAudioSession.Category, options: AVAudioSession.CategoryOptions = []) throws func setCategory(_ category: AVAudioSession.Category, mode: AVAudioSession.Mode, options: AVAudioSession.CategoryOptions = []) throws func setCategory(_ category: AVAudioSession.Category, mode: AVAudioSession.Mode, options: AVAudioSession.CategoryOptions = []) throws I call this as shown above, those are predefined function, to get the necessary string key constant. which is defined in iOSapi_Foundation function AVAudioSessionCategoryPlayback: NSString; in caller unit var LError : NSError; LRes := LAVAudioSession.setCategory( AVAudioSessionCategoryPlayback, LError); You should. I meant when I import make a local copy of the unit, which has hundrets or interfaces keeping untouched. Will it be enough to use different GUID only for those interfaces that have changed, not the ones that keep original ? Still then would be 2 references 8old unit, new unit) of units which may have same interface GUID. Do I have to change all the GUIDS in that local copy of the unit (that would be a little messy) ? No. I suggest filing a QP report. You mean feature request for the iOSapi_Foundation, right ? Its clear that the interface is missing in iOSapi_Foundation, but I was not sure if there is anything else might missing in the static libraries. Since I assume those are copied and get actually from the current system, this should always up to date. My understanding of the iOS-Delphi bridge is that SDK from current system is bounded via the interfaces to Delphi classes, or is there anything hidden inbetween that I haven't seen yet ? -
TThread.Sleep in iOS/android background mode threads, what to choose ?
Rollo62 replied to Rollo62's topic in Cross-platform
@Remy Lebeau Thanks for the clarification. But is there any possible negative effect on iOS/(Android) apps when running in background mode ? Are the apps more likely to be killed when using one or the other in a running thread loop ? I assume that TThread.Sleep should be safe in background mode, while TEvent.WaitFor is probably not the right choice, but I'm very unsure about that. -
The styles data is not always accessible, better if you touch them only via the OnApplyStyleLookup event. At that time should be guaranteed that all presentation layers are created.
-
iOS Bluetooth LE with background-central stops after 1-10 minute
Rollo62 replied to Rollo62's topic in Cross-platform
I have analysed the crash report, see enclosed, which gives some hints. But I don't have threads that wakeup so frequently (I reduced the processing thread to 500ms, as said, by TThread.Sleep()) Maybe the reason could be the TextToSpeech thread, which is also in the stacklist, I have to check where this sits and what it does exaclty. Are there any known background issues with the TTS ? This looks to me like blocking something, trying to finish, while it cant. From above logs I have seen that TTS has launched (speechSynthesizerDidStartSpeechUtterance), but no sound and no EndOfSpeech event occurs (speechSynthesizerDidFinishSpeechUtterance). Probably somewhere inbetween sits the troublemaker. What else could cause so many wakeups, and what exaclty wakes up (Thread.Sleep) ? Maybe the Sleep method is not the best, I will try with TEvent. Stack.txt- 6 replies
-
- ios
- bluetooth le
-
(and 3 more)
Tagged with:
-
You could try to simply add another rectangle on top of the CustomStyle Panel background in the StyleDesigner, with giving a new StyleName it should be accessible. Not tested in your case, but Ido similar things with other controls. As proposed above, try to use TRectangle instead of TPanel, or better even TLayout as base container for your other components.
-
The implementations can also vary between the different platforms. You cannot rely that one element is accessible in same way under all platforms. This is one of the biggest drawbacks of FMX styles IMHO.
-
iOS Bluetooth LE with background-central stops after 1-10 minute
Rollo62 replied to Rollo62's topic in Cross-platform
Some more tests regarding the missing background audio, it seems the TTS is started, but keeps silent. 11:23:16.355 (B) - TS4Log: AUD_P: TS4Measure_Tts.SpeakFree prepare: 7 11:23:16.356 (B) - TS4Log: AUD_P: TextToSpeechImplementation.SpeechRate_Set 100 11:23:16.356 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Speak LUtterance.setRate 11:23:16.359 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Speak BG granted 11:23:16.359 (B) - TS4Log: AUD_P: TS4App_Feature_TtsSpeak.Request_Background 11:23:16.360 (B) - TS4Log: AUD_P: <=== AUDIO_PLAY IOS SESSION ENABLE 11:23:16.360 (B) - TS4Log: AUD_P: <=== AUDIO_PLAY IOS SESSION AVAudioSession created --> The AVAudioSession is prepared for AVAudioSessionCategoryPlayback category and setActive( True ), without errors. 11:23:16.369 (B) - TS4Log: AUD_P: TS4App_Feature_TtsSpeak.Request_Background AV BG enabled 11:23:16.369 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Speak BG granted 11:23:16.369 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Conf_SpeechSynthesizer release 11:23:16.369 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Conf_SpeechSynthesizer re-created 11:23:16.370 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Speak set voice 11:23:16.371 (B) - TS4Log: AUD_P: TextToSpeechImplementation.Speak play (speakUtterance) 11:23:16.372 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 7 11:23:17.180 (B) - TS4Log: AUD_P: TextToSpeech speechSynthesizerDidStartSpeechUtterance --> This shows TTS is started, as the event has fired, but its still silent in BG- 6 replies
-
- ios
- bluetooth le
-
(and 3 more)
Tagged with:
-
iOS Bluetooth LE with background-central stops after 1-10 minute
Rollo62 replied to Rollo62's topic in Cross-platform
@Dave Nottage Thanks for the comments, yes I also have considered the data rate. But I have many different test devices, so in this app I tested with about 2 sec., 12. sec., and a manual, transmit on demand device. I can say the data rate is not too fast, since a few bytes every 2 sec. shouldn't be a problem. If the data rate is too low, then this might cause problems. Although I think Aple should be happy with low data rate, as this is energy saving, and all longtime battery operated IoT try to do this. As I said before, I had found one article somewhere where they considered a too low data rate as problem, but there was no answer if yes or no. But I consider this as possible problem too. Even if I do trigger a short text.-to-speech output with every data reception, the app doesn't get killed earlier, I think its not an issue of too much data processing in the CPU. What I do with the data is, to decode it, to store it in an sqlite DB. I can even restart timers in the background during that processing (what I actually of course don't do). In the logs I can see that when data is received, the phones wakes up, and timer start running normally (I tested a 500ms cycle). Then after 5-10 sec. timers fall to sleep again, enough time to process my tasks. Interesting finding, but I don't use timers in the background. What I assume is that the app awakes with more or less normal features and performance, probably on a lower CPU task priority, but since I have no other apps running at the same time there should be no problem. These app killings happen already in testflight, and in debug, so before Apple is asking for a reason. When I add some unused background modes to keep apps running, as workaround, then Apple might ask for the reason I do require this, and I shall explain the functionality. In my last workaround Apple noted that I shouldn't put an unused background mode. So I've tried to remove that, but maybe I could explain to Apple that I need this to keep the app running in background ? Would they accept this, I think they don't but never checked that ? One possibility would be to invent a pseudo-function, which is not really needed in the app, but what I could show and explain to Apple as reason Edit: Another possibility beside the timings could be the ressources: I don't really clean up all available ressources, and since my app runs alone in a huge memory space, thats why I think iOS is likely not getting into an out-of-memory situation. Or did anybody has seen such crashes or other issues by not freeing memory ressources ? Did Delphi implements already some kind of freeing ressources when entering background, like clearing imagelists, etc. ? I'm afraid that is not done. Edit 2: The same app, 1:1, only with added bluetooth-peripheral background mode seems to keep the app active, and not get killed. This are the same findings as I had before, used as workaround, but I think this is against Apples requirements (unused BG mode), und will be likely to be rejected. This cannot be the right solution, although it seems to work, isn't there any other clean option ? Edit 3: Not quite ready with Edit 2, the app seems still active right now, also data is received in the logs, but the text-to-speech function isn't working in background any more (in foreground it still does). Only sometimes this do speak in background, but maybe this issue is something else, maybe still some timer issues I have to check with TTS.- 6 replies
-
- ios
- bluetooth le
-
(and 3 more)
Tagged with:
-
iOS Bluetooth LE with background-central stops after 1-10 minute
Rollo62 replied to Rollo62's topic in Cross-platform
To illustrate the problem I want to show some log file, from the background mode //--> I'm starting BLE connection in foreground, the (F) shows when I'm in FG, the (B) means background 20:47:42.454 (F) - TS4Log: BLE_W: EvOnTimerProcess (2i) IsDiscoveringDev 20:47:42.962 (F) - TS4Log: BLE_W: <==== BLE DEVICE_READY 20:47:42.962 (F) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 //--> The BLE MEASURE means: a data package received from the IoT device. 20:47:42.963 (F) - TS4Log: BLE_W: <==== BLE DEVICE_ENTER 20:47:42.964 (F) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 1 //--> The BLE TTS means: a test Tts speech output (saying "1") is launched, I can hear the TTS 20:47:44.406 (F) - TS4Log: BLE_W: EvOnTimerProcess (2i) IsDiscoveringDev 20:47:44.906 (F) - TS4Log: BLE_W: EvOnTimerProcess (2i) IsDiscoveringDev 20:47:45.407 (F) - TS4Log: BLE_W: EvOnTimerProcess (2i) IsDiscoveringDev 20:47:45.908 (F) - TS4Log: BLE_W: EvOnTimerProcess (2i) IsDiscoveringDev 20:47:46.408 (F) - TS4Log: BLE_W: EvOnTimerProcess (2i) IsDiscoveringDev 20:47:46.893 (F) - TS4Log: COMMN: <==== APP_EVENTS WillBecomeInactive 20:47:46.893 (F) - TS4Log: COMMN: <==== APP_EVENTS_WILL_BECOME_INACTIVE 20:47:46.893 (F) - TS4Log: BLE_W: TS4App_Feature_BLE.Request_Background (1) begin 20:47:46.893 (F) - TS4Log: BLE_W: TS4App_Feature_BLE.Request_Background (5) end 20:47:46.893 (F) - TS4Log: COMMN: TS4App_Feature_TtsSpeak.DoRefreshSettings: Background grant 20:47:46.893 (F) - TS4Log: COMMN: TS4App_Feature_TtsSpeak.DoRefreshSettings: Background granted 20:47:46.893 (F) - TS4Log: COMMN: TS4App_Feature_TtsSpeak.DoRefreshSettings: Background Audio request 20:47:46.894 (F) - TS4Log: COMMN: TS4App_Feature_TtsSpeak.DoRefreshSettings: Background Audio requested 20:47:47.557 (F) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 //--> The MEASURE means: a new data package arrived from the IoT device 20:47:47.558 (F) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 2 //--> And the BLE TTS count the no. of received data packages (saying "2") is launched, I can hear the TTS 20:47:47.853 (F) - TS4Log: COMMN: <==== APP_EVENTS EnteredBackground --> From here the app is in in BG mode, see (B)ackground (Timers stopped, receive thread throttled, BLE still receiving) 20:47:47.853 (B) - TS4Log: COMMN: <==== APP_EVENTS_ENTERED_BACKGROUND 20:47:48.245 (B) - TS4Log: BLE_W: TS4App_Feature_BLE.Request_Background (2) permit 20:47:48.245 (B) - TS4Log: BLE_W: TS4App_Feature_BLE.Request_Background (3) OK 20:47:48.245 (B) - TS4Log: BLE_W: TS4App_Feature_BLE.Request_Background (1) begin 20:47:48.245 (B) - TS4Log: BLE_W: TS4App_Feature_BLE.Request_Background (5) end 20:47:52.057 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 //--> The first BLE MEASURE in BG mode, all is OK 20:47:52.059 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 3 //--> The first BLE TTS in BG: (saying "3"), I can hear the TTS voice, all OK 20:47:56.617 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:47:56.619 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 4 20:48:01.177 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:01.179 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 5 20:48:05.737 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:05.741 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 6 20:48:10.297 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:10.300 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 7 20:48:14.857 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:14.859 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 8 20:48:19.417 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:19.419 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 9 20:48:23.977 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:23.980 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 10 20:48:28.538 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:28.539 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 11 20:48:33.098 (B) - TS4Log: BLE_W: <==== BLE_MANAGER MEASURE: 1;t1;22;°C;1;12;t2;21;°C;1;2 20:48:33.100 (B) - TS4Log: BLE_W: <==== BLE TTS BG_NOTE: 12 --> Here suddenly its killed by Apple, but why, why, WHY ??? --> What else can be the reason to get killed suddenly, while TTS and BLE work fin in FG and BG ? --> BTW: In foreground it may run until the battery is down, so its not a leak or something.- 6 replies
-
- ios
- bluetooth le
-
(and 3 more)
Tagged with:
-
@Darian Miller Thanks for the nice article, I also miss inline variables since C/C++. I'm only afraid of the many hidden traps the first implementation might step into, under all strange real life conditions . So probably I will try to use them only carefully step by step, not massively, in the first versions. It's a nice feature, but also I can still live without it, as I did so many years. More important to me is, can the debugger handle this, do I get strange error messages.
-
Hi there, usually VmWare provides install procedure very nicely: download Macos installer .app from AppStore, then create new VM and drop it into. This works on some Mac, but seems not to work on all Mac's, for some reasons only Apple knows. I had such case with an older MacBook Pro, and wanted to describe the procedure below. After some search in the Web I found a nice article about same issue with Mojave, so I took this as base. Since I'M on Catalina, I had to make some changes. Here are the steps in compressed form: Create VmWare Macos guest from ISO (Catalina) Web : Search "Update Macos Catalina" (or the OS you'll want), to find the right entry in the AppStore AppStore: Download "Install Macos Catalina.app" from AppStore. After download: Cancel the auto-start of installation on the host. Host : /Applications not always usable, as this is a special protected folder. Move "Install Macos Catalina.app" from /Applications to /Documents folder. VmWare : Select “Apple OS X” and then select “macOS 10.15” and Continue. VmWare : Choose “Create a new virtual disk” and continue. Either Finish or Customise Settings of the virtual machine. (e.g. 4 CPU, RAM 4GB, no 3D acceleration, Use full retina display, HD 60GB, etc.) The VM is prepared now, its needed to create a OSX Catalina ISO file. Host : Prepare a OSX Catalina ISO file from the installer. Terminal : Create a temporary virtual disk file in your tmp directory. hdiutil create -o /tmp/Catalina.cdr -size 12000m -layout SPUD -fs HFS+J Wait until finished created: /tmp/Catalina.cdr.dmg Terminal : When done, attach and mount the virtual disk hdiutil attach /tmp/Catalina.cdr.dmg -noverify -mountpoint /Volumes/install_build Wait until finished /dev/disk3 Apple_partition_scheme /dev/disk3s1 Apple_partition_map /dev/disk3s2 Apple_HFS /Volumes/install_build Terminal: [Optional] Check all available mountpoints diskutil list Host : Rename the installer, to be compatible with the following scripts, e.g. by Finder. ren "~/Documents/Install Macos Catalina.app" ~/Documents/MacosInstaller.app Installer is available now under the path: ~/Documents/macOsInstall.app Terminal : Extract and create an installable image from the download (with elevated rights). sudo ~/Documents/macOsInstall.app/Contents/Resources/createinstallmedia --volume /Volumes/install_build Wait until finished Password: Ready to start. To continue we need to erase the volume at /Volumes/install_build. If you wish to continue type (Y) then press return: y Erasing disk: 0%... 10%... 20%... 30%... 100% Copying to disk: 0%... 10%... 20%... 30%... 40%... 50%... 60%... 70%... 80%... 90%... 100% Making disk bootable... Copying boot files... Install media now available at "/Volumes/Install macOS Catalina" Terminal : Move the contents of the virtual disk into a .dmg file on your desktop mv /tmp/Catalina.cdr.dmg ~/Documents/InstallSystem.dmg Terminal : Detach the virtual disk (installer) hdiutil detach /Volumes/Install\ macOS\ Catalina Wait until finished "disk2" ejected. Termnal : Convert the newly created “InstallSystem.dmg” into an .iso file. hdiutil convert ~/Documents/InstallSystem.dmg -format UDTO -o ~/Documents/InstallSystem.iso Wait until finished Driver Descriptor Map (DDM : 0) read … Apple (Apple_partition_map : 1) read … (Apple_Free : 2) read … disk image (Apple_HFS : 3) read … .............................................................................. Time: 1m 39.113s Speed: 121.1M Byte/s Reduction: 0.0 % created: /Users/Rollo/Documents/InstallSystem.iso.cdr Host : Change the filetype of the file “InstallSystem.iso.cdr” in your documents, e.g. with Finder. Select the file and hit enter, now rename the file to “InstallSystem.iso” (with prompt); Select “Use .iso” VMware : In virtual machine manager right click the newly created VM (see above). Choose settings. VMware : Choose “CD/DVD (SATA)” Next GoTO the pull-down menu and browse to the “InstallSystem.iso” file just created. Check “CD/DVD (SATA)” connect checkbox VMware : Boot the new machine and follow Apple installation instructions. These steps worked well for me, and are maybe useful for somebody else too. Maybe in the new VmWare installer provide the Drag'n'Drop for all images flawlessly, in the future, and this won't be necessary any more.
-
Hi there, I'm wondering if there exists a comparision, or a checklist from a developers API perspective. So far the release notes seems to be close together for both OS. https://developer.apple.com/documentation/ios_ipados_release_notes/ios_ipados_13_5_beta_4_release_notes But the questions are, do we have already incompatibilities in some areas, and what will be the roadmap for both API's breaking changes ? I have not found much useful info yet, if you have some more insights I would be happy if you may share your thoughts.
-
I'm not very sure about ligatures, but I'm afraid they don't have fixed proportions. I wouldn't think that non-fixed fonts are a good choice for code editors.
-
Hi there, since I notices that I rarely need to touch iOS32 when preparing new iOS apps, while they are still compiles and bundled in the IPA, I wonder what phones will be affected. There is a detailled technical list, I hope that one is correct. It tells that > iPhone 5C, I can consider 64-Bit. I found a german article about such considerations, and another article that is a little contradictary. It tells that iPhone 5C should have modern CPU ( I assume 64-Bit), was produced still until 2017. While the other article tells us that iPhone 5S is from 2013 and iPhone 6/6 Plus is from 2014. Since I would consider >= iPhone 6/6 Plus as still quite modern and with a large user-base, can I be sure that they all run on iOS64 ? How much market impact has the iPhone 5S nowadays, which also means the slightly older OS iOS32 ? Another question is if "modern" CPU also means that they will guarantee to have OS iOS64 alone, or could they still run on iOS32 or both, depending on when they were updated or produced ? Is there the possibility, similar like in Windows, that both OS (32 and 64) might be running under one hardware ? Would be good to clarify from what model the OS iOS64 is definitively installed, for iPhone and iPad. Maybe there are some more official numbers out there, about how many iOS32 / iOS64 systems are in use.
-
How much market share do the iOS32 platforms still have ?
Rollo62 replied to Rollo62's topic in Cross-platform
Great, thats what I hoped But where did you find that number 98%, is that anything official ? -
Thats what I meant, this plugin is used in NextCloud, while NextCloud prepares all the hard parts of the configuration for you. Since the setup is really easy, it will prepare the SavreDAV automatically. With that you can simple test if that is OK for you, and then later strip down NextCloud to the SabreDAV configuration you need.
-
Addon to hide single visual controls in Form-Designer?
Rollo62 replied to PeterPanettone's topic in Delphi IDE and APIs
Maybe that helps: You can use the structure panel to access the hidden compenents you need. If you really need to see and touch the hidden piece, then you better move from VCL to FMX, there you can set them invisible 🙂 -
Function with just underscore _() seems to be valid
Rollo62 replied to Mike Torrettinni's topic in General Help
Who said that Delphi couldn't look like C++ -
arrays Help with design pattern
Rollo62 replied to Tntman's topic in Algorithms, Data Structures and Class Design
TListBox ist not ideal for large datasets, consider TListView instead -
What kind of server ? A simple and easy one is inlcuded in NextCloud.