0

Android 개발에서 신생아입니다. 나는이 응용 프로그램을 Android 5.1에서 작동하도록 만들었지 만 Android 4.1에서이 응용 프로그램을 배포하려고 시도했을 때 주요 활동 자체에서 충돌하는 데 사용되었습니다. 나는 벡터 이미지를 사용하고 그것과 호환되지 않기 때문에 안드로이드 4.1 때문에 becuase 이해했습니다.앱이 android 5.1 및 6.1에서는 잘 작동하지만 4.10 (API 16)에서 충돌합니다.

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

내가 지금

AndroidRuntime이 오류를 얻고있다 : 치명적인 예외 : 아래에 언급 한 바와 같이이 문제를 극복하기 위해 내가 코드를 설정 주요 java.lang.RuntimeException가 : 시작할 수 없습니다 activityComponentInfo {닷컴 .abc.efg.plcapp/com.abc.efg.ghi.MainActivity} : android.view.InflateException : 바이너리 XML 파일 라인 # 37 : 오류 팽창 클래스 이미지 뷰 android.app.ActivityThread.performLaunchActivity에서 (ActivityThread 된 .java : 2,059) android.app.ActivityThread $ H에서 android.app.ActivityThread.access $ 600 (ActivityThread.java:130) 에서 android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) 에서 . handleMessage (ActivityThread.java:1195) (android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:137) android.app.ActivityThread.main ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative (네이티브 메소드) 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) at dalvik.system.NativeStart android.view에서 android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704)에서 오류 팽창 클래스 이미지 뷰 : android.view.InflateException : 바이너리 XML 파일 라인 # 37에 의한 .main (기본 방법) .LayoutInflater.rInflate (LayoutInflater.java:746) at android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) at android. android.view에서 android.view.LayoutInflater.rInflate (LayoutInflater.java:736) 에서 android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) 에서 .view.LayoutInflater.rInflate (LayoutInflater.java:736) .LayoutInflater.inflate (LayoutInflater.java:489) android.view.LayoutInflater.inflate (LayoutInflater.java:396)에서 android.view.LayoutInflater.inflate (LayoutInflater.java:352)에서 android.support에서 . v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:267) at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:129) 로이드에서 android.app.Activity.performCreate에서 MainActivity.onCreate (MainActivity.java:40) android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1079)에서 (Activity.java:5008) 에서 16,.app.ActivityThread.performLaunchActivity (ActivityThread.자바 : 2,023) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) android.app.ActivityThread.access $ 600 (ActivityThread.java:130) 에서 에서 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 (네이티브 메소드) at java.lang.reflect.Method.invoke (Method.java:511),451,515,dalvik.system.NativeStart에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553)에서 에서 .main (네이티브 메소드) 원인 : android.content.res.Resources $ NotFoundException : 드로어 블 리소스 ID # 0x7f020057 res/drawable/ic_mood_24dp.xml 파일에서 android.content.res.Resources.loadDrawable (Resources.java)에있는 : 1918) android.content.res.TypedArray.getDrawable (TypedArray.java:601) android.widget.ImageView (ImageView.java:120) 에서,451,515,android.support.v7.widget.AppCompatImageView. (AppCompatImageView.java:57) android.support.v7.widget.AppCompatImageView시. (AppCompatImageView.java:53) android.support.v7.app.AppCompatViewInflater에서 android.support.v7.app.AppCompatDelegateImplV7.onCreateView에서 .createView android.support.v7.app.AppCompatDelegateImplV7.createView (AppCompatDelegateImplV7.java:963)에서 (AppCompatViewInflater.java:106) (AppCompatDelegateImplV7.java:1022) at android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView (LayoutInflaterCompatHC.java:44)android.view.LayoutInflater.parseInclude (LayoutInflater.java:830)에서 android.view.LayoutInflater.rInflate (LayoutInflater.java:746) 에서 android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:675)에서 로이드에서 android.view.LayoutInflater.rInflate에서 android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) 에서 android.view.LayoutInflater.rInflate (LayoutInflater.java:736) (LayoutInflater.java:736)에서 .view.LayoutInflater.inflate (LayoutInflater.java:489) android.view.LayoutInflater.inflate (LayoutInflater.java:396) android.support.v7.app.AppCompatActivity에서 android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:267) 에서 android.view.LayoutInflater.inflate (LayoutInflater.java:352) 에서 51,515,. 된 setContentView android.app.Instrumentation.callActivityOnCreate (계측에 android.app.Activity.performCreate (Activity.java:5008)에서 MainActivity.onCreate (MainActivity.java:40)에서 (AppCompatActivity.java:129) . java : 1079) at android.app.ActivityThread.performLaunchA ctivity (ActivityThread.자바 : 2,023) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2084) android.app.ActivityThread.access $ 600 (ActivityThread.java:130) 에서 에서 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 (네이티브 메소드) at java.lang.reflect.Method.invoke (Method.java:511) dalvik.system.NativeStart에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553)에서 에서 에서 android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:877)에서 유효하지 않은 당김 태그 벡터 : org.xmlpull.v1.XmlPullParserException : 바이너리 XML 파일 라인 1에 의한 .main (기본 방법) android.graphics.drawable.Drawable.createFromXml (Drawable.java:818) and35.11.11. android.content.res.TypedArray.getDrawable (TypedArray.java:601) android.widget.ImageView (ImageView.java:120)에서 에서 android.support.v7.widget.AppCompatImageView (AppCompatImageView.java : 57) 에서 android.support.v7.widget.AppCompatImageView. android.support에서 android.support.v7.app.AppCompatViewInflater.createView (AppCompatViewInflater.java:106)에서 (AppCompatImageView.java:53) . v7.app.AppCompatDelegateImplV7.createView (AppCompatDelegateImplV7.java:963) at android.support.v7.app.AppCompatDele gateImplV7.onCreateView android.view.LayoutInflater.createViewFromTag에서 android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView (LayoutInflaterCompatHC.java:44) 에서 (AppCompatDelegateImplV7.java:1022) (LayoutInflater.java:675) android.view.LayoutInflater.rInflate에서 android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) 에서 android.view.LayoutInflater.rInflate (LayoutInflater.java:746) (LayoutInflater.java:736) 에서 에서 android.view.LayoutInflater.parseInclude (LayoutInflater.java:830) android.view.LayoutInflater.rInflate (Layou tInflater.java:736) android.view.LayoutInflater.inflate에서 android.view.LayoutInflater.inflate (LayoutInflater.java:396) 에서 android.view.LayoutInflater.inflate (LayoutInflater.java:489) 에서 (LayoutInflater에서. 자바 : 352) android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:129) 에서 android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:267) 에서의 COM .abc.efg.ghi.MainActivity.onCreate (MainActivity.java:40) android.app.Activity.performCreate (활동.자바 : 5008) android.app.ActivityThread.handleLaunchActivity에서 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2023) 에서 android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1079) (ActivityThread에서 된 .java : 2,084)에 android.app.ActivityThread.access $ 600 (ActivityThread.java:130) android.os.Handler.dispatchMessage에서 android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1195)에서 (Handler.java:99) android.os.Looper.loop (Looper.java:137) android.app.ActivityThread.main (ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative (기본 메소드) at java.lang.reflect.Method.invoke (Method.java:511) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553) at dalvik.system.NativeStart. 기본 (기본 방법) 06-28 20 : 06 : 42.790 1648-1648 /? I/Process : 신호를 보내는 중. PID : 1648 SIG : 9

