升级Parse Android SDK后运行PushServiceApi26.IllegalArgumentException

升级Parse Android SDK后运行PushServiceApi26.IllegalArgumentException,android,illegalargumentexception,Android,Illegalargumentexception,对于所有Android>=8.0(Oreo)的用户,我在开发者控制台中经常遇到崩溃。它是在将Parse从1.15.8升级到1.16.3之后开始出现的 由于没有太多信息,我尝试签入触发IllegalArgumentException的代码。这实际上是有意义的,以下是解析1.16.x版本的GcmBroadcastReceiver的onReceive()代码: @Override @CallSuper public void onReceive(Context context, Intent int

对于所有Android>=8.0(Oreo)的用户,我在开发者控制台中经常遇到崩溃。它是在将Parse从1.15.8升级到1.16.3之后开始出现的

由于没有太多信息,我尝试签入触发
IllegalArgumentException
的代码。这实际上是有意义的,以下是解析1.16.x版本的
GcmBroadcastReceiver的onReceive()
代码:

@Override
@CallSuper
public void onReceive(Context context, Intent intent) {
    PushServiceUtils.runService(context, intent);
}
// In Parse 1.15.8, onReceive was instead calling 
// ServiceUtils.runWakefulIntentInService(context, intent, PushService.class);
PushServiceUtils
中:

public static boolean runService(Context context, @NonNull Intent intent) {
    if (USE_JOBS) { // USE_JOBS : Android SDK >= 8.0 (Oreo)
        return PushServiceApi26.run(context, intent);
    } else {
        return PushService.run(context, intent);
    }
}
虽然我设法找到了bug发生的地方,但我对Android(尤其是推送通知)的了解还不够,无法理解到底发生了什么。在清单中,相关行:

<meta-data
        android:name="com.parse.push.gcm_sender_id"
        android:value="id:xxxxxxx" />


<service android:name="com.parse.PushService" />

<receiver
    android:name="com.parse.GcmBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >

    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

        <category android:name="bruce.worker.android" />
    </intent-filter>

</receiver>


但我还是找不到原因。任何帮助都将不胜感激

我通过在带有Oreo的设备上重现问题,找到了解决方案。stacktrace中的错误更精确:

Android java.lang.IllegalArgumentException:没有这样的服务

多亏了我,我得到了解决办法

我只需在清单中添加以下内容:

<service android:name="com.parse.PushServiceApi26"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="true"/>


发布你的gradle文件!!嗨,对不起,我已经加了一个,还有吗???我以为服务中断了,因为添加了
27.0.2
而不是
26.1.0