我正在开发一个使用UrbanAirship接收PushNotifications的应用程序.
我的问题是,从今天早上开始,当使用takeOff初始化UrbanAirship时,我的应用程序崩溃了.
我正在使用Android Studio v2.1.1(稳定版)并更新了我的Build和Platform-Tools以使用最新版本.崩溃发生后,我通过使用旧版本的这些工具和不同的AndroID Studio版本(2.0,1.3和1.5)来测试它是否是由新工具引起的.所以我相信不应该是问题.
这是我使用的代码和我的LogCat中的堆栈跟踪:
UAirship.takeOff(this,Config.getoptions(),mAirshipReadyCallback);
getoptions返回以下内容:
public static AirshipConfigOptions getoptions() { return new AirshipConfigOptions.Builder() .setDevelopmentAppKey("Key") .setDevelopmentAppSecret("Secret") .setProductionAppKey("Key") .setProductionAppSecret("Secret") .setInProduction(!BuildConfig.DEBUG) .setGCMSender("Sender") .setProductionLogLevel(3).build();}
我的回调如下:
private UAirship.OnReadyCallback mAirshipReadyCallback = new UAirship.OnReadyCallback() { @OverrIDe public voID onAirshipReady(UAirship uAirship) { DefaultNotificationFactory notificationFactory; notificationFactory = new DefaultNotificationFactory(getApplicationContext()); notificationFactory.setSmalliconID(R.drawable.ic_push); notificationFactory.setLargeIcon(R.drawable.ic_launcher); try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { notificationFactory.setcolor(getcolor(R.color.main_List_item_text_enabled)); } else { notificationFactory.setcolor(getResources().getcolor(R.color.main_List_item_text_enabled)); } } catch (Resources.NotFoundException ex) { Timber.e(ex.getCause(),ex.getMessage()); notificationFactory.setcolor(color.parsecolor("0e457e")); } // Enable user notifications Timber.i("Enable Airship!"); Timber.i("UAirship ChannelID: " + UAirship.shared().getPushManager().getChannelID()); uAirship.getPushManager().setNotificationFactory(notificationFactory); uAirship.getPushManager().setUserNotificationsEnabled(true); } };
最后是StackTrace:
java.lang.IncompatibleClassChangeError: The method 'java.io.file androID.support.v4.content.ContextCompat.getNoBackupfilesDir(androID.content.Context)' was expected to be of type virtual but instead was found to be of type direct (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)at com.Google.androID.gms.iID.zzd.zzeb(UnkNown Source)at com.Google.androID.gms.iID.zzd.<init>(UnkNown Source)at com.Google.androID.gms.iID.zzd.<init>(UnkNown Source)at com.Google.androID.gms.iID.InstanceID.zza(UnkNown Source)at com.Google.androID.gms.iID.InstanceID.getInstance(UnkNown Source)at com.urbanairship.push.GcmRegistrar.register(GcmRegistrar.java:62)at com.urbanairship.push.ChannelServiceDelegate.onUpdatePushRegistration(ChannelServiceDelegate.java:174)at com.urbanairship.push.ChannelServiceDelegate.onHandleIntent(ChannelServiceDelegate.java:110)at com.urbanairship.BaseIntentService.onHandleIntent(BaseIntentService.java:103)at androID.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)at androID.os.Handler.dispatchMessage(Handler.java:102)at androID.os.Looper.loop(Looper.java:135)at androID.os.HandlerThread.run(HandlerThread.java:61)
昨天一切正常,我没有更新我使用的任何库.
提前谢谢你,问候:)
编辑
这是我的gradle依赖项:
dependencIEs {compile filetree(dir: 'libs',include: ['*.jar','*.aar'])repositorIEs { mavenCentral() flatDir { dirs 'libs' } maven { url 'https://repo.commonsware.com.s3.amazonaws.com' } maven { url 'https://urbanairship.bintray.com/androID' } maven { url 'https://download.01.org/crosswalk/releases/crosswalk/androID/maven2' }} compile('com.urbanairship.androID:urbanairship-sdk:7.1.3') { exclude group: 'com.Google.androID.support',module: 'support-v4' exclude group: 'com.Google.androID.gms',module: 'play-services-gcm' transitive = true}compile('de.keyboardsurfer.androID.Widget:crouton:1.8.5@aar') { exclude group: 'com.Google.androID.support',module: 'support-v4' transitive = true}compile('com.facebook.androID:facebook-android-sdk:4.8.1') { exclude group: 'com.Google.androID.support',module: 'support-v4'}compile 'com.androID.support:multIDex:1.0.1'compile 'com.androID.support:support-v4:23.3.0'compile 'com.androID.support:appcompat-v7:23.3.0'compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'compile 'com.squareup.okhttp:okhttp:2.5.0'compile 'com.squareup.okhttp:logging-interceptor:2.6.0'compile 'com.Google.code.gson:gson:2.4'compile 'com.jakewharton:butterknife:5.1.1'compile 'com.jakewharton.timber:timber:4.1.1'compile 'commons-io:commons-io:2.4'compile 'org.apache.commons:commons-lang3:3.4'compile 'com.Google.androID.gms:play-services-analytics:8.4.0'compile 'com.Google.androID.gms:play-services-gcm:8.4.0'compile 'com.Google.androID.gms:play-services-ads:8.4.0'compile('com.crashlytics.sdk.androID:crashlytics:2.5.2@aar') { transitive = true;}compile 'org.xwalk:xwalk_core_library:16.45.421.19'compile 'com.amplitude:androID-sdk:2.5.0'
}
编辑2
我也尝试使用UrbanAirship-SDK版本6.4.1而不排除Google.gms和androID支持库,没有任何影响.
此外,我更新了我的gradle中的每个可能的依赖项使用最新版本(只是更改):
compile'com.urbanairship.androID:urbanairship-sdk:7.1.3'compile 'com.Google.androID.gms:play-services:9.0.0'compile 'com.androID.support:appcompat-v7:23.4.0'compile 'com.androID.support:support-v4:23.4.0'
仍然没有变化
解决方法 正如@ralepinski指出的那样. UA的示例应用程序正如预期的那样工作.所以我深入研究了库和gradle的使用,并发现,这个问题是由内部使用引起的'com.androID.support:support-v4:23.4.0''com.androID.support:appcompat-v7:23.4.0'
一些使用过的插件也使用这些库,冲突在于使用这些库的不同版本.
我通过在gradle中使用force命令解决了这个问题(见下文):
configurations.all { resolutionStrategy { force 'com.androID.support:design:23.4.0' force 'com.androID.support:support-v4:23.4.0' force 'com.androID.support:appcompat-v7:23.4.0' }}
我要感谢大家的帮助,并提出@ralepinskis的回答,该回答给出了提示,看看示例项目.我现在没有足够的声誉,但是当我有upVote应该自动添加.
总结
以上是内存溢出为你收集整理的Android UrbanAirship在takeOff中崩溃全部内容,希望文章能够帮你解决Android UrbanAirship在takeOff中崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)