lollipop - android studio api 22
El proyecto Android Studio funciona en Lollipop pero no funciona en Kitkat (3)
Tengo un proyecto de Android Studio que funciona bien en dispositivos con la versión de compilación de Android Lollipop, pero lanza una excepción cuando intento ejecutarlo en un dispositivo con la versión de compilación de Android Kitkat. Este es el archivo build.gradle de mi proyecto:
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
multiDexEnabled true
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
compile files(''libs/org.apache.commons.io.jar'')
compile files(''libs/commons-codec-1.10.jar'')
compile(''com.twitter.sdk.android:twitter:1.6.0@aar'') {
transitive = true;
}
compile files(''libs/pinit-sdk-1.0.jar'')
compile project('':bounceScroller'')
compile ''com.ogaclejapan.smarttablayout:library:1.2.1@aar''
compile ''com.facebook.android:facebook-android-sdk:4.1.0''
compile ''com.android.support:appcompat-v7:21.2.0''
compile ''com.github.navasmdc:MaterialDesign:1.5@aar''
compile ''com.nineoldandroids:library:2.4.+''
compile ''com.esri.arcgis.android:arcgis-android:10.2.6-2''
compile ''com.github.clans:fab:1.5.3''
compile ''com.github.pedrovgs:draggablepanel:1.8''
compile ''com.android.support:support-v4:21.2.0''
compile ''com.ogaclejapan.smarttablayout:utils-v4:1.2.1@aar''
compile ''com.github.bumptech.glide:glide:3.6.0''
compile project('':rangeseekbar'')
compile ''com.android.support:recyclerview-v7:22.2.0''
compile ''com.android.support:cardview-v7:22.2.0''
compile project('':blurry'')
compile ''com.google.android.gms:play-services:7.8.0''
}
y aquí está el error que obtengo cuando ejecuto la aplicación en un dispositivo Kitkat:
java.lang.RuntimeException: Unable to start activity: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v4.view.ViewPager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v4.view.ViewPager
at android.view.LayoutInflater.createView(LayoutInflater.java:626)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)
at android.app.Activity.setContentView(Activity.java:2010)
at android.visitabudhabi.com.vad.Walkthrough.onCreate(Walkthrough.java:32)
at android.app.Activity.performCreate(Activity.java:5426)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:600)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)
at android.app.Activity.setContentView(Activity.java:2010)
at android.visitabudhabi.com.vad.Walkthrough.onCreate(Walkthrough.java:32)
at android.app.Activity.performCreate(Activity.java:5426)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: android.support.v4.view.ViewConfigurationCompatFroyo
at android.support.v4.view.ViewConfigurationCompat$FroyoViewConfigurationVersionImpl.getScaledPagingTouchSlop(ViewConfigurationCompat.java:56)
at android.support.v4.view.ViewConfigurationCompat.getScaledPagingTouchSlop(ViewConfigurationCompat.java:105)
at android.support.v4.view.ViewPager.initViewPager(ViewPager.java:368)
at android.support.v4.view.ViewPager.<init>(ViewPager.java:356)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:600)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)
at android.app.Activity.setContentView(Activity.java:2010)
at android.visitabudhabi.com.vad.Walkthrough.onCreate(Walkthrough.java:32)
at android.app.Activity.performCreate(Activity.java:5426)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Este es mi XML que tiene ViewPager:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_below="@+id/pager"
android:layout_gravity="bottom"
android:orientation="horizontal">
<ImageView
android:id="@+id/first"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3.3"
android:background="#c7333f" />
<ImageView
android:id="@+id/second"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3.3"
android:background="#FFF" />
<ImageView
android:id="@+id/third"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3.3"
android:background="#fff" />
</LinearLayout>
</FrameLayout>
¿Alguien sabe cómo resolver esto?
Así es como resolví el problema si alguien llega aquí.
Después de buscar profundamente sobre el problema, descubrí que no es una excepción inflar, aunque eso es lo que dijo el logcat, la verdadera excepción fue la excepción OutOfMemory causada por el infame 65K problema, haga clic aquí para obtener más información sobre el problema y fue envuelto con el inflar excpetion.
Para resolver el problema, primero agregué la biblioteca de soporte multidex en mi archivo build.gradle:
compile ''com.android.support:multidex:1.0.0''
Luego seguí estos tres sencillos pasos para que funcione:
Si no está implementando una clase de Aplicación usted mismo, puede simplemente definir la Aplicación MultiDex de la biblioteca en su archivo de Manifiesto de Android bajo la etiqueta de la aplicación:
android: name = "android.support.multidex.MultiDexApplication"
Si está implementando su propia clase de aplicación, puede simplemente anular el archivo MultiDexApplication:
la clase pública MyAwesomeApplication extends MultiDexApplication {
O si su clase de aplicación ya está ampliando otra clase, puede simplemente anular el método attachBaseContext y agregarle la siguiente llamada:
@Override protected void attachBaseContext (Base de contexto) {super.attachBaseContext (context); Multidex.install (esto); }
Ya tenía mi propia clase de aplicación que se extiende desde la clase "Aplicación", así que salté directamente al paso 3 y vi que funcionó en Kitkat y en Lollipop.
Espero que esto ayude a cualquiera. Feliz Codificación.
Bueno . Al principio llama a fill_parent
.
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:overScrollMode="never" />
Y usa esto en lugar del tuyo.
compile ''com.android.support:support-v4:21.0.3''
establecer targetSdkVersion 19
Edit1
configura
compileSdkVersion 23
buildToolsVersion "23.0.1"
y
targetSdkVersion 23
Espero que te ayude.
El problema principal es que su compileSdkVersion no coincide con la versión principal de las bibliotecas de soporte que incluye con el proyecto. Sigue estas reglas:
Establezca targetSdkVersion en 22 porque desea utilizar las características de Lollipop en dispositivos Lollipop (y por el momento no le importa Marshmallow).
Establezca compileSdkVersion en 23 porque es el más nuevo.
Establezca buildToolsVersion en "23.0.1" porque es el más nuevo.
Establezca las versiones de la biblioteca de soporte en la última compilaciónSdkVersion coincidente:
compile ''com.android.support:appcompat-v7:23.1.0''
compile ''com.android.support:support-v4:23.1.0''
compile ''com.android.support:recyclerview-v7:23.1.0''
compile ''com.android.support:cardview-v7:23.1.0''