【问题标题】:force close android app in devices with android 4在具有 android 4 的设备中强制关闭 android 应用程序
【发布时间】:2017-05-23 17:31:12
【问题描述】:

我正在研究电报源代码。一切正常,现在应用程序将在设备上成功安装和运行。

但在 android 版本 4.0.1 到 android 版本 4.2.2 的设备中,应用程序将停止并出现如下所示的错误。 我将 build.gradle 中的 defaultConfig.applicationId 更改为 ir.familygram.messenger 并猜测这是问题所在,但为什么它在具有 sdk 22,23 等的设备上运行良好?并且不能在 android sdk 较低的设备上工作?

android 设备监视器中的错误:

01-09 15:45:40.190: E/AndroidRuntime(8158): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ir.familygram.messenger/org.telegram.ui.LaunchActivity}: java.lang.ClassNotFoundException: org.telegram.ui.LaunchActivity
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1998)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.ActivityThread.access$600(ActivityThread.java:138)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.os.Looper.loop(Looper.java:137)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.ActivityThread.main(ActivityThread.java:4954)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at java.lang.reflect.Method.invokeNative(Native Method)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at java.lang.reflect.Method.invoke(Method.java:511)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at dalvik.system.NativeStart.main(Native Method)
01-09 15:45:40.190: E/AndroidRuntime(8158): Caused by: java.lang.ClassNotFoundException: org.telegram.ui.LaunchActivity
01-09 15:45:40.190: E/AndroidRuntime(8158):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.Instrumentation.newActivity(Instrumentation.java:1056)
01-09 15:45:40.190: E/AndroidRuntime(8158):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1989)
01-09 15:45:40.190: E/AndroidRuntime(8158):     ... 11 more
01-09 15:58:00.770: E/Trace(9057): error opening trace file: No such file or directory (2)

【问题讨论】:

    标签: java android telegram


    【解决方案1】:

    回答链接: NoClassDefFoundError below SDK 21

    我通过将它添加到我的应用程序类解决了这个问题。

    @Override
    protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
    }
    

    如果你没有/使用 Application 类,你可以这样写:

     android:name="android.support.multidex.MultiDexApplication"
    

    进入您在 AndroidManifest.xml 上的标签

    如果你已经实现了一个Application类

    同样显然,你需要添加 Gradle 依赖:

    compile 'com.android.support:multidex:1.0.0'
    

    更多关于 65k 方法问题的信息:https://developer.android.com/tools/building/multidex.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2012-10-05
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多