0

我制作了一个简单的谷歌地图应用程序,它从网络浏览器控件调用地图 url,效果很好,但现在我试图通过使用 TMapView 控件在第二个应用程序中添加更多功能,但我无法让我的新应用程序运行.

我在 LG Q7+ 手机和 RAD Studio 10.3.3 上使用 32 位 Android

这也发生在 C++ 和 Pascal 版本的示例地图类型选择器中,所以我认为它一定与 FMX.Maps.Android 有关。

我也在我的第一个工作项目中尝试了它,但是一旦我添加了具有正确设置的 TMapView 控件并构建它,它就会以相同的方式崩溃,并在 FMX.Maps.Android.pas 文件中的第 1525 行出现空错误。这绝对不是我的代码:)

我猜最小的示例是使用 TMapView 控件创建一个 c++ 项目并填写所需的设置并运行或仅使用 Android 32 位设备运行 Map Type Selector 示例。

我添加了应用程序的所有正确使用权限,添加了谷歌地图服务权利,添加了我的特殊 API 密钥,就像我遇到的所有文章都说要让应用程序运行但我只是崩溃了:

"Project map_cpp.apk raised exception class EJNIException with message 'java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.ClassLoader java.lang.Class.getClassLoader()' on a null object reference'. 

截图: https ://i.imgur.com/OVwpSlY.png 碰撞

据我所知,我已经链接到了正确的 SDK。甚至尝试了多个 java SDK 版本都没有运气,同样的崩溃。我看不出调用堆栈有什么问题,但无论如何我绝对不是 java 或 pascal 程序员,而且对 RAD Studio 来说相当新。

查看 android 监视器,唯一让我印象深刻并且看起来可能存在身份验证错误的是:

"unable to connect to service com.google.android.gms.auth.key.retrieval.service.start" 

但我不能肯定,就像我之前说的,我遵循了在线设置指南。我正在链接到我在下面遵循的设置文章:

http://docwiki.embarcadero.com/RADStudio/Rio/en/Mobile_Tutorial:_Using_a_Map_Component_to_Work_with_Maps_(iOS_and_Android)

http://docwiki.embarcadero.com/RADStudio/Rio/en/Configuring_Android_Applications_to_Use_Google_Maps

安卓监视器日志:

03-28 09:45:57.559: I/rcadero.map_cp(28426): The ClassLoaderContext is a special shared library.
03-28 09:45:57.681: D/PhoneWindow(28426): windowLightStatusBar : false, disable View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
03-28 09:45:57.815: I/C:\src\rtl\source\startup\startup_android.cpp(28426): ###################### Calling __initialize_pascal_units
03-28 09:45:57.815: I/C:\src\rtl\source\startup\startup_android.cpp(28426): ### __initialize_pascal_units: start
03-28 09:45:57.815: I/C:\src\rtl\source\startup\startup_android.cpp(28426): ### _embtinit_start: 0x0x89491450  _embtinit_end: 0x0x89494884
03-28 09:45:58.345: I/C:\src\rtl\source\startup\startup_android.cpp(28426): ### __initialize_pascal_units: finished
03-28 09:45:58.431: D/OpenGLRenderer(28426): Skia GL Pipeline
03-28 09:45:58.701: I/Adreno(28426): QUALCOMM build                   : f161b04, I0380b38922
03-28 09:45:58.701: I/Adreno(28426): Build Date                       : 04/06/19
03-28 09:45:58.701: I/Adreno(28426): OpenGL ES Shader Compiler Version: EV031.25.03.03
03-28 09:45:58.701: I/Adreno(28426): Local Branch                     : mybranche9580cbd-6698-f10a-bcc9-1458d0b52ae8
03-28 09:45:58.701: I/Adreno(28426): Remote Branch                    : quic/gfx-adreno.lnx.1.0.r52-rel
03-28 09:45:58.701: I/Adreno(28426): Remote Branch                    : NONE
03-28 09:45:58.701: I/Adreno(28426): Reconstruct Branch               : NOTHING
03-28 09:45:58.701: I/Adreno(28426): Build Config                     : S L 6.0.7 AArch32
03-28 09:45:58.705: I/Adreno(28426): PFP: 0x005ff110, ME: 0x005ff066
03-28 09:45:58.712: I/ConfigStore(28426): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
03-28 09:45:58.713: I/ConfigStore(28426): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
03-28 09:45:58.762: W/System.err(28426): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.ClassLoader java.lang.Class.getClassLoader()' on a null object reference
03-28 09:45:58.762: W/System.err(28426):    at com.embarcadero.rtl.ProxyInterface.CreateProxyClass(ProxyInterface.java:16)
03-28 09:45:58.762: W/System.err(28426):    at android.app.NativeActivity.onStartNative(Native Method)
03-28 09:45:58.763: W/System.err(28426):    at android.app.NativeActivity.onStart(NativeActivity.java:223)
03-28 09:45:58.763: W/System.err(28426):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1392)
03-28 09:45:58.763: W/System.err(28426):    at android.app.Activity.performStart(Activity.java:7180)
03-28 09:45:58.763: W/System.err(28426):    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3045)
03-28 09:45:58.764: W/System.err(28426):    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
03-28 09:45:58.764: W/System.err(28426):    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
03-28 09:45:58.764: W/System.err(28426):    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
03-28 09:45:58.764: W/System.err(28426):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
03-28 09:45:58.765: W/System.err(28426):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1864)
03-28 09:45:58.765: W/System.err(28426):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-28 09:45:58.765: W/System.err(28426):    at android.os.Looper.loop(Looper.java:205)
03-28 09:45:58.765: W/System.err(28426):    at android.app.ActivityThread.main(ActivityThread.java:6991)
03-28 09:45:58.765: W/System.err(28426):    at java.lang.reflect.Method.invoke(Native Method)
03-28 09:45:58.766: W/System.err(28426):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
03-28 09:45:58.766: W/System.err(28426):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:884)

谢谢你的帮助!

4

1 回答 1

0

Dave Nottage 想出来了 - 链接如下:

“一些示例应用程序需要更新才能使用新的 Google Play 服务库。为此,在目标平台下的项目管理器中,展开目标 Android 平台,右键单击库并单击“将系统文件恢复为默认值”。重新构建应用程序并应该没问题。”

https://www.delphiworlds.com/2019/02/a-fix-for-using-tmapview-on-android-9-devices/#comment-9841

于 2020-03-29T03:09:19.613 回答