2015-10-09 12 views
11

Moja aplikacja działa dobrze na urządzeniach Lollipop, ale nadal zawiesza się przed wersją Lollipop. ja po prostu realizowane transparent dodać w mojej aplikacji z następującego kodu przez google dokumentację,Android - aplikacja ulega awarii na urządzeniach Pre-Lollipop

// 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); 

użyciu

compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

oczywistego

<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" /> 

błąd

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) 

plik My Gradle jest

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:[email protected]') { 
     transitive = true 
    } 
    compile('com.github.florent37:materialviewpager:[email protected]') { 
     transitive = true 
    } 


    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     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' 
    } 

Proszę mi pomóc wydostać się z tym problemem.

+0

wyboru, jeśli 'Google Grać Usługi "są dostępne jako biblioteka w projekcie przed użyciem" AdRequest " – Tauqir

+0

Tak, już uwzględniono to przez skompiluj" com.google.android.gms: play-services: 8.1.0 " i działa ono w Lollipop, ale działa awaria na Kitkat – Nirmal

+0

opublikuj swój plik gradle. –

Odpowiedz

33

Po rozwinięciu ponad godzinę na problem, znalazłem, że muszę zrobić kilka modyfikacji w MyApplication klasy tak:

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); 
    } 
} 

Mam nadpisane metody attachbaseContext i teraz wszystko działa dobrze.

+0

świetnie, działa idealnie ... :) – Jayesh

+0

gdzie jest klasa MyApplication w naszym projekcie Android Studio? –

+0

Musisz je utworzyć. Po prostu utwórz prostą klasę języka Java i rozszerz ją z poziomu klasy aplikacji, tak jak widzisz w mojej odpowiedzi i nadpisuję metodę attachBaseContext. Zależnie od tego, czy zawierasz plik kompilacji kompilacji aplikacji "com.android.support:multidex:1.0.1" .A w manifeście aplikacji tag zawiera klasę jak ta android: name = ". Twoja nazwa klasy" – Nirmal

0

Należy obniżyć API w swojej AndroidManifest.xml Lollipop jest API 21.

to sprawdzić: API Levels Przykład:

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

możesz wyjaśnić trochę więcej, ponieważ już obniżyłem Nirmal

0

zmniejszyć minSdkversion do tej wersji, którą chcesz dać wsparcie

w Gradle plikiem projektu

jak poniżej

minSdkVersion 10

+0

Już wypróbowałem to przed, ale bez pomocy – Nirmal

4

+) Tworzenie aplikacji z metodą ponad 65K spowoduje ten błąd.

+) W przypadku aplikacji i bibliotek odwołuje osiągnie pewną wielkość (plik DEX z aplikacji może mieć całkowitą liczbę metod zapisu do 65,536 tym Android metod ramowych, metod biblioteki i metod w swoim własnym kodzie), występują błędy kompilacji, które wskazują, że Twoja aplikacja osiągnęła limit architektury budowania aplikacji na Androida.

+) Aby go rozwiązać, to Multidex Konfiguracja w build.gradle jak podświetlonego w jednym obrazie, wraz z tym zastąpić attachBaseContext (podstawa kontekstu) metodę w swojej klasie aplikacji z poniżej treści.

public class YourParentApplication extends Application { 

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

Dodaj to w ci 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"> 

Aby uzyskać więcej informacji o Multidex odnoszą te stronę: http://developer.android.com/tools/building/multidex.html

How to enable multidexing with the new Android Multidex support library

enter image description here

Powiązane problemy