AndResGuard icon indicating copy to clipboard operation
AndResGuard copied to clipboard

开启混淆后,fontFamily失效

Open sw926 opened this issue 7 years ago • 9 comments

项目里面使用support包全局替换了字体,如果使用resguard打包,替换的字体无效。 theme是这样设置的:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="fontFamily">@font/my_font</item>
        <item name="android:fontFamily" tools:targetApi="jelly_bean">@font/my_font</item>
        <item name="android:textViewStyle">@style/myTextViewStyle</item>
        <item name="android:buttonStyle">@style/myButtonStyle</item>
        <item name="android:editTextStyle">@style/myEditTextStyle</item>
    </style>

    <style name="myTextViewStyleBold" parent="@android:style/Widget.TextView">
        <item name="android:fontFamily" tools:targetApi="jelly_bean">@font/bold</item>
        <item name="fontFamily">@font/bold</item>
    </style>

    <style name="myTextViewStyle" parent="@android:style/Widget.TextView">
        <item name="android:fontFamily" tools:targetApi="jelly_bean">@font/normal</item>
        <item name="fontFamily">@font/normal</item>
    </style>

    <style name="myButtonStyle" parent="Widget.AppCompat.Button">
        <item name="android:fontFamily" tools:targetApi="jelly_bean">@font/bold</item>
        <item name="fontFamily">@font/bold</item>
    </style>

    <style name="myEditTextStyle" parent="Widget.AppCompat.EditText">
        <item name="android:fontFamily" tools:targetApi="jelly_bean">@font/normal</item>
        <item name="fontFamily">@font/normal</item>
    </style>

sw926 avatar Dec 29 '17 04:12 sw926

问题解决了,添加了res pathh mapping

res path mapping:
    res/font -> res/font
    res/font-v22 -> res/font-v22

但是还是希望各位大神能再以后的版本里面优化一下,不用添加白名单

sw926 avatar Dec 29 '17 04:12 sw926

这个是加在哪个文件里

Reginer avatar Jul 06 '18 07:07 Reginer

@Reginer 参考一下这个~

https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md#白名单

https://github.com/shwenzhang/AndResGuard/blob/1caaa5c12608fcb213e1064eb5b4f94f588f253f/AndResGuard-example/app/resource_mapping.txt#L1-L6

imknown avatar Jul 06 '18 07:07 imknown

之前没仔细看,原来还有个resource_mapping.txt文件

Reginer avatar Jul 06 '18 07:07 Reginer

@imknown emm,之前还没注意有这东西

Reginer avatar Jul 06 '18 07:07 Reginer

我在 res path mapping: 里面加了 res/font -> res/fontres/font-v22 -> res/font-v22 后报错,错误是 ... is not equal, there must be some problem 这个异常是ResourceApkBuilder#generalUnsignApk()里面抛出来的,我看了 https://github.com/shwenzhang/AndResGuard/issues/302 单 res 文件夹路径 keep 这个issue也是这个异常

AndResGuard-cli-1.2.15.jar 和 AndResGuard-cli-1.1.16.jar 测试过都是这样子

weikeet avatar Nov 18 '19 08:11 weikeet

@lecymeng 可否提供下APK,我本地调试下

simpleton avatar Nov 18 '19 09:11 simpleton

@lecymeng 可否提供下APK,我本地调试下

APK链接: https://c-t.work/s/61c5d0a3fb7e42

TextView字体设置是 app:fontFamily="@font/din_bold" 混淆后 不会crash,但是没有效果

截图

在Java/Kotlin里面设置字体,例如 textPaint.typeface = ResourcesCompat.getFont(context, R.font.din_bold) 会Crash,异常是Resource Not Found Exception

目前只能暂时把字体改到assets目录下 来设置字体

weikeet avatar Nov 18 '19 10:11 weikeet

Any update about this issue? I am facing the same problem, maybe AndResGuard can be support font resources automatically thx

Suki-VT avatar Nov 14 '20 13:11 Suki-VT