Jump to content

Dave Nottage

Members
  • Content Count

    1279
  • Joined

  • Last visited

  • Days Won

    28

Posts posted by Dave Nottage


  1. 5 minutes ago, TTSander said:

    I'm trying to generate a custom classes.dex file for our android app because I need to include a specific .jar-file

    What is the jar file, and is there some reason why just adding the jar to the project is not sufficient?


  2. 2 hours ago, Fudley said:

    However it is never overwritten

    Overwrite can be somewhat misleading. It refers to what happens when the file is deployed from the local file to the application package, not whether the file is overwritten when the app starts - this process occurs in the System.StartUpCopy unit (in the rtl\common folder of the Delphi source), and as evidenced by line 83 (at least in Delphi 12.1):

      if not FileExists(DestFileName) then //do not overwrite files

    ..when the files are put in their final destination, if the file exists it is not overwritten. A couple of possible workarounds:

     

    1. Patch the System.StartUpCopy unit so that it does overwrite 


    2. Use files with "versioned" filenames, e.g. fudley-1.0.0.db, and replace the entry in the deployment with the new version. In your apps startup code, look for files using pattern matching, e.g:

    uses
      System.IOUtils;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      LDBFiles: TArray<string>;
    begin
      LDBFiles := TDirectory.GetFiles(TPath.GetDocumentsPath, 'fudley-*.db', TSearchOption.soTopDirectoryOnly);
      // If there's only ever one file, it should be the value in LDBFiles[0], so rename that to fudley.db 
    end;

     


  3. 17 minutes ago, Lars Fosdal said:

    Took me a while to get past all the Ios island travel tips before finding this: https://developer.apple.com/design/human-interface-guidelines/live-activities

    Same thing happened to me re Ios Island 🙂

     

    Following the live activities link leads to: https://developer.apple.com/documentation/ActivityKit/displaying-live-data-with-live-activities

     

    Which talks about using Widget Extensions, which are yet to be possible in Delphi, however there's a slim chance that the extension can "talk" to Delphi code: https://blog.grijjy.com/2018/11/15/ios-and-macos-app-extensions-with-delphi/

     

    I have very little optimism about the possibility

     

    • Like 2
    • Thanks 1

  4. 6 hours ago, Peter J. said:

    I don't even have sdk 32 installed!

    targetSdkVersion refers to the highest API level that your app can target, not which API level in your SDK that you built against. If Play Store says your app targets API level 32, check AndroidManifest.xml in the project output folder for which you built the app for Play Store. You may just need to do a clean and rebuild to ensure that AndroidManifest.xml is updated.


  5. On 3/21/2024 at 5:44 AM, Rollo62 said:

    The ExoPlayer in its old form is deprecated, does this Alcinoe library also works in the new Media3-Version?

    No - the Alcinoe implementation is based on the old ExoPlayer (in the com.google.android.exoplayer2 namespace). I am working on an implementation that uses Media3, but only just today have experimental code working that plays a video from a nominated URI.

    • Like 2

  6. 2 minutes ago, Fudley said:

    How to browse for image files on the users android phone.

     

    Is this possible without using intents?

    Browsing outside of the application itself requires intents.

    2 minutes ago, Fudley said:

    If not, is there a library which can be used for this?

    You could use Kastri, which has this Files Selector demo.

    • Like 1

  7. 1 hour ago, gwideman said:

    Tools > Getit Package Manager gets me the Getit Package Manager window. Then what?

    This is GetIt Package Manager configured to show what patches/hotfixes are available, and an arrow pointing to what to select to show whether updates are available:

     

    image.thumb.png.200b8d12f4f2321117e581c0c0ec781b.png

    • Like 1

  8. On 3/10/2024 at 10:58 PM, Juande said:

    I create a blank app in Android with only a button and the splash screen disabled

    I'm curious as to what settings you changed to disable the splash screen. I can't work it out - I unchecked "Include Splash Images" but it still shows the splash. I guess there's more to it than that? 


  9. I'm looking at extracting compiler options from .dproj files, and looked for an existing "map" of options to PropertyGroup entries, but came up blank, so I figured I'd create one. I'm hoping that others could help verify what I've come up with as well as fill in some blanks. The following was created from the output of the help from dcc32, and from looking through the DCCStrs unit for what appears to match. The value from DCCStrs is on the line following each option. The numbers after some of the DCCStrs value are what also appear in the DCCStrs source. Those I couldn't match are signified with: ???

    Compiler Options:
    
    -A<unit>=<alias> = Set unit alias
    DCC_UnitAlias
    
    -B = Build all units
    DCC_BuildAllUnits
    
    -CC = Console target
    DCC_ConsoleTarget
    
    -CG = GUI target
    ???
    
    -D<syms> = Define conditionals
    DCC_Define
    
    -E<path> = EXE/DLL output directory
    DCC_ExeOutput
    
    -F<offset> = Find error
    DCC_FindError
    
    -GD = Detailed map file
    DCC_MapFile
    
    -GP = Map file with publics
    DCC_MapFile
    
    -GS = Map file with segments
    DCC_MapFile
    
    -H = Output hint messages
    DCC_Hints
    
    -I<paths> = Include directories
    DCC_IncludePath
    
    -J = Generate .obj file
    DCC_ObjOutput
    
    -JPHNE = Generate C++ .obj file, .hpp file, in namespace, export all
    ???
    
    -JL = Generate package .lib, .bpi, and all .hpp files for C++
    ???
    
    -K<addr> = Set image base addr
    DCC_ImageBase
    
    -LE<path> = package .bpl output directory
    DCC_BplOutput
    
    -LN<path> = package .dcp output directory
    DCC_DcpOutput
    
    -LU<package> = Use package
    DCC_UsePackage
    
    -M = Make modified units
    DCC_MakeModifiedUnits
    
    -NU<path> = unit .dcu output directory
    DCC_DcuOutput
    
    -NH<path> = unit .hpp output directory
    DCC_HppOutput
    
    -NO<path> = unit .obj output directory
    DCC_ObjOutput
    
    -NB<path> = unit .bpi output directory
    DCC_BpiOutput
    
    -NX<path> = unit .xml output directory
    DCC_XmlOutput
    
    -NS<namespaces> = Namespace search path
    DCC_Namespace
    
    -O<paths> = Object directories
    DCC_ObjPath
    
    -P = look for 8.3 file names also
    DCC_OldDosFileNames
    
    -Q = Quiet compile
    DCC_Quiet
    
    -R<paths> = Resource directories
    DCC_ResourcePath
    
    -TX<ext> = Output name extension
    DCC_OutputExt
    
    -U<paths> = Unit directories
    DCC_UnitSearchPath
    
    -V = Debug information in EXE
    DCC_DebugInfoInExe
    
    -VR = Generate remote debug (RSM)
    DCC_RemoteDebug
    
    -VT = Debug information in TDS
    DCC_DebugInfoInTDS
    
    -VN = TDS symbols in namespace
    ??
    
    -W[+|-|^][warn_id] = Output warning messages
    DCC_Warnings
    
    -Z = Output 'never build' DCPs
    DCC_OutputNeverBuildDcps
    
    -$<dir> = Compiler directive
    DCC_Define
    
    
    Compiler Toggles:
    
    A8  Aligned record fields                   
    DCC_Alignment  (0, 1, 2, 4, 8)
    
    B-  Full boolean Evaluation                 
    DCC_FullBooleanEvaluations
    
    C+  Evaluate assertions at runtime          
    DCC_AssertionsAtRuntime
    
    D+  Debug information                       
    DCC_DebugInformation (0, 1, 2) [Depending on platform?]
    
    G+  Use imported data references           
    DCC_ImportedDataReferences
    
    H+  Use long strings by default             
    DCC_LongStrings
    
    I+  I/O checking                            
    DCC_IOChecking
    
    J-  Writeable structured consts             
    DCC_WriteableConstants   
    
    L+  Local debug symbols                     
    DCC_LocalDebugSymbols
    
    M-  Runtime type info                       
    DCC_RunTimeTypeInfo
    
    O+  Optimization                            
    DCC_Optimize
    
    P+  Open string params                      
    DCC_OpenStringParams
    
    Q-  Integer overflow checking               
    DCC_IntegerOverflowCheck
    
    R-  Range checking                          
    DCC_RangeChecking
    
    T-  Typed @ operator                        
    DCC_TypedAtParameter
    
    U-  Pentium(tm)-safe divide                 
    DCC_PentiumSafeDivide
    
    V+  Strict var-strings                      
    DCC_StrictVarStrings
    
    W-  Generate stack frames                   
    DCC_GenerateStackFrames
    
    X+  Extended syntax                         
    DCC_ExtendedSyntax
    
    Y+  Symbol reference info                   
    DCC_SymbolReferenceInfo (0, 1, 2) [Depending on platform?]
    
    Z1  Minimum size of enum types              
    DCC_MinimumEnumSize  (1, 2, 4)
    

     

     

    • Thanks 1

  10. 1 hour ago, Stano said:

    Is TFrame problem free?

    The biggest problem is when you create descendant forms (i.e. at design-time) where the ancestor contains frames. Otherwise, for me they're totally fine.

    • Like 1

  11. 18 minutes ago, bcvs said:

    When I read the documentation and different tutorials and forum posts this seems to be easyly done:

    Which forum posts, and which tutorials?

    19 minutes ago, bcvs said:

    Notification.SoundName:= MySoundfile;

    Sounds on Android are no longer associated with the notification itself, rather they are now associated with the channel via the SoundName property.

     

    Note that you need to add the mp3 file to the deployment using a RemotePath of res\raw, and use the filename without the extension for the SoundName on the channel, e.g. for mysound.mp3, use a value of mysound for SoundName.

     

    On iOS, you need to deploy the sound file with a RemotePath of .\, and use the actual filename for SoundName on the notification (i.e. not the channel)


  12. 23 minutes ago, Nick Blunda said:

    This work fine in Windows OS, but in macOS second synchronisation don't works (Labels remains empty).

    Looks like a bug - In the TPlatformCocoa.ShowWindowModal method in FMX.Platform.Mac, it never calls CheckSynchronize inside of the loop.

     

    In Delphi 12, modifying FMX.Platform.Mac.pas starting at line 4855:

          while True do
          begin
            CheckSynchronize; // <--- Add this line

    Fixes it.

    • Like 3
×