android - 使用 Amazon Maps V2 API 获取 java.lang.NoSuchFieldError
问题描述
我在亚马逊开发者论坛上发布了这个,但我想我也会在这里尝试看看是否有人有任何想法。至少也许这个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):在 com.amazon.geo.mapsv2.pvt.RemoteContextUtils.loadModule(RemoteContextUtils.java:152)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil.loadEngineContext(AmazonMapsRuntimeUtil.java:215)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil.access$100(AmazonMapsRuntimeUtil.java:50)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil$DefaultEngineLoader.createInstance(AmazonMapsRuntimeUtil.java:613)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil$DefaultEngineLoader.createInstance(AmazonMapsRuntimeUtil.java:608)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.pvt.LazyInitializer.get(LazyInitializer.java:41)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.util.AmazonMapsRuntimeUtil.getRemoteContext(AmazonMapsRuntimeUtil.java:325)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.MapsInitializer.initialize(MapsInitializer.java:54)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.MapFragment$InitializerTask.doInBackground(MapFragment.java:302)
E/AndroidRuntime(10981):在 com.amazon.geo.mapsv2.MapFragment$InitializerTask.doInBackground(MapFragment.java:299)
E/AndroidRuntime(10981):在 android.os.AsyncTask$2.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;
除了它是 CPU 规格之外,我没有找到太多关于它的内容supported_abis
,至少它如何应用于 Amazon 地图。这款平板电脑是否太旧而无法加载?这就是我必须测试的全部内容。为什么它会加载其他活动而无法加载此亚马逊地图 v2 片段?不尝试加载位置服务或任何东西。该片段被包装在一个简单的相对布局中。
任何帮助将非常感激。
解决方案
该SUPPORTED_ABIS
字段是 Android Build类的一部分。它是在 API 21 中引入的。
您的问题是您的 Kindle 没有运行 API 21。适用于 Kindle Fire HDX 2013 的 Fire OS 的最新版本是4.5.5.3,它基于 API 19/KitKat。
抱歉,但如果您想在 Fire OS 上进行测试,您需要获得至少运行 Fire OS 5 的 Kindle 设备,并且您的应用程序将无法在低于该版本的任何设备上运行。亚马逊有设置 Kindle 模拟器(有点)的说明,但它实际上只是带有普通 Android 的 Kindle 的硬件配置文件。不过,看看该应用程序将如何在 Fire OS 上运行就足够了。
推荐阅读
- ssl - 无法从 Hue 连接 Hive
- node.js - Bitbucket Pipeline 部署到 Elasticbeanstalk - 上传问题 - 未反映任何更改
- bots - 尝试使用 botUI 动态创建机器人
- spring - 带有 Spring Security 的 Spring Cloud Gateway
- angular - 在 createUserWithEmailAndPassword 方法中添加额外的 displayName
- python - Python - “和”运算符无法正常运行
- django - Django Rest Framework中的过滤日期(开始日期和结束日期之间的范围)
- qt - QML动画从底部到顶部过渡颜色
- c++ - 使用 WinHttp 的客户端认证(证书 + 私钥)
- android - 改造没有 OkHttp 的通用标头?