ximsfei / Android-skin-support

Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!
MIT License
6.4k stars 1.08k forks source link

接入Android-skin-support 3.0.0,Android studio打包失败,apk安装后运行崩溃 #137

Closed yaochangliang159 closed 5 years ago

yaochangliang159 commented 6 years ago

我在application初始化: //主题换肤 SkinCompatManager.withoutActivity(this) // 基础控件换肤初始化 .addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选] .addInflater(new SkinCardViewInflater())// CardView v7 控件换肤初始化[可选] .addInflater(new SkinFlycoTabLayoutInflater()) // .setSkinStatusBarColorEnable(false) // 关闭状态栏换肤,默认打开[可选] // .setSkinWindowBackgroundEnable(false) // 关闭windowBackground换肤,默认打开[可选] .loadSkin(); 这是界面的xml布局代码。虽然比较长,但是里面有cardview `<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="200dip"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="130dip"
        android:background="@drawable/tab01_title_bg"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/iv_back"
            android:layout_width="50dip"
            android:layout_height="50dip"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:scaleType="centerInside"
            android:src="@drawable/iv_back_inside"

            />

        <TextView
            android:id="@+id/tv_title_middle"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:text="我的学堂"
            android:textColor="@color/titlebar_text_color"
            android:textSize="@dimen/big_small_text" />

    </RelativeLayout>

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="140dip"
        android:layout_gravity="bottom"
        android:layout_margin="@dimen/main_card_margin"
        app:cardCornerRadius="10dp"
        app:cardElevation="5dp"
        app:cardUseCompatPadding="true"

        >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"

            >

            <LinearLayout
                android:layout_width="0dip"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/tv_username"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="16dip"
                        android:text="海阔天空"
                        android:textColor="@color/app_main_black_text"
                        android:textSize="@dimen/big_small_text" />

                    <ImageView
                        android:id="@+id/iv_is_vip"
                        android:layout_width="24dip"
                        android:layout_height="24dip"
                        android:layout_marginLeft="12dip"
                        android:src="@drawable/vip_light" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/tv_current_level"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="16dip"
                        android:background="@drawable/level_dengji_bg"
                        android:gravity="center"
                        android:paddingBottom="1dip"
                        android:paddingLeft="3dip"
                        android:paddingRight="3dip"
                        android:paddingTop="1dip"
                        android:text="Lv.0"
                        android:textColor="@color/white"
                        android:textSize="@dimen/small_text" />

                    <LinearLayout
                        android:id="@+id/ll_dengji_iv_container"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                    </LinearLayout>

                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dip"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/tv_today_is_jiasu"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="16dip"
                        android:text="今日已加速"
                        android:textColor="@color/app_main_gray_text"
                        android:textSize="@dimen/small_text" />

                    <TextView
                        android:id="@+id/tv_today_jiasu_tianshu"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="12dip"
                        android:text="0天"
                        android:textColor="@color/app_main_black_text"
                        android:textSize="@dimen/big_large_text" />

                </LinearLayout>

            </LinearLayout>

            <LinearLayout
                android:id="@+id/ll_rank_container"
                android:layout_width="76dip"
                android:layout_height="90dip"
                android:layout_marginRight="12dip"
                android:background="@drawable/vip_dengji_blue_bg"
                android:gravity="center"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/tv_rank"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="0"
                    android:textColor="@color/white"
                    android:textSize="@dimen/big_large_text" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="4dip"
                    android:text="好友排名"
                    android:textColor="@color/white"
                    android:textSize="@dimen/small_text" />

            </LinearLayout>

        </LinearLayout>

    </android.support.v7.widget.CardView>

</FrameLayout>

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv_lv_explain"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dip"
            android:gravity="center"
            android:text="当前距离升级Lv.12还剩88天"
            android:textColor="@color/app_main_gray_text"
            android:textSize="@dimen/small_text" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dip"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv_lv_lower"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16dip"
                android:background="@drawable/level_dengji_bg"
                android:gravity="center"
                android:paddingBottom="1dip"
                android:paddingLeft="3dip"
                android:paddingRight="3dip"
                android:paddingTop="1dip"
                android:text="Lv.11"
                android:textColor="@color/white"
                android:textSize="@dimen/small_text" />

            <ProgressBar
                android:id="@+id/progress_bar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="6dip"
                android:layout_marginRight="6dip"
                android:layout_weight="1"
                android:max="100"
                android:progress="50"
                android:progressDrawable="@drawable/dengji_progress_bg" />

            <TextView
                android:id="@+id/tv_lv_higher"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="16dip"
                android:background="@drawable/level_dengji_bg"
                android:gravity="center"
                android:paddingBottom="1dip"
                android:paddingLeft="3dip"
                android:paddingRight="3dip"
                android:paddingTop="1dip"
                android:text="Lv.12"
                android:textColor="@color/white"
                android:textSize="@dimen/small_text" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="10dip"
            android:layout_marginTop="10dip"
            android:background="@color/app_main_gray_bg">

        </View>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16dip"
                android:text="今日加速"
                android:textColor="@color/app_main_black_text"
                android:textSize="@dimen/big_small_text" />

            <TextView
                android:id="@+id/tv_already_count"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_marginRight="16dip"
                android:layout_weight="1"
                android:gravity="right"
                android:text="3个" />

        </LinearLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_already"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dip">

        </android.support.v7.widget.RecyclerView>

        <View
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:background="@color/app_main_divider_text">

        </View>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dip"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16dip"
                android:text="未加速"
                android:textColor="@color/app_main_black_text"
                android:textSize="@dimen/big_small_text" />

            <TextView
                android:id="@+id/tv_unalready_count"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_marginRight="16dip"
                android:layout_weight="1"
                android:gravity="right"
                android:text="12个" />

        </LinearLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_un_already"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dip">

        </android.support.v7.widget.RecyclerView>

    </LinearLayout>

</ScrollView>

下面这是报错的日志: 04-19 12:44:01.775 1716-1716/com.hyphenate.ehetu_teacher E/AndroidRuntime: FATAL EXCEPTION: main Process: com.hyphenate.ehetu_teacher, PID: 1716 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/graphics/drawable/WrappedDrawable; at skin.support.widget.SkinCompatProgressBarHelper.tileify(SkinCompatProgressBarHelper.java:61) at skin.support.widget.SkinCompatProgressBarHelper.applySkin(SkinCompatProgressBarHelper.java:144) at skin.support.widget.SkinCompatProgressBarHelper.loadFromAttributes(SkinCompatProgressBarHelper.java:53) at skin.support.widget.SkinCompatProgressBar.(SkinCompatProgressBar.java:25) at skin.support.widget.SkinCompatProgressBar.(SkinCompatProgressBar.java:19) at skin.support.app.SkinCompatViewInflater.createViewFromFV(SkinCompatViewInflater.java:188) at skin.support.app.SkinCompatViewInflater.createView(SkinCompatViewInflater.java:91) at skin.support.app.SkinCompatDelegate.createView(SkinCompatDelegate.java:58) at skin.support.app.SkinCompatDelegate.onCreateView(SkinCompatDelegate.java:35) at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:186) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:746) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.hyphenate.ehetu_teacher.ui.BaseEHetuActivity.onCreate(BaseEHetuActivity.java:76) at android.app.Activity.performCreate(Activity.java:6287) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) at cn.jiguang.a.a.d.a.a.d.callActivityOnCreate(Unknown Source) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2412) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2519) at android.app.ActivityThread.access$900(ActivityThread.java:161) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.graphics.drawable.WrappedDrawable" on path: DexPathList[[zip file "/data/app/com.hyphenate.ehetu_teacher-1/base.apk"],nativeLibraryDirectories=[/data/app/com.hyphenate.ehetu_teacher-1/lib/arm, /data/app/com.hyphenate.ehetu_teacher-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at skin.support.widget.SkinCompatProgressBarHelper.tileify(SkinCompatProgressBarHelper.java:61)  at skin.support.widget.SkinCompatProgressBarHelper.applySkin(SkinCompatProgressBarHelper.java:144)  at skin.support.widget.SkinCompatProgressBarHelper.loadFromAttributes(SkinCompatProgressBarHelper.java:53)  at skin.support.widget.SkinCompatProgressBar.(SkinCompatProgressBar.java:25)  at skin.support.widget.SkinCompatProgressBar.(SkinCompatProgressBar.java:19)  at skin.support.app.SkinCompatViewInflater.createViewFromFV(SkinCompatViewInflater.java:188)  at skin.support.app.SkinCompatViewInflater.createView(SkinCompatViewInflater.java:91)  at skin.support.app.SkinCompatDelegate.createView(SkinCompatDelegate.java:58)  at skin.support.app.SkinCompatDelegate.onCreateView(SkinCompatDelegate.java:35)  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)  at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:186)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:746)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  at android.view.LayoutInflater.inflate(LayoutInflater.java:515)  at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  at com.hyphenate.ehetu_teacher.ui.BaseEHetuActivity.onCreate(BaseEHetuActivity.java:76)  at android.app.Activity.performCreate(Activity.java:6287)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)  at cn.jiguang.a.a.d.a.a.d.callActivityOnCreate(Unknown Source)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2412)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2519)  at android.app.ActivityThread.access$900(ActivityThread.java:161)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5541)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)  Suppressed: java.lang.ClassNotFoundException: android.support.v4.graphics.drawable.WrappedDrawable at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadCla `

作者 我看你的demo里面也没有cardview的示例,是什么原因呢? 我的手机是 360 N5 android 6.0系统 我依赖的库的版本是: //主题换肤 compile 'skin.support:skin-support:3.0.0' // skin-support 基础控件支持 compile 'skin.support:skin-support-design:3.0.0' // skin-support-design material design 控件支持[可选] compile 'skin.support:skin-support-cardview:3.0.0' // skin-support-cardview CardView 控件支持[可选] compile 'skin.support:flycotablayout:2.1.2'

ximsfei commented 6 years ago

你用的appcompat-v7版本号是多少? 贴一下其他库的依赖。 还有demo里是有card view(activity_collapsing_toolbar_layout.xml)的。

yaochangliang159 commented 6 years ago

appcompat-v7版本号是25.3.1,这是我的app下的build.gradle 的其他依赖 `dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile project(':easeui') compile project(':pickerview') compile project(':giraffeplayer') compile project(':fastSdk') compile project(':picture_library')

compile group: 'org.bytedeco', name: 'javacv', version: '1.1'

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'me.zhanghai.android.materialprogressbar:library:1.1.5'
compile('com.github.afollestad.material-dialogs:core:0.8.5.6@aar') {
    transitive = true
}
compile('com.github.afollestad.material-dialogs:commons:0.8.5.6@aar') {
    transitive = true
}
compile 'org.greenrobot:eventbus:3.1.1'
compile 'com.kyleduo.switchbutton:library:1.3.4'
compile 'com.nineoldandroids:library:2.4.0'

// compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.0.0@aar' compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' compile 'com.android.support:multidex:1.0.0' //bottom sheet compile 'com.flipboard:bottomsheet-core:1.5.3' compile 'com.flipboard:bottomsheet-commons:1.5.3' // optional //zxing二维码 // -------------------- 以下三个库是必须依赖的 ---------------------------- compile 'com.google.zxing:core:3.2.1' compile 'cn.bingoogolapple:bga-qrcodecore:1.1.7@aar' compile 'cn.bingoogolapple:bga-zxing:1.1.7@aar' //banner compile 'cn.bingoogolapple:bga-banner:2.1.7@aar' //富文本编辑 compile 'jp.wasabeef:richeditor-android:1.2.2' //富文本显示器 compile 'org.sufficientlysecure:html-textview:3.4' //permission dispatcher compile("com.github.hotchemi:permissionsdispatcher:3.0.1") { // if you don't use android.app.Fragment you can exclude support for them exclude module: "support-v13" } annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.0.1" //日历里面用的的库 compile 'joda-time:joda-time:2.9.4' //侧滑删除的recyclerview compile 'com.yanzhenjie:recyclerview-swipe:1.1.3' //引导界面 compile 'com.isanwenyu.highlight:highlight:1.8.0' //smart refresh layout compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-5' //显示gif图片 compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.3' //recyclerview的snap效果 compile 'com.github.rubensousa:gravitysnaphelper:1.5' //http //http compile 'com.lzy.net:okgo:3.0.4' //引导库用到的 compile 'net.i2p.android.ext:floatingactionbutton:1.9.0' //主题换肤 compile 'skin.support:skin-support:3.0.0' // skin-support 基础控件支持 compile 'skin.support:skin-support-design:3.0.0' // skin-support-design material design 控件支持[可选] compile 'skin.support:skin-support-cardview:3.0.0' // skin-support-cardview CardView 控件支持[可选] compile 'skin.support:flycotablayout:2.1.2'

}

`

yaochangliang159 commented 6 years ago

我刚又看了一眼报错日志 发现开头是 SkinCompatProgressBarHelper怎么怎么了。。。 我这个界面确实有个ProgressBar,难道不是cardview的问题,是progress的问题。。。。

willsame commented 6 years ago

@ximsfei 3.0.0 的版本跟support-V7包有冲突,我换成2.2.3版本的就好了,3.0.0 的不行,我同事的也一样,每个人报错不一样,但是换成2.2.3的版本就OK

yaochangliang159 commented 6 years ago

@willsame 感谢老铁。我换成2.2.3就好了。我的好几个界面有progressbar,在v3.0.0报错,我降成2.2.3就好了,估计是support:appcompat版本高低导致的,已解决。不过这个库很大的帮助了我,也很感谢作者!

ximsfei commented 6 years ago

@willsame @yaochangliang159 更新日志里有描述, 3.0.0是为了适配com.android.support:appcompat-v7:27+。 如果项目中用的appcompat-v7库还是25.3.1,那么skin-support库仍然用2.+就行。 如果项目中用的appcompat-v7库升到了27+,那么skin-support库需要升到3.+。

chenjidong commented 6 years ago

我也碰到了这个问题,8.0 上居然不报错, appcompatv 26.1.0 ,项目完成测试才发现,先感谢作者分享!