2016-03-24 49 views
0

我Roximity SDK不断地崩溃,Roximity SDK信标崩溃

这里是我的摇篮:

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
compile project(':cropper') 
compile project(':main') 
compile project(':ROXIMITY_SDK_1_3_73') 
compile 'com.mcxiaoke.volley:library:1.0.19' 
compile 'com.google.code.gson:gson:2.2.4' 
compile 'org.slf4j:slf4j-api:1.7.10' 
compile 'com.google.android.gms:play-services-base:8.4.0' 
compile 'com.google.android.gms:play-services-location:8.4.0' 
compile 'com.google.android.gms:play-services-ads:8.4.0' 
compile 'com.google.android.gms:play-services-identity:8.4.0' 
compile 'com.google.android.gms:play-services-gcm:8.4.0' 
compile 'org.apache.httpcomponents:httpmime:4.5.2' 
compile 'com.loopj.android:android-async-http:1.4.9' 
compile 'com.android.support:appcompat-v7:23.1.1' 

} 我的清单:

我根据提到的说明书,使用代码文档页面为http://docs.roximity.com/mobile/android/integration, In创建:

ROXIMITYEngine.startEngineWithOptions(this.getApplicationContext(), R.drawable.ic_launcher, null, this, null); 
createBroadcastRecievers(); 

定义:

private void createBroadcastRecievers(){ 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(ROXConsts.MESSAGE_FIRED); 
    intentFilter.addAction(ROXConsts.BEACON_RANGE_UPDATE); 
    intentFilter.addAction(ROXConsts.WEBHOOK_POSTED); 

    LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter); 
} 
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equals(ROXConsts.MESSAGE_FIRED)) { 
      MessageParcel messageParcel = (MessageParcel)intent.getParcelableExtra(ROXConsts.EXTRA_MESSAGE_PARCEL); 
      handleMessageFired(messageParcel); 
     } else if (intent.getAction().equals(ROXConsts.BEACON_RANGE_UPDATE)){ 
      String rangeJson = intent.getStringExtra(ROXConsts.EXTRA_RANGE_DATA); 
      handleBeaconRangeUpdate(rangeJson); 
     } 
    } 
}; 

现在,它的行为完全是不可思议。有时它根本没有检测到信标,并发送空包以作为回应。 有时会在几分钟内检测到信标,并且在更新一次或两次后大多会崩溃。 这里的崩溃报告: 致命异常:主要 过程:

显示java.lang.NullPointerException:尝试从外地“java.lang.String中android.location.Location.mProvider”读空 对象参考 at android.location.Location.set(Location.java:131) at android.location.Location。(Location.java:124) at com.roximity.sdk.location.RoxLocation。(RoxLocation.java:30 )在com.roximity.sdk.actions.bb(ActionManager.java:265) at com.roximity.sdk.actions.bc(ActionManager.java:213) at com.roximity.sdk.beacons.cc(RangingManager.java:169) at com.roximity.sdk.beacons.cb(RangingManager.java :107) at com.roximity.sdk.beacons.ca(RangingManager.java:84) at com.roximity.system.ble.dj(BluetoothScanController.java:286) at com.roximity.system.ble.f .run(BluetoothScanController.java:257) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop (Looper.java:145) at a ¶在java.lang.reflect.Method.invoke处使用(Native Method) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

我几乎试过所有可能的解决方案,这不是应用程序端的问题,也不是通过修改其推荐的代码来解决的。 任何解决方案将不胜感激。

回答

1

有几件事情,希望能有所帮助:

  • 最有关的事情我看到的是第二个参数,com.roximity.roximitysdkstarterkit.R.raw.roxstore,在您的通话ROXIMITYEngine.startEngineWithOptions()。该文档将该参数描述为“将显示通知的可绘制标识,例如R.drawable.ic_launcher。”将此参数替换为应用程序资源目录中绘图的ID。
  • 从您的gradel依赖关系看来,您似乎可能使用的是不受支持的SDK版本,1.3.71。与Google Play Services 8.4.0一起运行的最早支持的SDK版本是1.3.73。确保您使用的是支持的.aar并将其正确链接到您的项目。
  • Android兼容性v7,用于支持较旧版本的Android,依赖性也似乎从您的gradel依赖关系中缺失。请确保您将compile 'appcompat-v7:23.1.1'添加到您的依赖列表中。
  • 它也出现在您的依赖关系中,您正在编译整个Google Play服务库,并且还包括单个模块的行,但这在技术上并不错 - 您应该考虑只导入需要的Google Play服务模块你编码。关于ROXIMITY v1.3.73 SDK,唯一需要的模块是;基地,gcm和地点。

编辑

看你崩溃的堆栈跟踪,所提出的误差为空引用时mProvider领域被试图从一个位置对象检索。看起来这次崩溃是由于代码期望Location对象(可能来自FusedLocationApi),而是接收null。也许一些关于FusedLocationApi如何以及为什么可能会返回空对象的研究将是您继续努力的好地方。

这里有一些链接,让你开始:

Why is FusedLocationApi.getLastLocation null

FusedLocationApi.getLastLocation always null

+0

感谢您详细的答复,我试图与你所提到的所有解决方案,但仍没有运气并获得相同崩溃。根据支持团队的说法,除非他们更新sdk,否则没有解决方案,但即使在更新其sdk后,它仍然是相同的,并且他们对响应不好。 –