App works well in android 5.1 and 6.1 but crashes in 4.10 (API 16)
I am new to android development. I can get this app to work in Android 5.1, but however, when I tried to deploy this app in Android 4.1, it used to fail in the main activity itself. I figured it out because I was using vector images, android 4.1 is not compatible with it. To overcome this, I install the code as follows:
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
You’ll note this new attribute only exists in the version 2.0 of the Gradle Plugin. If you are using Gradle 1.5 you’ll instead use
// Gradle Plugin 1.5
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
I am getting this error now
AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Failed to start activityComponentInfo {com.abc.efg.plcapp / com.abc.efg.ghi.MainActivity}: android.view.InflateException: XML file binary string # 37: Error inflating ImageView class in android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2059) in android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) at android.app.ActivityThread.access $ 600 (ActivityThread.java:130) in android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1195) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:137) at android.app.ActivityThread.main (ActivityThread.java : 4745) at java.lang.reflect.Method.invokeNative (native method) at java.lang.reflect.Method.invoke (Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) in dalvik.system.NativeStart.main (native method) Thrown from: android.view.InflateException: XML binary string File # 37: Error inflating ImageView class in android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704) on android.view.LayoutInflater.rInflate (LayoutInflater.java:746) on android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) on android.view.LayoutInflater.rInflate (LayoutInflater.java:736) on android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) on android. view.LayoutInflater.rInflate (LayoutInflater.java:736) on android.view.LayoutInflater.inflate (LayoutInflater.java:489) on android.view.LayoutInflater.inflate (LayoutInflater.java:396) at android.view.LayoutInflater.inflate (LayoutInflater.java:352) at android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:267) at android7.support .AppCompatActivity.setContentView (AppCompatActivity.java:129) at MainActivity.onCreate (MainActivity.java:40) at android.app.Activity.performCreate (Activity.java:5008) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1079) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2023) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) at android. app.ActivityThread.access $ 600 (ActivityThread.java:130) in android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1195) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:137) at android.app.ActivityThread.main (ActivityThread.java:4745) in java. lang.reflect.Method.invokeNative (native method) at java.lang.reflect.Method.invoke (Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) in dalvik.system.NativeStart.main (native method) Thrown by: android.content.res.Resources $ NotFoundException: File res / drawable / ic_mood_24dp.xml from resource ID # 0x7f020057 at android.content.res.Resources.loadDrawable (Resources.java:1918) at android.content.res.TypedArray.getDrawable (TypedArray.java:601) to android.widget.ImageView. (ImageView.java:120) in android.support.v7.widget.AppCompatImageView. (AppCompatImageView.java:57) at android.support.v7.widget.AppCompatImageView. (AppCompatImageView.java:53) at android.support.v7.app.AppCompatViewInflater.createView (AppCompatViewInflater.java:106) at android.support.v7.app.AppCompatDelegateImplV7.createView (AppCompatDelegateImplV7.java:963) at android.support.v7.app.AppCompatDelegateImplV7.onCreateView (AppCompatDelegateImplV7.java:1022) at android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView: LayoutInjflaterCompatHC.onCreateView: (LayoutInflater.java:675) on android.view.LayoutInflater.rInflate (LayoutInflater.java:746) on android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) on android.view.LayoutInflater.rInflate (LayoutInflater.java:736) on android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) on android.view.LayoutInflater.rInflate (LayoutInflater.java:736) on android. view.LayoutInflater.inflate (LayoutInflater.Java: 489) on android.view.LayoutInflater.inflate (LayoutInflater.java:396) on android.view.LayoutInflater.inflate (LayoutInflater.java:352) at android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:267) at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:129 (MainActivity.java:40) at android.app.Activity.performCreate (Activity.java:5008) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1079) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2023) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) at android.app.ActivityThread.access $ 600 (ActivityThread.java:130) in android .app.ActivityThread $ H.handleMessage (ActivityThread.java:1195) on android.os.Handler.dispatchMessage (Handler.java:99) on android.os.Looper.loop (Looper.java:137) at android.app.ActivityThread.main (ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative (native method) at java.lang.reflect.Method.invoke ( Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) in dalvik.system ...NativeStart.main (Native Method) Thrown by: org.xmlpull.v1.XmlPullParserException: Binary XML File Line 1: Invalid shortcut vector in android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:877) at android.graphics.drawable. Drawable.createFromXml (Drawable.java:818) at android.content.res.Resources.loadDrawable (Resources.java:1915) at android.content.res.TypedArray.getDrawable (TypedArray.java:601) to android.widget.ImageView. (ImageView.java:120) in android.support.v7.widget.AppCompatImageView. (AppCompatImageView.java:57) at android.support.v7.widget.AppCompatImageView. (AppCompatImageView.java:53) at android.support.v7.app.AppCompatViewInflater.createView (AppCompatViewInflater.java:106) at android.support.v7.app.AppCompatDelegateImplV7.CreateView (AppCompatDelegateImplV7.java:963) at android.support.v7.app.AppCompatDelegateImplV7.onCreateView (AppCompatDelegateImplV7.java:1022) at android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView: LayoutInjflaterCompatHC.createView: (LayoutInflater.java:675) on android.view.LayoutInflater.rInflate (LayoutInflater.java:746) on android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) on android.view.LayoutInflater.rInflate (LayoutInflater.java:736) on android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) on android.view.LayoutInflater.rInflate (LayoutInflater.java:736) on android. view.LayoutInflater.inflate (LayoutInflater.java:489) on android.view.LayoutInflater.inflate (LayoutInflater.java:396) on android.view.LayoutInflater.inflate (LayoutInflater.java:352) at android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:267) at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity) at compatActivity:129 .efg.ghi.MainActivity.onCreate (MainActivity.java:40) at android.app.Activity.performCreate (Activity.java:5008) in android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1079) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2023) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) at android.app.ActivityThread.access $ 600 (ActivityThread.java:130) in android .app.ActivityThread $ H.handleMessage (ActivityThread.java:1195) on android.os.Handler.dispatchMessage (Handler.java:99) on android.os.Looper.loop (Looper.java:137) at android.app.ActivityThread.main (ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative (native method) at java.lang.reflect.Method.invoke ( Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) in dalvik.system ...NativeStart.main (native method) 06-28 20: 06: 42.790 1648-1648 /? I / Process: send signal. PID: 1648 SIG: 9
Code file
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import android.util.Log;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
Button btnRegister;
Button btnRequestLog;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client;
private String android_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if ( findViewById(R.id.fab) == null)
{}
else {
}
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
// Buttons
btnRegister = (Button) findViewById(R.id.btnRegister);
btnRequestLog = (Button) findViewById(R.id.btnRequestLog);
XML file
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
Please help me debug this. I'm kind of stuck and need your help.
source to share
You are using vector drawings. In Android 4.x and earlier, this is only supported if you:
- use Android 23.x or newer support libraries ✓
- include it in gradle build file (vectorDrawables.useSupportLibrary = true) ✓
- use
srcCompat
insteadsrc
whenever you useImageView
The last item is probably an issue that needs to be fixed.
source to share