Android - сбой приложений на устройствах Pre-Lollipop
Мое приложение работает на устройствах Lollipop, но оно продолжает сбой до версии Lollipop.
Я просто внедрил добавление баннера в мое приложение со следующим кодом через 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);
используя
compileSdkVersion 23
buildToolsVersion "23.0.1"
манифеста
<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" />
Ошибка
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)
Мой 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:[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'
}
Пожалуйста, помогите мне выйти из этой проблемы.
Ответы
Ответ 1
После расширения более часа на проблему я обнаружил, что мне нужно сделать некоторые изменения в 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);
}
}
Я обогнал метод attachbaseContext
, и теперь все работает отлично.
Ответ 2
+) Создание приложений с использованием метода более 65 тыс. приведет к этой ошибке.
+) Когда ваше приложение и библиотеки его ссылок достигают определенного размера ( DEX файл вашего приложения может иметь общее количество методов до 65 536, включая Android framework, библиотечные методы и методы в вашем собственном коде), вы сталкиваетесь с ошибками сборки, которые указывают, что ваше приложение достигло предела в архитектуре построения приложений Android.
+) Чтобы решить эту проблему, включите Конфигурация нескольких приложений в build.gradle, как выделенное на картинке, вместе с этим переопределите attachBaseContext (база контекста ) в классе Application с приведенным ниже содержимым.
public class YourParentApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Добавьте это в вас 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">
Для получения дополнительной информации о Multidex обратитесь на этот сайт:
http://developer.android.com/tools/building/multidex.html
Как включить многозадачность с новой библиотекой поддержки Android Multidex
![введите описание изображения здесь]()
Ответ 3
Вы должны снизить API в своем AndroidManifest.xml
Lollipop - это API 21.
Проверьте это: Уровни API
Пример:
defaultConfig {
applicationId "com.package.name"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
Ответ 4
уменьшите minSdkversion до той версии, которую вы хотите поддержать
в gradle файле вашего проекта
Как ниже
minSdkVersion 10