-
Content Count
1626 -
Joined
-
Last visited
-
Days Won
37
Everything posted by Dave Nottage
-
This is not necessarily true given past experience, however it has been true for a while now. Having said that, even if you discover that your install of Delphi does not work with the latest version of Xcode, it is possible to revert to an earlier one. It should be borne in mind however that (at time of writing) App Store requires at least Xcode 16. Side note: those using Delphi CE will find that (at time of writing) it will not work with Xcode 16 unless you take special measures.
-
The .apk file is created when you deploy, not Build/Compile.
-
If you're building for Development (as opposed to Application Store), it'll be in the Android64\Debug\(projectname)\bin folder, where (projectname) is the name of the project you are building.
-
Update the demo project which appears to be very, very old. See these instructions.
-
Android 15 and edge-to-edge enforcement
Dave Nottage replied to alejandro.sawers's topic in Cross-platform
Yes, it checks the Android version on the device, but also checks the targetSdkVersion value in the manifest. Check the AndroidManifest.xml file (i.e. not AndroidManifest.template.xml) in the project output folder to check what the value is for targetSdkVersion. -
Android 15 and edge-to-edge enforcement
Dave Nottage replied to alejandro.sawers's topic in Cross-platform
I'm puzzled as to how you get such an error in the code I posted just above this reply of yours, since there is no such reference in it. -
Android 15 and edge-to-edge enforcement
Dave Nottage replied to alejandro.sawers's topic in Cross-platform
uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Os; function IsFullScreen: Boolean; begin Result := (TAndroidHelper.Activity.getWindow.getAttributes.flags and TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_NO_LIMITS) > 0; end; function GetResourceHeight(const AResourceName: string): Single; var LID: Integer; LResources: JResources; begin Result := 0; LResources := TAndroidHelper.Context.getResources; LID := LResources.getIdentifier(StringToJString(AResourceName), StringToJString('dimen'), StringToJString('android')); if LID > 0 then Result := LResources.getDimensionPixelSize(LID) / TAndroidHelper.DisplayMetrics.density; end; function GetTargetSdkVersion: Integer; var LApplicationInfo: JApplicationInfo; begin LApplicationInfo := TAndroidHelper.Context.getPackageManager.getApplicationInfo(TAndroidHelper.Context.getPackageName, 0); Result := LApplicationInfo.targetSdkVersion; end; function CheckBuildAndTarget(const AValue: Integer): Boolean; begin Result := (TJBuild_VERSION.JavaClass.SDK_INT >= AValue) and (GetTargetSdkVersion >= AValue); end; function GetNavigationBarOffset: Single; begin if CheckBuildAndTarget(35) or IsFullScreen then Result := GetResourceHeight('navigation_bar_height') else Result := 0; end; function GetStatusBarOffset: Single; begin Result := GetResourceHeight('status_bar_height'); end; procedure TForm1.FormResize(Sender: TObject); begin if CheckBuildAndTarget(35) then begin Padding.Top := GetStatusBarOffset; if Screen.Width < Screen.Height then Padding.Bottom := GetNavigationBarOffset else Padding.Bottom := 0; end; end; -
Did you read the link (and subsequent comments at that link) that I provided? Also, you did not answer this:
-
On second thoughts, you might want to read this, especially if you have errors additional to the one you quoted:
-
What version of PAServer are you running? It should be: 14.3.14.5.
-
For this issue, it's likely you need to enable Secure File Sharing in the Entitlement List of the Project Options. As for targeting apps that can send MMS specifically, I don't see anything in the Delphi "built-in" code that supports this. I could extend the ShareItems feature in Kastri to cater for this, though.
-
The most likely answer is that the provisioning profile that the Delphi IDE is choosing does not have push notifications enabled. You can check this by opening Project Options, select Deployment > Provisioning, select iOS Device 64-bit Target, and the relevant Build Type you want to build for (e.g. Application Store). Delphi will then examine what provisioning profiles you have and select the most relevant one if it exists. If it does find one, it will show the path to it on the Mac, what the Application Identifier is for it, and the associated Certificate. One thing you should make sure of is that the CFBundleIdentifier value in the Version Info section of the Project Options matches the identifier in the provisioning profile you created that has Push Notifications enabled.
-
You have several TSpinEdit components in that application. Which one(s) are you renaming?
-
I seem to recall that can happen if Windows firewall is blocking it and/or perhaps the firewall on the Mac side
-
It would help to know what error messages there are, if any. Also, please indicate what happens when you follow these steps: Open the Project Options for your project On the left, select Deployment > Provisioning Select the relevant target i.e. iOS Device 64-bit Select a Build type of: iOS Device 64-bit - Development Then report whether or not a relevant provisioning profile is found
-
Possibly. Note that I am unsure as to whether the following will work, since I have not tested it. The steps are quite involved, so please take this into account before proceeding. In theory, the steps are to obtain the required .jar files, i.e. billing-7.0.0.jar play-services-base-18.3.0.jar play-services-basement-18.3.0.jar play-services-tasks-18.1.0.jar Which is the updated billing jar (of course), however the others are the versions of the jars that billing-7.0.0.jar is dependent on, of which Delphi 12.1 uses earlier versions. If you go to the Maven Repository site: https://mvnrepository.com/artifact/com.android.billingclient/billing/7.0.0 You can see the dependencies listed, as well as a link to the .aar file (which are in .zip format) that contains a classes.jar file that corresponds to billing-7.0.0.jar, i.e. you can rename the .aar to .zip, extract classes.jar and rename it to billing-7.0.0.jar. If you follow the links to the dependent jars (the links in the Version column of the dependencies list) - just the ones I have listed above, you can repeat the process of downloading the .aar, rename it to .zip, extract classes.jar and rename it to the relevant name. The next step would be to disable the "default" jars in Project Manager for your project, by navigating to Libraries node under the Android 32-bit target, right-clicking billing-6.0.1.dex.jar and clicking Disable, repeating this for play-services-base-18.1.0.dex.jar, play-services-basement-18.1.0.dex.jar and play-services-tasks-18.0.2.dex.jar, the repeat the process for the Android 64-bit target. Then, you would need to add the replacement jar files to the Android 32-bit target (they will not need to be added to Android 64-bit) by right-clicking the Libraries node, clicking Add, selecting the replacement jar files (listed above) and clicking OK. Next, you would need to edit the AndroidManifest.xml file in the project output folder (i.e. not AndroidManifest.template.xml), because Delphi 12.1 would be generating this line: (at least in theory - I do not have Delphi 12.1) <meta-data android:name="com.google.android.play.billingclient.version" android:value="6.0.1" /> Which will need to be changed to this: <meta-data android:name="com.google.android.play.billingclient.version" android:value="7.0.0" /> You would need to save this edited AndroidManifest.xml file somewhere convenient, perhaps in the root folder of your project. It needs to be added to the deployment of the project using Deployment Manager (Project | Deployment from the main menu in Delphi). You may note that there is an existing entry for the local name of AndroidManifest.xml. You will need to disable this existing entry by unchecking the checkbox, e.g: ..then add the modified version by clicking the button second from the left, and selecting the edited AndroidManifest.xml file. Note that if you later make any changes to your project that affect the Android manifest, you will need to repeat the manifest edit/copy steps. Hopefully, that should complete all the steps. Please remember the warning I made at the beginning 🙂
-
RESTDebugger fails where Postman succeeds
Dave Nottage replied to dcroghan's topic in Network, Cloud and Web
I had been working on a tool of my own (Slumber) but this looks like it will do pretty much everything I visioned. Thanks! -
pascal-process: A new library for running processes and redirecting their output.
Dave Nottage replied to pyscripter's topic in I made this
I tested it on macOS using this command: "/Applications/PAServer-23.3.app/Contents/MacOS/iosinstall" -q -c -t 5 -W Which ran as expected. This is the command PAServer issues when it wants to detect what devices are visible to the Mac. One thing to note: in the docs on your repo, it suggests using this in the OnRead (of which the parameters in the example do not match the actual source): TEncoding.ANSI.GetString(Bytes) Which might work elsewhere, but on macOS this works: TEncoding.Default.GetString(Bytes)- 23 replies
-
- open-source
- process
-
(and 1 more)
Tagged with:
-
There are many developers using Delphi 12 (including CE, based on Delphi 12.1) including deploying to Android. Yes, there can be issues with setting up the Android SDK, however it appears you're not actually following instructions properly. Your previous message: Has nothing to do with the problem being discussed at the time, namely the installation and configuring of the JDK (note: Not SDK/NDK - they are separate things). Once the supported JDK is installed, the SDK/NDK should install correctly. As mentioned before, it may involve having to uninstall the SDK/NDK item first, then reinstall.
-
Not sure what you mean by: "does not allow me to change". The edits for the Java settings are read only?
-
Part of the NDA you agreed to when you signed up was to not publicly mention that you are participating in the beta, nor any details about it, so you have already broken your NDA.
-
Did you follow the instructions at that link I gave? First, you should check whether or not the settings on the Java tab of the Android SDK settings match. If installing Delphi 12 CE, the version for the Eclipse Adoptium JDK might be slightly different. If the path does not even point to an Eclipse Adoptium JDK, you will need to install it, based on the other instruction at that link, i.e. "Use Tools | Manage Features in the Delphi menu to ensure that the Eclipse Temurin OpenJDK 17 (it appears on the right of the Manage Features window, towards the bottom)" Once you have the correct JDK installed, Delphi should be able to install the SDK/NDK successfully. You may need to use Tools | Manage Features to remove the SDK/NDK first, then reinstall the SDK/NDK
-
programmatically determine the edition of RAD Studio 12.3
Dave Nottage replied to dmitrybv's topic in Delphi IDE and APIs
From within the IDE? Use IOTAVersionSKUInfoService. Example: var LSKUInfoService: IOTAVersionSKUInfoService; begin LSKUInfoService := BorlandIDEServices as IOTAVersionSKUInfoService; Label1.Caption := Format('SKU: %s (%d)', [LSKUInfoService.SKUName, LSKUInfoService.SKU]); end; Oddly, for SKU the docs say: /// <summary> /// Return SKU identifier, possible values are: /// /// Professional = 2 /// Professional C/S = 3 /// Enterprise = 4 /// Architect = 5 /// CommunityEdition = 128 /// </summary> ..but in my install of Delphi (Enterprise), it returns 52. The SKUName value appears to be correct for me, though -
Start from here.
-
"please check your spam folder first, and then reach out to your Embarcadero sales representative or reseller, to ask for a new invite." I'm tagging @Ian Barker to see if can help.