Fire App Builder启用Amazon IAP导致启动页卡顿问题
解决Fire App Builder启用Amazon IAP后启动页卡顿并抛出NullPointerException的问题
启用Amazon IAP订阅功能后,应用在启动页卡顿并抛出以下NullPointerException,关闭IAP功能后恢复正常:
E/SplashActivity: Failed to put data in cache for recipe java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.amazon.android.module.Module.getImpl(boolean)' on a null object reference at com.amazon.android.contentbrowser.helper.PurchaseHelper.initializePurchaseSystem(PurchaseHelper.java:145) at com.amazon.android.contentbrowser.helper.PurchaseHelper.<init>(PurchaseHelper.java:131) at com.amazon.android.contentbrowser.ContentBrowser.onAllModulesLoaded(ContentBrowser.java:758) at com.amazon.android.tv.tenfoot.ui.activities.SplashActivity$1.doInBackground(SplashActivity.java:119) ...
可能的原因与解决方案
1. 检查IAP模块配置是否正确
- 确认
app/src/main/assets/module_config.json中已正确注册Amazon IAP模块:{ "modules": [ { "name": "AmazonIAP", "class": "com.amazon.android.iap.AmazonIAPModule" } ] } - 验证
build.gradle中已引入Fire App Builder的IAP相关依赖,确保依赖版本与基础库一致。
2. 修复PurchaseHelper中的空指针问题
报错核心是调用Module.getImpl()时模块对象为null,需在PurchaseHelper.java第145行附近添加空值判断:
Module purchaseModule = ModuleManager.getInstance().getModule("AmazonIAP"); if (purchaseModule == null) { Log.e(TAG, "Amazon IAP module not found, skipping initialization"); return; } mPurchaseSystem = (PurchaseSystem) purchaseModule.getImpl(true);
这样可以避免模块未加载时触发崩溃,同时输出明确的日志便于排查。
3. 确认IAP SDK集成步骤完整
- 检查
AndroidManifest.xml是否添加了IAP必需的权限和组件:<uses-permission android:name="com.amazon.android.inapp.purchasing.Permission.NOTIFY" /> <service android:name="com.amazon.android.iap.ResponseReceiver" android:exported="true"> <intent-filter> <action android:name="com.amazon.android.inapp.purchasing.NOTIFY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> - 确保Amazon开发者后台的应用包名、签名与本地项目一致,且已创建对应的订阅商品。
- 测试设备需安装Amazon Appstore并登录有效账号(测试可使用Amazon提供的测试账号)。
4. 清理缓存并重建项目
- 执行Android Studio的
File -> Invalidate Caches...操作,清理缓存后Rebuild Project。 - 卸载设备上的旧应用,重新安装以避免旧配置缓存干扰。
内容的提问来源于stack exchange,提问作者Ben Halkum
相关产品推荐
相关产品推荐

