简体   繁体   English

Android - 应用程序在Pre-Lollipop设备上崩溃

[英]Android - App crashes on Pre-Lollipop devices

My app is running well on Lollipop devices but it keep crashing on prior to version Lollipop. 我的应用程序在Lollipop设备上运行良好,但它在版本Lollipop之前一直崩溃。 I have simply implemented a banner add in my application with the following code through google documention 我只是通过谷歌文档在我的应用程序中使用以下代码实现了横幅添加

    // Request for Ads
           AdRequest adRequest = new AdRequest.Builder()

                  // Add a test device to show Test Ads
                 .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                 .build();

         // Load ads into Banner Ads
         mAdView.loadAd(adRequest);

using 运用

    compileSdkVersion 23
    buildToolsVersion "23.0.1"

manifest 表现

  <meta-data
             android:name="com.google.android.gms.version"
             android:value="@integer/google_play_services_version" />

         <activity
             android:name="com.google.android.gms.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden
   |orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

Error 错误

 E/AndroidRuntime: FATAL EXCEPTION: main
 E/AndroidRuntime: Process: com.app.aggro, PID: 13257
 E/AndroidRuntime: java.lang.VerifyError: 
  com/google/android/gms/measurement/internal/zzv
 E/AndroidRuntime: at   
 com.google.android.gms.measurement.AppMeasurementContentProvider
.onCreate(Unknown Source)
E/AndroidRuntime:     at  
android.content.ContentProvider.attachInfo(ContentProvider.java:1656)
 E/AndroidRuntime:     at  
android.content.ContentProvider.attachInfo(ContentProvider.java:1627)
 E/AndroidRuntime:     at  
android.app.ActivityThread.installProvider(ActivityThread.java:5015)
E/AndroidRuntime:     at  
android.app.ActivityThread.installContentProviders
(ActivityThread.java:4589)
 E/AndroidRuntime:     at   
 android.app.ActivityThread.handleBindApplication
 (ActivityThread.java:4522)
E/AndroidRuntime:     at  
android.app.ActivityThread.access$1500(ActivityThread.java:151)
E/AndroidRuntime:     at  
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
E/AndroidRuntime:     at 
android.os.Handler.dispatchMessage(Handler.java:110)
E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:193)
  E/AndroidRuntime:     at  
android.app.ActivityThread.main(ActivityThread.java:5299)
E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native  
Method)
E/AndroidRuntime:     at  
java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime:     at   
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:825)
 E/AndroidRuntime:     at   
 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
E/AndroidRuntime:     at dalvik.system.NativeStart.main
(Native Method)

My Gradle file is 我的Gradle文件是

 apply plugin: 'com.android.application'

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

    dependencies {
         classpath 'io.fabric.tools:gradle:1.+'
     }
 }
 repositories {
     mavenCentral()
     maven { url   
 "https://oss.sonatype.org/content/repositories/snapshots"}
        maven { url 'https://maven.fabric.io/public' }
        maven { url   
     "https://oss.sonatype.org/content/repositories/snapshots/" }
     maven { url 'https://dl.bintray.com/drummer-aidan/maven' }
 }
android {
     compileSdkVersion 23
     buildToolsVersion "23.0.1"

    defaultConfig {
         applicationId "com.app.aggro"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
     }
     buildTypes {
         release {
             minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-
android.txt'), 'proguard-rules.pro'
        }
    }


    dexOptions{
        incremental true
        javaMaxHeapSize "4g"
     }
    defaultConfig {
        multiDexEnabled true
    }
    packagingOptions {
         exclude 'META-INF/DEPENDENCIES'
         exclude 'META-INF/NOTICE'
         exclude 'META-INF/LICENSE'
         exclude 'META-INF/LICENSE.txt'
         exclude 'META-INF/NOTICE.txt'
     }
  }

 dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile('com.mikepenz:materialdrawer:3.0.9@aar') {
        transitive = true
     }
     compile('com.github.florent37:materialviewpager:1.1.0@aar') {
         transitive = true
    }


    compile('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') {
        transitive = true;
     }
    compile 'com.google.android.gms:play-services:8.1.0'
     compile 'com.mcxiaoke.volley:library:1.0.+'
     compile 'com.google.code.gson:gson:2.3.1'
      compile 'com.marshalchen.ultimaterecyclerview:library:0.3.11'
     compile 'com.android.support:recyclerview-v7:22.2.0'
     compile 'com.android.support:cardview-v7:23.0.1'
     compile 'com.jpardogo.googleprogressbar:library:1.2.0'
      compile 'com.quinny898.library.persistentsearch:library:1.0.0-  
 SNAPSHOT'
     compile project(':storage')
     compile 'com.getbase:floatingactionbutton:1.10.0'
     compile 'com.parse.bolts:bolts-android:1.+'
      compile files('libs/activeandroid-3.1-beta.jar')
      compile 'com.android.support:design:23.0.1'
      compile 'it.neokree:MaterialTabs:0.11'
      compile 'com.miguelcatalan:materialsearchview:1.2.0'
  }

