升級到 Delphi 10.2 Tokyo 筆記:
- 更新 Xcode 8.3 & iOS 10.3 測試:
- macOS 沒問題(可 Debug)
- iOS Simulator 沒問題(可 Debug)
- iOS Device 64 有問題,無法發布到真機:(相同環境,換回 Delphi 10.1.2 可以正常發布到真機,但不能生成 IPA,在官方未提供 HotFix 前,不要更新 Xcode 8.3)注:因為 Xcode 8.3 已取消 xcrun PackageApplication 改用 xcodebuild

- 暫時解決方法:http://stackoverflow.com/questions/43094380/whats-the-replacement-for-xcodes-packageapplication/43550906#43550906
- 類型 TULargeInteger 需改用 ULARGE_INTEGER
- MapView 載圖已支持(iOS & Android):
- 不用改:FMX.Maps.Android.pas
- 不用改:FMX.Maps.iOS.pas
- Android 無法載入 GIF 問題已修正:https://quality.embarcadero.com/browse/RSP-11327
- 不用改:FMX.Graphics.Android.pas
- THTTPClient.BeginGet 回傳類型改變:
-
// Delphi 10.1.2 Berlin var HTTPResponse: IHTTPResponse; HTTPResponse:= HTTPClient1.BeginGet(...); // Delphi 10.2 Tokyo var AsyncResult: IAsyncResult; AsyncResult := HTTPClient1.BeginGet(...);
-
- 已修正:https://quality.embarcadero.com/browse/RSP-12693
左:Delphi 10.1.2 Berlin
右:Delphi 10.2 Tokyo
- Android 平台,啟動已沒有黑屏,之前使用的黑屏處理方法,可以不再需要使用了。
-
線程繪圖測試:Test Multi Thread Bitmap
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Multi-Threading_for_TBitmap,_TCanvas,_and_TContext3D
- 問題:FMX 使用 TPopup :
- 放一個 TEdit,運行時點入這個 Edit 沒有游標?
- 放一個 TMemo.ReadOnly = True 會彈出鍵盤?
- (ID: 30781 已修正)
問題:TMessageManager.DefaultManager.SubscribeToMessage 沒作用了?(實測只有 Android 平台有問題,其它平台沒問題)- 按 button1 ,並不會到 test

- 感謝 swish 提示,因為:Android 下 OnIdle 事件不會被正常觸發造成的,可以自己調用下 WakeMainThread 就能觸發一次 OnIdle

- 按 button1 ,並不會到 test
- (ID: 30781 已修正)
問題:使用 AddObject 造成重影問題(移動平台 Android & iOS 才有問題,Windows & macOS 測試沒問題)- 第一步: 使用 Rectangle1.AddObject(SubRectangle);
- 第二步: 使用 Rectangle2.AddObject(SubRectangle);
- 再反覆第一步,第二步,造成重影及卡頓?
- 官方QC:https://quality.embarcadero.com/browse/RSP-17663

- 測試工程:[測試]10.2_重影問題.zip
- 修正方法:
將 FMX.Controls.pas 復制到自己的工程目錄下,再修改如下:
procedure TStyledControl.SetNewScene(AScene: IScene); var OldScene: IScene; begin OldScene := FScene; inherited SetNewScene(AScene); if not (csDestroying in ComponentState) and (OldScene <> AScene) and (not IsUpdating) then {---> KillResourceLink; // 刪除代碼 {+++>}NeedStyleLookup; // 加入代碼:移動平台重影問題,改回 Delphi 10.1.2 Berlin 代碼,暫時修正 by Aone end;

- 問題:如果修改官方源碼 FMX.Types.pas 會造成無法編譯 macOS 平台(其它平台正常),錯誤如下:

- (ID: 30781 已修正)
問題:TTabControl 加二頁,第一頁放 TText,第二頁放 TColorPanel,真機運行后,點第二頁,無法立即顯示第二頁內容,需要再點一下,才會顯示。(Android 有問題 iOS 測試沒問題)
測試APK:[BUG]TabControl切頁無法即時顯示.apk
測試工程:[BUG]TabControl切頁無法即時顯示.zip
官方QC:https://quality.embarcadero.com/browse/RSP-17738 - 問題:(Delphi 10.1.2 正常)
場景一:在 TRectangle 里放一個 TButton(需要設置 ModalResult=mrOk),點 Button 后將 Rectangle 由主窗 RemoveObject 后出錯
場景二:如果一個 Frame 里有一個關閉按鈕,按下后關閉(使用 Frame.Parent := nil; 或 RemoveObject )就會出錯
測試工程:[BUG]TestRemoveObjectScene.zip
修正方法:關鍵問題是在 ModalResult = mrOk,只要不設置 Button.ModalResult 就不會出錯了(另外也可參考 10.1.2 的 FMX.Controls.pas 內 TControl.SetNewScene(AScene: IScene) 函數)
官方QC:https://quality.embarcadero.com/browse/RSP-17741 - (ID: 30781 已修正)
問題:Android 開啟相簿(使用官方例子),閃退?
官方例子:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Taking_Pictures_Using_FireMonkey_Interfaces - 問題:在 Linux 平台,uses System.Zip 會出錯?
官方QC:https://quality.embarcadero.com/browse/RSP-17811
解決方案:安裝 sudo apt-get install joe wget p7zip-full curl build-essential zlib1g-dev libcurl4-gnutls-dev - (ID: 30781 已修正)
問題:Android 平台使用 TControl.MakeScreenshot 若有文字,截圖后,文字會變成黑塊。 - ...
參考:
- QDAC: Delphi 10.2 非官方補丁合集 http://blog.qdac.cc/?p=4485
