1

몇 가지 특정 장치에서 충돌에 대해 다음 stacktrace가 표시됩니다. OSv5.1을 실행에 두 장치가 나는 충돌에 직면

Fatal Exception: android.view.InflateException: Binary XML file line #161: Error inflating class com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus 
     at android.view.LayoutInflater.createView(LayoutInflater.java:633) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
     at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116) 
     at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88) 
     at com.adroitandroid.stitchastory.HomeActivity$StartStoryFragment.onCreateView(HomeActivity.java:415) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
     at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
     at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
     at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998) 
     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5763) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
Caused by java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Constructor.newInstance(Constructor.java) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
     at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
     at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116) 
     at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88) 
     at com.adroitandroid.stitchastory.HomeActivity$StartStoryFragment.onCreateView(HomeActivity.java:415) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
     at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
     at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
     at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998) 
     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5763) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
Caused by android.content.res.Resources$NotFoundException: Resource ID #0x7f0f007c 
     at android.content.res.Resources.getValue(Resources.java:1463) 
     at android.support.v7.content.res.AppCompatResources.isColorInt(AppCompatResources.java:161) 
     at android.support.v7.content.res.AppCompatResources.inflateColorStateList(AppCompatResources.java:108) 
     at android.support.v7.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:74) 
     at android.support.v7.widget.TintTypedArray.getColorStateList(TintTypedArray.java:136) 
     at android.support.design.widget.TextInputLayout.(TextInputLayout.java:244) 
     at android.support.design.widget.TextInputLayout.(TextInputLayout.java:183) 
     at com.adroitandroid.stitchastory.ui.TextInputLayoutPlus.(TextInputLayoutPlus.java:19) 
     at com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus.(AppTextInputLayoutPlus.java:16) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
     at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
     at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116) 
     at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88) 
     at com.adroitandroid.stitchastory.HomeActivity$StartStoryFragment.onCreateView(HomeActivity.java:415) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298) 
     at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323) 
     at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136) 
     at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998) 
     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5763) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

언급 한 자원 내 R.java에서

public static final int design_tint_password_toggle=0x7f0f007c; 

, 나 자신을 정의한 기본적으로없는 자원이다. 그러나, 여기에 팽창하려고하는 사용자 정의 레이아웃입니다. 이전의 또 다른 충돌에 대해서, 필자는 텍스트 뷰를 XML로 수정하여 텍스트 색상을 명시 적으로 언급했다. 그러나 이것은 찾을 수없는 안드로이드 리소스라는 점에서 다릅니다. 앱 시작에 맞지 않습니다.

덧붙여서, 이것은 proguarded apk입니다. 다음은 proguard 설정 파일에 다음과 같이 상수를 유지합니다.

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 
-keep class **.R$* 

또한 나는 특정 빌드 유형에 대한

shrinkResources true 

을 주석 시도했다, 그러나이 문제를 해결하지 않았다.

나는 25.1.0 및 here is the layout file은 그것이 충돌 할 때 팽창하려고 buildToolsVersion '25 .0.1 '

지원 라이브러리 버전입니다 사용하고 있습니다. 라인 (161)은 크래시와 관련된 뷰가 선언되는 곳이다. 편의를 위해 여기에 붙여 넣으십시오.

<com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus 
    android:id="@+id/contribution_til" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignEnd="@id/done_ib" 
    android:layout_alignStart="@id/cancel_ib" 
    android:layout_below="@id/done_ib" 
    android:layout_centerInParent="true" 
    android:paddingTop="16dp" 
    app:counterEnabled="true" 
    app:counterMaxLength="@integer/maxContributionLength" 
    app:errorEnabled="true" 
    app:hintEnabled="false"> 

    <com.adroitandroid.stitchastory.ui.ContentEditTextPlus 
     android:id="@+id/contribution_et" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="top" 
     android:hint="@string/hint_add_story" 
     android:imeOptions="actionDone" 
     android:inputType="textAutoComplete|textCapSentences|textShortMessage|textMultiLine" /> 
</com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus> 

AppTextInputLayoutPlus에 대한 멋진 점은 다음과 같은 방식으로 맞춤 서체를 사용하기 만하면됩니다.

abstract class TextInputLayoutPlus extends TextInputLayout { 
    public TextInputLayoutPlus(Context context) { 
     super(context); 
     init(); 
    } 

    public TextInputLayoutPlus(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public TextInputLayoutPlus(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(); 
    } 

    private void init() { 
     setTypeface(Typeface.createFromAsset(getContext().getAssets(), getTextFont())); 
    } 

    protected abstract String getTextFont(); 
} 
// in its own class file 
public class AppTextInputLayoutPlus extends TextInputLayoutPlus { 
    public AppTextInputLayoutPlus(Context context) { 
     super(context); 
    } 

    public AppTextInputLayoutPlus(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public AppTextInputLayoutPlus(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected String getTextFont() { 
     return AppTextView.APP_TEXT_FONT; 
    } 
} 

이 문제를 해결하는 방법을 알고있는 사람이 있습니까?

+0

관련 코드 게시 –

+0

문제를 일으키는 디자인 지원 라이브러리 버전을 언급해야합니다. – BladeCoder

+0

@BladeCoder 좋은 지적입니다. 버전은 25.1.0입니다. –

답변

0

이것은 추측입니다. 문제는 TextInputLayout과 관련이 없지만 ContentEditTextPlus과 더 관련이 있습니다. 최근에 나는 ContentEditTextPlus 코드 및 ColorInt에 대한 ColorRes int 인수를 혼합하거나 그 반대의 setTextColor()를 재정의 한 문제를 확인했습니다. 그것은 getColorStateList()에서 리소스를 찾을 수 없음 예외를 설명해야합니다.

관련 문제