2015-10-09 18 views
11

Ứng dụng của tôi đang chạy tốt trên các thiết bị Lollipop nhưng ứng dụng này vẫn gặp sự cố trước phiên bản Lollipop. Tôi đã chỉ đơn giản là thực hiện một biểu ngữ thêm vào trong ứng dụng của tôi với đoạn mã sau thông qua google documentionAndroid - Ứng dụng gặp sự cố trên thiết bị 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); 

sử dụng

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

Lỗi

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) 

tập tin của tôi Gradle là

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' 
    } 

Xin hãy giúp tôi ra để thoát ra khỏi vấn đề này.

+0

kiểm tra nếu 'Google Chơi Services' có sẵn dưới dạng thư viện trong dự án trước khi sử dụng 'AdRequest' – Tauqir

+0

Có tôi đã bao gồm điều đó bằng cách biên dịch 'com.google.android.gms: play-services: 8.1.0' và nó đang hoạt động trong Lollipop nhưng nó giữ gặp sự cố trên Kitkat – Nirmal

+0

đăng tệp gradle của bạn. –

Trả lời

33

Sau khi mở rộng hơn một giờ vào vấn đề, tôi thấy rằng tôi phải làm một số sửa đổi trong MyApplication lớp như thế này:

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

Tôi đã overriden phương pháp attachbaseContext và tất cả hoạt động tốt ngay bây giờ.

+0

tuyệt vời, nó hoạt động hoàn hảo ... :) – Jayesh

+0

ở đâu là lớp MyApplication trong dự án Android Studio của chúng tôi? –

+0

Bạn cần tạo một tài khoản. Chỉ cần tạo một lớp java đơn giản và mở rộng nó từ lớp Ứng dụng như tôi đã làm bạn có thể nhìn thấy trong câu trả lời của tôi và ghi đè lên phương thức attachBaseContext. Ngoài ra, hãy bao gồm sự phụ thuộc trong tệp xây dựng tệp gradle của ứng dụng của bạn 'com.android.support:multidex:1.0.1' .Và trong thẻ ứng dụng biểu hiện bao gồm các lớp như thế này android: name = ". Tên lớp của bạn" – Nirmal

0

Bạn nên giảm API trong AndroidManifest.xml Lollipop của bạn là API 21.

Kiểm tra này ra: API Levels Ví dụ:

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

bạn có thể giải thích thêm chút ít vì tôi đã giảm số Nirmal

0

giảm minSdkVersion của bạn lên phiên bản mà bạn muốn cung cấp hỗ trợ

trong tệp gradle của dự án của bạn

Như bên dưới

minSdkVersion 10

+0

Tôi đã thử điều này trước nhưng không có sự giúp đỡ nào – Nirmal

4

+) Ứng dụng xây dựng có phương pháp trên 65K sẽ gây ra lỗi này.

+) Khi ứng dụng của bạn và các thư viện mà nó tham chiếu đến một kích thước nhất định (file DEX của ứng dụng của bạn có thể có tổng số phương pháp tối đa 65.536 bao gồm các phương pháp Android khuôn khổ, phương pháp thư viện, và phương pháp trong mã của riêng bạn), bạn gặp lỗi xây dựng cho biết ứng dụng của bạn đã đạt đến giới hạn kiến ​​trúc xây dựng ứng dụng Android.

+) Để giải quyết nó, bao gồm Multidex Cấu hình trong bạn build.gradle như nhấn mạnh một trong hình ảnh, cùng với điều này ghi đè attachBaseContext (cơ sở Context) phương thức trong lớp ứng dụng của bạn với bên dưới nội dung.

public class YourParentApplication extends Application { 

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

Thêm này trong bạn 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"> 

Để biết thêm thông tin về Multidex giới thiệu những trang web này: http://developer.android.com/tools/building/multidex.html

How to enable multidexing with the new Android Multidex support library

enter image description here

Các vấn đề liên quan