Delphi Android 64-bit In-App-Purchase Fix
Marco Cantu
19/12/2019
We have found a severe issue with the TInAppPurchase component on Android 64-bit and here is a workaround you can apply directly to your code.
After our release of RAD Studio 10.3.3, which includes for the first time Delphi Android 64-bit support, a few customers have reported issues with when recompiling applications that use the TInAppPurchase component. When these applications are compiled for 64-bit Android and runtime they raise an access violation.
You can see a couple of reports at Как увидеть ссылки? | How to see hidden links? and Как увидеть ссылки? | How to see hidden links?.
These reports were escalated yesterday by two different customers, and we had our team have a look. It turns out we missed one of the required steps for migration to 64-bit in that component, namely shifting a data type from Cardinal (same size on all platforms) to NativeUInt (which is platform specific). This is achieved by using the TFmxHandle type.
The workaround to address the issue is to make a copy of the FMX.Helpers.Android.pas file, part of the FMX sources (installed by default under C:\Program Files (x86)\Embarcadero\Studio\20.0\source\fmx), copy into the project folder, add it to the project, and change line 250 of that unit from
Code:
FTimerHandle: Cardinal;
to:
Code:
FTimerHandle: TFmxHandle;
You can see the code snippet in the image below. This addresses the problem (and we'll include the fix in the next release of RAD Studio).
Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy.
Marco Cantu
19/12/2019
We have found a severe issue with the TInAppPurchase component on Android 64-bit and here is a workaround you can apply directly to your code.
After our release of RAD Studio 10.3.3, which includes for the first time Delphi Android 64-bit support, a few customers have reported issues with when recompiling applications that use the TInAppPurchase component. When these applications are compiled for 64-bit Android and runtime they raise an access violation.
You can see a couple of reports at Как увидеть ссылки? | How to see hidden links? and Как увидеть ссылки? | How to see hidden links?.
These reports were escalated yesterday by two different customers, and we had our team have a look. It turns out we missed one of the required steps for migration to 64-bit in that component, namely shifting a data type from Cardinal (same size on all platforms) to NativeUInt (which is platform specific). This is achieved by using the TFmxHandle type.
The workaround to address the issue is to make a copy of the FMX.Helpers.Android.pas file, part of the FMX sources (installed by default under C:\Program Files (x86)\Embarcadero\Studio\20.0\source\fmx), copy into the project folder, add it to the project, and change line 250 of that unit from
Code:
FTimerHandle: Cardinal;
to:
Code:
FTimerHandle: TFmxHandle;
You can see the code snippet in the image below. This addresses the problem (and we'll include the fix in the next release of RAD Studio).
Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy.