몇 가지 특정 장치에서 충돌에 대해 다음 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;
}
}
이 문제를 해결하는 방법을 알고있는 사람이 있습니까?
관련 코드 게시 –
문제를 일으키는 디자인 지원 라이브러리 버전을 언급해야합니다. – BladeCoder
@BladeCoder 좋은 지적입니다. 버전은 25.1.0입니다. –