使用亚马逊地图 V2 java.lang.NoSuchFieldError API

Getting java.lang.NoSuchFieldError with Amazon Maps V2 API

我在 Amazon 开发者论坛上发布了这个,但我想我也会在这里尝试看看是否有人有任何想法。至少 supported_abis 问题可以稍微解释一下?较新的地图 v2 API 是否不再包含此字段?地图调试和发布注册已使用我当前拥有的调试和发布密钥库完成。如 logcat 所示,地图 v2 正在加载(当然会出现错误)。

compileSdkVersion 28
minSdkVersion 19
targetSdkVersion 28
multiDexEnabled true
buildToolsVersion '28.0.3'

我正在尝试将现有 Android 应用程序迁移到 Fire OS,但无法加载地图 v2。

使用这个:

<fragment
   android:id="@+id/mission_map"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   class="com.amazon.geo.mapsv2.MapFragment" />
   setContentView(R.layout.mission_map_layout);

我继续在日志中收到此错误:

原因:java.lang.NoSuchFieldError: android.os.Build.SUPPORTED_ABIS

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.pvt.RemoteContextUtils.loadModule(RemoteContextUtils.java:152)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil.loadEngineContext(AmazonMapsRuntimeUtil.java:215)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil.access0(AmazonMapsRuntimeUtil.java:50)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil$DefaultEngineLoader.createInstance(AmazonMapsRuntimeUtil.java:613)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil$DefaultEngineLoader.createInstance(AmazonMapsRuntimeUtil.java:608)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.pvt.LazyInitializer.get(LazyInitializer.java:41)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil.getRemoteContext(AmazonMapsRuntimeUtil.java:325)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.MapsInitializer.initialize(MapsInitializer.java:54)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.MapFragment$InitializerTask.doInBackground(MapFragment.java:302)

E/AndroidRuntime(10981): at com.amazon.geo.mapsv2.MapFragment$InitializerTask.doInBackground(MapFragment.java:299)

E/AndroidRuntime(10981): at android.os.AsyncTask.call(AsyncTask.java:288)

我正尝试在装有 Fire OS 4.5.5.3 的 Fire 平板电脑上 运行 它。难道这只是太老了运行吗?该应用程序是使用最新的 Android SDK (28) 和 gradle 文件构建的,很难回滚到旧版本。

其他活动和片段在整个应用程序中加载得很好,地图 v2 除外。

我使用本地 Maven 存储库添加了它。

这是真的:

return AmazonMapsRuntimeUtil.<em>isAmazonMapsRuntimeAvailable</em>(context) == com.amazon.geo.mapsv2.util.ConnectionResult.SUCCESS;

我在 supported_abis 上找不到太多东西,至少它是如何应用于亚马逊地图的,除了它是一个 CPU 规范。这款平板电脑是否太旧而无法加载?这就是我要测试的全部。为什么加载其他活动却无法加载此 amazon maps v2 片段?不要尝试加载位置服务或任何东西。该片段包裹在一个简单的相对布局中。

如有任何帮助,我们将不胜感激。

SUPPORTED_ABIS 字段是 Android Build class 的一部分。它是在 API 21.

中引入的

您的问题是您的 Kindle 不是 运行 API 21. Kindle Fire HDX 2013 的最新版本 Fire OS 是 4.5.5.3, which is based on API 19/KitKat

抱歉,如果您想在 Fire OS 上进行测试,您需要至少运行 Fire OS 5 的 Kindle 设备,您的应用将无法运行在那之下的任何事情。亚马逊有 instructions for setting up a Kindle emulator(有点),但它实际上只是具有正常 Android 的 Kindle 的硬件配置文件。不过,了解该应用程序在 Fire OS 上的工作方式就足够了。