重新打开应用程序时出现 Moengage 问题

Posted

技术标签:

【中文标题】重新打开应用程序时出现 Moengage 问题【英文标题】:Moengage issue when application is reopened 【发布时间】:2017-10-23 08:32:46 【问题描述】:

当应用程序进入前台时应用程序崩溃。 当应用程序被杀死并重新启动时,它不会崩溃,但是当它被最小化并重新打开时,它会崩溃并出现以下异常

java.lang.NoClassDefFoundError: com.moengage.locationlibrary.LocationHandlerImpl 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:324) 在 java.lang.Class.forName(Class.java:285) 在 com.moengage.location.GeoManager.getHandler(GeoManager.java:33) 在 com.moengage.core.MoEDispatcher.syncInAppsAndGeo(MoEDispatcher.java:209) 在 com.moengage.core.MoEDispatcher.onStart(MoEDispatcher.java:159) 在 com.moe.pushlibrary.MoEHelper.onNewIntent(MoEHelper.java:287) 在 com.moe.pushlibrary.MoEHelper.onStartInternal(MoEHelper.java:324) 在 com.moe.pushlibrary.MoEActivityLifeCycleCallBacks.onActivityStarted(MoEActivityLifeCycleCallBacks.java:33) 在 android.app.Application.dispatchActivityStarted(Application.java:205) 在 android.app.Activity.onStart(Activity.java:1146) 在 android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:542) 在 android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) 在 android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 在 android.app.Activity.performStart(Activity.java:6253) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 10-23 13:26:14.136 7406-7406/? I/Process:发送信号。 PID:7406 SIG:9

我确实尝试了 NoClassDefFoundError 的解决方案,但没有奏效。我对它在重新启动时运行感到困惑,但在从最小化状态进入前台时却没有。

以下是我的应用类:

public class AppController extends Application implements PushManager.OnTokenReceivedListener 
    MoEHelper helper;

    @Override
    public void onCreate() 
        super.onCreate();

        helper = MoEHelper.getInstance(getApplicationContext());
        helper.autoIntegrate(this);
        PushManager.getInstance().setTokenObserver(this);

        Log.e("TAG", "onCreate() AppController");
        SharedPreferences pref = getApplicationContext().getSharedPreferences("MoTest", Context.MODE_PRIVATE);
        if (pref.contains("newInstall")) 
            helper.setExistingUser(true);
         else 
            helper.setExistingUser(false);
        

    

    @Override
    public void onTokenReceived(String token) 
        Log.e("TAG", "Appcontroller Token: " + token);
    

这是我的 MainActivity:

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    

【问题讨论】:

【参考方案1】:

MoEngage SDK 假定您的应用程序具有位置服务依赖关系,如果您有位置权限,这里也是如此。 话虽如此,SDK 提供了一种排除位置库的机制,以防您不想使用我们的地理围栏功能。这可以如下进行:

compile ('com.moengage:moe-android-sdk:7.7.16') 
        exclude group: 'com.moengage', module: 'moe-location-lib'
    

更多细节可以参考官方文档here。

PS:我是 MoEngage SDK 的贡献者之一。让我知道这是不是解决了。 P>

【讨论】:

【参考方案2】:

检查您的 LocationHandlerImpl.java 文件并查看 GoogleApiClientLocationServices 是否已解决。有可能是您没有为定位服务添加依赖项。

如果它们没有被解析,请将各自的依赖添加到您的 Gradle 文件中

'com.google.android.gms:play-services-location:XXX'

同步并再次尝试运行。那应该做的工作

【讨论】:

以上是关于重新打开应用程序时出现 Moengage 问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 应用中重新启动后尝试打开文件夹时出现权限错误

VS2010 打开时出现未知错误

Microsoft Word 2007 向程序发送命令时出现问题解决方法

win10应用商店打开Minecraft for Windows10时出现就出现无法加载页面,求大神指教。

尝试运行 Ubuntu 时出现 VirtualBox 错误“无法打开会话”[关闭]

打开经常模板时出现运行时错误