【问题标题】:PayPal.fetchDeviceReferenceTokenWithAppID() causes NullPointerException on Nexus 7PayPal.fetchDeviceReferenceTokenWithAppID() 在 Nexus 7 上导致 NullPointerException
【发布时间】:2013-07-24 15:29:33
【问题描述】:

我在我的一个项目中使用了 PayPal 的 MECL 库,它已经在六种设备上进行了测试并按预期工作。但是,当我在 Nexus 7 上对其进行测试时,在调用 PayPal.fetchDeviceReferenceTokenWithAppID() 方法时总是会抛出 NullPointerException:

07-24 23:26:11.466: W/System.err(28266): java.lang.NullPointerException 07-24 23:26:11.466: W / System.err(28266):在 libcore.net.UriCodec.encode(UriCodec.java:132) 07-24 23:26:11.466: W / System.err(28266):在 java.net.URLEncoder.encode(URLEncoder.java:57) 07-24 23:26:11.466: W/System.err(28266):在 com.paypal.android.a.c.g(未知来源) 07-24 23:26:11.466: W/System.err(28266): 在 com.paypal.android.a.c.e(未知来源)07-24 23:26:11.466: W/System.err(28266):在 com.paypal.android.a.c.b(未知来源) 07-24 23:26:11.466: W/System.err(28266): 在 com.paypal.android.a.d.run(未知来源)07-24 23:26:11.496: D/TilesManager(28266): 开始 TG #0, 0x672a6428 07-24 23:26:11.496: D/TilesManager(28266):来自框架的新 EGLContext:693dbd88 07-24 23:26:11.496:D/GLWebViewState(28266):重新初始化着色器 07-24 23:26:11.506:D/GLWebViewState(28266):重新初始化传输队列 07-24 23:26:12.566:D/dalvikvm(28266):GC_CONCURRENT 释放 1207K,10% 释放 13335K/14688K,暂停3ms+6ms,共55ms 07-24 23:26:13.136: E/错误(28266):身份验证失败,按钮未启用。 07-24 23:26:13.136:W/System.err(28266):java.lang.NullPointerException 07-24 23:26:13.136: W/System.err(28266): 在 com.paypal.android.a.c.a(未知来源)07-24 23:26:13.136: W/System.err(28266):在 com.paypal.android.a.c.e(未知来源) 07-24 23:26:13.136: W/System.err(28266): 在 com.paypal.android.a.c.b(未知来源)07-24 23:26:13.136: W/System.err(28266):在 com.paypal.android.a.d.run(未知来源)

请注意,完全相同的 APK 可以在 Galaxy Nexus、S3 甚至 Nexus 7 模拟器上运行而不会出现问题,它只是在 Nexus 7 上停止工作。我在这个阶段完全不知所措,所以欢迎任何帮助。

【问题讨论】:

  • 示例应用程序能否在 Nexus 7 上运行?我猜它不会,因为这看起来像是一个环境问题。
  • 它没有。环境问题是什么意思,我该如何解决?

标签: android paypal


【解决方案1】:

我没有使用过 Paypal 的 MECL 库,但我想制作一些通用的 cmets,可以帮助您自己解决这个问题。

在这种情况下,NPE 可能归因于以下原因之一:

1) 发生 NPE 是因为您没有将所有必需的库链接到您的 APK 并且 Nexus 7 正在尝试调用其他设备没有的东西。这相对不太可能,但是成功设备的 logcat 跟踪应该证明或反驳这一点。即,如果您的其他设备的 logcat 跟踪显示 PayPal.fetchDeviceReferenceTokenWithAppID 工作正常 - 那么这不是问题。

2) NPE 发生是因为您的 Nexus 7 缺少某些内容(或需要更新)。这就是我所说的环境问题。仔细检查 Paypal 文档以了解必要的软件级别。如果示例应用程序可以在其他设备上运行,但不能在 Nexus 7 上运行,那么这可能是问题的原因。是不是 Paypal 不再支持 MECL 了? - 这是否意味着必要的更新已被撤回?PayPal.fetchDeviceReferenceTokenWithAppID 看起来像是您在交易开始时会做的事情,所以我(仍然)猜测这是一个环境问题。

我无法告诉您具体的问题是什么,但希望这会帮助您取得一些进展。

【讨论】:

  • 如前所述,PayPal.fetchDeviceReferenceTokenWithAppID 在所有其他设备上都能完美运行。是的,MECL 不再受支持,但出于历史原因,我们在此项目中使用它。令人沮丧的是,该库被混淆了,因此不仅很难确定问题的根源,而且要修复它,我们可能必须自己反编译并以这种方式修改它。
【解决方案2】:

我们最终更新了应用程序和服务器以使用新的 PayPal Android API (https://github.com/paypal/PayPal-Android-SDK),现在似乎可以在所有设备上运行。

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 2017-05-16
    • 1970-01-01
    • 2014-06-09
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多