小于5.0的Android API导致应用程序崩溃(棒棒糖) [英] App crashing on Android API less than 5.0(lollipop)

查看:75
本文介绍了小于5.0的Android API导致应用程序崩溃(棒棒糖)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我面临的问题是我的android应用程序在具有API 5.0及更高版本的设备上运行良好,但在具有Kitkat(4.4)及其相应较低版本的设备上崩溃了.我知道它某种程度上与gradle中的构建工具有关文件,但仍然无法解决问题.有人可以帮我解决这个问题.

The problem I am facing is that my android application works well on devices having API 5.0 and above but crashes on devices having Kitkat(4.4) and its corresponding lower versions.I know that its somehow related to the build tools in my gradle file,but still not able to figure out the problem.Could someone please help me out with this.

这是我的gradle文件,

This is my gradle file,

     buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'android'

repositories {
    maven { url 'https://maven.fabric.io/public' }
    maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}


android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    defaultConfig {
        applicationId "com.abc.example"
        minSdkVersion 10
        targetSdkVersion 22
        multiDexEnabled true
        versionCode 12
        versionName "1.0"
    }
    buildTypes {
        release {
            multiDexEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    android {
        packagingOptions {
            exclude 'META-INF/LICENSE'
        }
    }
    android {
        packagingOptions {
            exclude 'META-INF/NOTICE'
        }
    }
}



dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') {
        transitive = true
        exclude module: 'httpclient'
        exclude group: 'httpclient'
    }

    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:mockwebserver:2.3.0'
    compile 'de.hdodenhof:circleimageview:1.2.2'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services-maps:7.5.0'
    compile files('libs/bitlyj-2.0.0.jar')

}

在构建项目时也会出现此错误,

Also getting this error when project is built,

Caused by: java.lang.NoClassDefFoundError: com.package.R$styleable
            at com.package.widgets.StyleableTextView.<init>(StyleableTextView.java:23)

这是StyleableTextView类,

This is StyleableTextView class,

public class StyleableTextView extends TextView {

    public StyleableTextView(Context context) {
        super(context);
    }

    public StyleableTextView(Context context, AttributeSet attrs) {
        super(context.getApplicationContext(), attrs);
        UiUtil.setCustomFont(StyleableTextView.this, context, attrs,
                R.styleable.com_eywa_wonk_widgets_StyleableTextView,
                R.styleable.com_eywa_wonk_widgets_StyleableTextView_font);
    }

    public StyleableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context.getApplicationContext(), attrs, defStyle);
        UiUtil.setCustomFont(StyleableTextView.this, context, attrs,
                R.styleable.com_eywa_wonk_widgets_StyleableTextView,
                R.styleable.com_eywa_wonk_widgets_StyleableTextView_font);
    }

}

这是attrs中的样式,

This is the styleable in attrs,

<resources>

    <attr name="font" format="string" />

<declare-styleable name="com.package.widgets.StyleableTextView">
        <attr name="font" />

    </declare-styleable>

</resources>

推荐答案

使用multidex时,请尝试使用MultiDexAppication而不是Application扩展应用程序类,并在下面覆盖Android所需的以下方法5.0(因为5.0和更高版本对multidex的支持)

When you are using multidex , then try to extend your application class with MultiDexAppication instead of Application and override below method this required for Android below 5.0 (because 5.0 and above support to the multidex)

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

并在依赖项中添加此

编译'com.android.support:multidex:1.0.1'

and in dependencies add this

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

这篇关于小于5.0的Android API导致应用程序崩溃(棒棒糖)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