Please help me out to get out from this problem. 请帮我解决这个问题。

After expanding more than a hour on problem, I found that I have to do some modification in MyApplication Class like this: 在问题扩展了一个多小时之后,我发现我必须在MyApplication Class中做一些修改,如下所示:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // register with Active Android
        ActiveAndroid.initialize(this);
    }

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

I have overriden the attachbaseContext method and all works fine now. 我已经覆盖了attachbaseContext方法,现在一切正常。

+) Building Apps with Over 65K Method will cause this Error. +)使用超过65K方法构建应用程序将导致此错误。

+) When your application and the libraries it references reach a certain size ( DEX file of your application can have total number of methods upto 65,536 including Android framework methods, library methods, and methods in your own code), you encounter build errors that indicate your app has reached a limit of the Android app build architecture. +)当您的应用程序及其引用的库达到一定大小时(应用程序的DEX文件可以包含高达65,536方法总数,包括Android框架方法,库方法和您自己的代码中的方法),您会遇到构建错误,指示您的应用已达到Android应用构建体系结构的限制。

+) To resolve it, include Multidex Configuration in your build.gradle like the highlighted one in picture, along with this override the attachBaseContext(Context base) method in your Application class with the below content. +)要解决此问题, build.gradle中包含Multidex Configuration ,如图中突出显示的那样,以及覆盖Application类中具有以下内容的attachBaseContext(Context base)方法。

public class YourParentApplication extends Application {

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

Add this in you Androidmanifest.xml: 在你的Androidmanifest.xml中添加:

<application
    android:name=".YourParentApplication"
    android:allowBackup="true"
    android:icon="@drawable/radiius_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/MyMaterialTheme">

For more information about Multidex refer these site: http://developer.android.com/tools/building/multidex.html 有关Multidex的更多信息,请参阅以下网站: http//developer.android.com/tools/building/multidex.html

How to enable multidexing with the new Android Multidex support library 如何使用新的Android Multidex支持库启用多索引

在此输入图像描述

You should lower the API in your AndroidManifest.xml Lollipop is API 21. 您应该降低AndroidManifest.xml中的API Lollipop是API 21。

Check this out: API Levels Example: 看看这个: API级别示例:

   defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 11
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

reduce your minSdkversion to that version you want to give support 将你的minSdkversion减少到你想要支持的那个版本

in gradle file of your project 在您的项目的gradle文件中

As below 如下

minSdkVersion 10 minSdkVersion 10

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android应用在Java库Lollipop之前崩溃 - Android app crashes on Java library pre-Lollipop 在Lollipop前设备上跟踪Android上的每个应用程序使用情况 - Track per app usage on android on pre-Lollipop devices 棒棒糖之前的设备上的Android CardView问题 - Android CardView issue on pre-lollipop devices 预备棒棒糖设备上的Android setBackgroundTintList - Android setBackgroundTintList on pre-lollipop devices Android - 在Lollipop前设备上设置ProgressBar - Android - Tinting ProgressBar on pre-Lollipop devices 棒棒糖之前设备的ResourcesNotFoundException - ResourcesNotFoundException for pre-lollipop devices Android TV应用程序:如何在棒棒糖播放器Android TV设备中显示横幅图标 - Android TV App: How to show banner icon in Pre-lollipop Android TV Devices 无法理解如何使用Theme.AppCompat为前Lollipop设备设置Android应用程序样式 - Can't understand how to style Android app for pre-Lollipop devices using Theme.AppCompat 在Pre-Lollipop设备中使用.xml向量时,应用程序崩溃 Xamarin.Android - App crashes when using .xml vectors in Pre-Lollipop device | Xamarin.Android Android支持库FloatingActionButton - 在棒棒糖前设备上填充? - Android support library FloatingActionButton - padding on pre-lollipop devices?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM