0

启动时应用程序崩溃这是崩溃日志:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.activities.SplashActivity}: android.view.InflateException: Binary XML file line #10: Error inflating class com.test.ui.shimmer.ShimmerTextView
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2447)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5692)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class com.test.ui.shimmer.ShimmerTextView
            at android.view.LayoutInflater.createView(LayoutInflater.java:626)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:350)
            at android.app.Activity.setContentView(Activity.java:2059)
            at com.framework.base.fragment.base.MCFragmentActivity.setContentView(MCFragmentActivity.java:160)
            at com.test.activities.SplashActivity.setOrientation(SplashActivity.java:50)
            at com.test.activities.SplashActivity.onCreate(SplashActivity.java:42)
            at android.app.Activity.performCreate(Activity.java:5541)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5692)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:600)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:350)
            at android.app.Activity.setContentView(Activity.java:2059)
            at com.framework.base.fragment.base.MCFragmentActivity.setContentView(MCFragmentActivity.java:160)
            at com.test.activities.SplashActivity.setOrientation(SplashActivity.java:50)
            at com.test.activities.SplashActivity.onCreate(SplashActivity.java:42)
            at android.app.Activity.performCreate(Activity.java:5541)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5692)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoClassDefFoundError: com.test.ui.shimmer.ShimmerViewHelper
            at com.test.ui.shimmer.ShimmerTextView.<init>(ShimmerTextView.java:33)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:600)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:350)
            at android.app.Activity.setContentView(Activity.java:2059)
            at com.framework.base.fragment.base.MCFragmentActivity.setContentView(MCFragmentActivity.java:160)
            at com.test.activities.SplashActivity.setOrientation(SplashActivity.java:50)
            at com.test.activities.SplashActivity.onCreate(SplashActivity.java:42)
            at android.app.Activity.performCreate(Activity.java:5541)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5692)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
            at dalvik.system.NativeStart.main(Native Method)

我在这个链接中做了同样的事情。它适用于 Android 5.0 及更高版本。但是如果我在 android 5.0 设备下尝试这个,我会在上面得到这个错误日志。

在我的 SplashActivity 中:

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     FacebookSdk.sdkInitialize(getApplicationContext());
     // Initialize the SDK before executing any other operations,
     // especially, if you're using Facebook UI elements.
} 

在 build.gradle 中:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.test"
        minSdkVersion 15
        targetSdkVersion 19
        multiDexEnabled true
    }

    dexOptions {
        incremental true
        javaMaxHeapSize "2048M"
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
//        exclude 'META-INF/NOTICE.txt
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/ASL2.0'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

dependencies {
    compile 'com.google.code.gson:gson:2.2.4'
    compile files('libs/android-async-http-1.4.4.jar')
    compile files('libs/DP4Java.jar')
    compile files('libs/SecureStorageSDK.jar')
    compile files('libs/UtilitiesSDK.jar')
    compile 'net.lingala.zip4j:zip4j:1.3.2'
    compile 'com.facebook.android:facebook-android-sdk:4.5.0'
}
apply from: 'rollo.gradle'

在(顶级)app build.gradle 中:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

在清单中:

<meta-data android:name="com.facebook.sdk.ApplicationId"
                   android:value="@string/facebook_app_id"/>

编辑:我知道我的 ShimmerTextView 没有任何问题。如果我从 build.gradle 中删除 facebook sdk,我不会收到此错误日志。一切都像魅力一样。有某种我无法想象的错误。也许我做错了什么。请帮我解决这个问题。谢谢。

4

1 回答 1

0

您是否有多个布局 xml,一个用于 >5.0 版本,一个用于 <5.0 版本?检查自定义视图的完整包名称在所有 xml 文件中的拼写是否正确。"Error inflating class com.test.ui.shimmer.ShimmerTextView"表示包名不正确或不完整。

编辑:实际上似乎在 ShimmerTextView 的 init 中找不到 ShimmerViewHelper,是否正确引用?java.lang.NoClassDefFoundError: com.test.ui.shimmer.ShimmerViewHelper

于 2015-08-17T15:57:11.933 回答