Jump to content

Dave Nottage

Members
  • Content Count

    1336
  • Joined

  • Last visited

  • Days Won

    29

Posts posted by Dave Nottage


  1. 2 minutes ago, Kleiton said:

    [DCC Error] E2597 ld: file not found: libsqlite.a

    Either your installation of Delphi was incomplete, or the IDE library paths are invalid for iOS Device 64-bit. They should look something like this:
     

    image.thumb.png.bd39e49547e71cfa8e01162f4ad3e8d7.png

     

    At least including $(BDSLIB)\$(Platform)\release, which is where libsqlite.a is located


  2. This is the output from Java2OP:

     WebCamSample: the parent class (javax.swing.JPanel) is not found
     java.awt.Graphics: not found
     java.awt.Graphics2D: not found
     java.awt.event.ActionEvent: not found
     java.awt.event.KeyEvent: not found
     java.awt.event.MouseEvent: not found
     java.awt.event.WindowEvent: not found
     java.awt.geom.AffineTransform: not found
     java.awt.image.BufferedImage: not found
     java.awt.print.PageFormat: not found
     javax.swing.JFrame: not found
     javax.swing.JPanel: not found
     javax.swing.Timer: not found
     topcodes.DebugWindow: the parent class (javax.swing.JPanel) is not found
     topcodes.TopCodePrinter: the parent class (javax.swing.JPanel) is not found

    So presumably you'll need to include the relevant jars that include javax.swing and java.awt, when importing 


  3. 10 hours ago, Alex40 said:

    I am already with Rad Studio 11.1, but I am still getting this error:

    Are you using TLocationSensor? That's where it was fixed. If you're attempting to use JLocationListener on its own, you'll need to modify the class that implements it, such as in the Unit14.pas attachment, here: https://quality.embarcadero.com/browse/RSP-39566


  4. 3 hours ago, Alex40 said:

    If I upgrade to Rad Studio 11.2 is it possible to fix this issue?

    Yes, the issue is fixed in 11.1, so 11.2 also has the fix.

    3 hours ago, Alex40 said:

    Is it mandatory to target sdk version 31 (with exported=true) in the android manifest template if I want to run fully compatible app on Android 12?

    It's only mandatory if publishing to the Play Store.

    3 hours ago, Alex40 said:

    The error that the .apk file throws is: Error parsing the file. (Same thing happens on Android 10 device)

    It should report the line/char that it fails on, so you should be able to tell where the problem is


  5. 1 hour ago, JohnLM said:

    So now, I am wondering if anyone ever did use the Indy TidHttp component on these much older androids successfully

    Up until a few months ago, I was using them (for my client) on Android devices with version 4.4. 

    11 hours ago, ertank said:

    I think Dave is trying to tell you to read highest scored Remy's answer there.

    Exactly.


  6. 46 minutes ago, MikeZ87 said:

    I'm not really sure how to use that

    I'm not sure what is unclear about it. The method takes a single parameter that is an object method with a single parameter that is a TBitmap: https://docwiki.embarcadero.com/Libraries/Alexandria/en/FMX.Maps.TMapScreenshotRecipient 

    i.e. you would declare a method on an object (such as the form that contains the MapView), and pass that when calling Snapshot, e.g:

    procedure TForm1.SnapshotRecipient(const ABitmap: TBitmap);
    begin
      // Do whatever you will with ABitmap, here
    end;

    ..and call Snapshot like this, for example:

    MapView1.Snapshot(SnapshotRecipient)

     

    • Like 1

  7. Just now, MirDurmaz said:

    A valid "aps-enviroment" authorization key was not found for the application

    Does the App ID you are using have Push Notification entitlement?:

    image.thumb.png.7ffb0a546325aa1039ec4fe068d0f8ab.png

     

    You set this on the Apple Developer website. If you have not already set this entitlement, after you do so you will need to recreate the Provisioning Profile


  8. 41 minutes ago, Michael W. S. said:

    I hope the final version will be simpler to deploy

    Well, that's the aim. It's one of either stick with the batch files (which is complicated to use), create a completely external tool (less complicated), or include it in an expert such as Codex (hopefully fairly simple to use). The aim is also to have the process generic so that it can be applied to other projects when needed. There's a link to a Quality Portal report in the readme which is essentially asking for the process to be included in Delphi itself. 


  9. I've created a gist here, but also including it in this post:

    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation,
      System.TypInfo,
      Macapi.ObjectiveC, Macapi.Helpers,
      iOSapi.UIKit, iOSapi.Foundation;
    
    type
      IShakeView = interface(UIView)
        ['{21B0BCE6-8D07-40BA-943C-DC4B1A99D3CA}']
        function canBecomeFirstResponder: Boolean; cdecl;
        procedure motionBegan(motion: UIEventSubtype; withEvent: UIEvent); cdecl;
        procedure motionEnded(motion: UIEventSubtype; withEvent: UIEvent); cdecl;
      end;
    
      TShakeView = class(TOCLocal)
      private
        FOnShake: TNotifyEvent;
        procedure DoShake;
        function GetView: UIView;
        procedure InitView;
      protected
        function GetObjectiveCClass: PTypeInfo; override;
      public
        { IShakeView }
        function canBecomeFirstResponder: Boolean; cdecl;
        procedure motionBegan(motion: UIEventSubtype; withEvent: UIEvent); cdecl;
        procedure motionEnded(motion: UIEventSubtype; withEvent: UIEvent); cdecl;
      public
        constructor Create;
        procedure BecomeFirstResponder;
        property View: UIView read GetView;
        property OnShake: TNotifyEvent read FOnShake write FOnShake;
      end;
    
      TForm1 = class(TForm)
        Label1: TLabel;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        FShakeView: TShakeView;
        procedure ShakeViewShakeHandler(Sender: TObject);
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    uses
      FMX.Platform.iOS;
    
    { TShakeView }
    
    constructor TShakeView.Create;
    begin
      inherited;
      InitView;
    end;
    
    procedure TShakeView.InitView;
    var
      LView: Pointer;
    begin
      // Using a zero-sized rect because this view won't actually be seen
      LView := GetView.initWithFrame(CGRectFromRect(TRectF.Empty));
      if GetObjectID <> LView then
        UpdateObjectID(LView);
    end;
    
    procedure TShakeView.BecomeFirstResponder;
    begin
      GetView.becomeFirstResponder;
    end;
    
    function TShakeView.canBecomeFirstResponder: Boolean;
    begin
      Result := True;
    end;
    
    procedure TShakeView.DoShake;
    begin
      if Assigned(FOnShake) then
        FOnShake(Self);
    end;
    
    function TShakeView.GetObjectiveCClass: PTypeInfo;
    begin
      Result := TypeInfo(IShakeView);
    end;
    
    function TShakeView.GetView: UIView;
    begin
      Result := UIView(Super);
    end;
    
    procedure TShakeView.motionBegan(motion: UIEventSubtype; withEvent: UIEvent);
    begin
      //
    end;
    
    procedure TShakeView.motionEnded(motion: UIEventSubtype; withEvent: UIEvent);
    begin
      if withEvent.subtype = UIEventSubtypeMotionShake then
        DoShake;
    end;
    
    { TForm1 }
    
    constructor TForm1.Create(AOwner: TComponent);
    begin
      inherited;
      FShakeView := TShakeView.Create;
      FShakeView.OnShake := ShakeViewShakeHandler;
      WindowHandleToPlatform(Handle).View.addSubview(FShakeView.View);
      Button1Click(Button1);
    end;
    
    destructor TForm1.Destroy;
    begin
      FShakeView.Free;
      inherited;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      FShakeView.BecomeFirstResponder;
      Label1.Text := 'Waiting for shake';
    end;
    
    procedure TForm1.ShakeViewShakeHandler(Sender: TObject);
    begin
      Label1.Text := 'Shaked me!';
    end;
    
    end.

     

    • Like 3

  10. WindowInsetsControllerCompat is part of AndroidX:

     

    https://developer.android.com/reference/androidx/core/view/WindowInsetsControllerCompat

     

    Being able to use AndroidX with Delphi 10.4.2 would be an immense task - I started down that road, and ended up abandoning the idea. Delphi 11 supports AndroidX, however you would still need to import (e.g. using Java2OP) the WindowInsetsControllerCompat class as it is not in the Android RTL units in Delphi 11. Given the example you linked to, you'd also need to import ViewCompat, and perhaps other classes as well.

     


  11. 3 hours ago, Raymond Ng said:

    When try deploy a New Blank App to simulator, following error appear,

    You appear to be using an Intel-based Mac. Support for iOS Simulator is for M1 or M2 based Macs only.

×