코드 파일

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 파일

<?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> 

이 디버깅을 도와주세요. 나는 갇혀 있고 당신의 도움이 필요할 것입니다.

+0

는 파일을 게시하시기 바랍니다 : 고해상도/ic_mood_24dp.xml – LaurentY

+0

자원 $ NotFoundException/당김 : 파일 고해상도/드로어 블/사진 ic_mood_24dp.xml 드로어 블 리소스 ID 번호 0x7f020057 – LaurentY

답변

2

벡터 드로어 블을 사용하고 있습니다. 안드로이드 4.x 및 이전 버전에서이에만 지원됩니다 만약 당신이 :

  • 사용
  • ✓ 안드로이드 지원 라이브러리 23.x 이상 ✓
  • 가 Gradle을 빌드 파일에서 활성화 (vectorDrawables.useSupportLibrary = TRUE) 당신이 ImageView

을 사용할 때마다 마지막 항목은 아마 해결해야 할 문제가 srcCompat 대신 src

  • 사용.

  • +0

    에서 당신에게 당신이 코도 도움을 주셔서 대단히 감사드립니다 ... 그것은했다. 그러나 내가 srcCompat을 추가하려고 할 때, 그렇게하지 못하게했을 때, 나는이 게시물의 도움으로 srcCompat를 추가 할 수 있었다. http://stackoverflow.com/questions/35645148/cant-use-srccompat-for-imageviews-in- 기계적 인조 인간 –