java - Android 10 上的 InflationX/书法崩溃

标签 java android android-studio android-10.0 calligraphy

我将我的 targetSdkVersion26 增加到 29 并面临这个崩溃:

ReflectionUtils.java io.github.inflationx.viewpump.ReflectionUtils.getValue

enter image description here

About My App:

-App in java language

-not using android X

-targetSdkVersion 29

Gradle 中的当前依赖项:

implementation 'io.github.inflationx:calligraphy3:3.0.0'
implementation 'io.github.inflationx:viewpump:1.0.0'

我也查看了以下所有链接,但没有一个有帮助:

GitHubIssue35

Crash on Android 10 (InflateException in layout/abc_screen_simple line #17)

GitHubIssue37

Crash on calligraphy library by chris Jenx for Android Q

我还如下升级了我的依赖项:

implementation 'io.github.inflationx:calligraphy3:3.1.1'
implementation 'io.github.inflationx:viewpump:2.0.3'

但随后出现以下错误:

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/os/BuildCompat;
    at io.github.inflationx.viewpump.internal.-ViewPumpLayoutInflater.<init>(-ViewPumpLayoutInflater.kt:25)
    at io.github.inflationx.viewpump.ViewPumpContextWrapper$inflater$2.invoke(ViewPumpContextWrapper.kt:25)
    at io.github.inflationx.viewpump.ViewPumpContextWrapper$inflater$2.invoke(ViewPumpContextWrapper.kt:22)
    at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
    at io.github.inflationx.viewpump.ViewPumpContextWrapper.getInflater(Unknown Source:7)
    at io.github.inflationx.viewpump.ViewPumpContextWrapper.getSystemService(ViewPumpContextWrapper.kt:31)
    at android.view.LayoutInflater.from(LayoutInflater.java:229)
    at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:167)
    at android.app.Activity.getSystemService(Activity.java:6146)
    at android.view.LayoutInflater.from(LayoutInflater.java:229)
    at com.android.internal.policy.PhoneWindow.<init>(PhoneWindow.java:346)
    at com.android.internal.policy.PhoneWindow.<init>(PhoneWindow.java:362)
    at android.app.Activity.attach(Activity.java:7246)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3055)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7050)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.os.BuildCompat" on path: DexPathList[[zip file "/data/app/ir.daal.app.debug-h0TdlfmBM6nnB6Tuy6emlg==/base.apk"],nativeLibraryDirectories=[/data/app/ir.daal.app.debug-h0TdlfmBM6nnB6Tuy6emlg==/lib/arm64, /data/app/ir.daal.app.debug-h0TdlfmBM6nnB6Tuy6emlg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at io.github.inflationx.viewpump.internal.-ViewPumpLayoutInflater.<init>(-ViewPumpLayoutInflater.kt:25) 
    at io.github.inflationx.viewpump.ViewPumpContextWrapper$inflater$2.invoke(ViewPumpContextWrapper.kt:25) 
    at io.github.inflationx.viewpump.ViewPumpContextWrapper$inflater$2.invoke(ViewPumpContextWrapper.kt:22) 
    at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81) 
    at io.github.inflationx.viewpump.ViewPumpContextWrapper.getInflater(Unknown Source:7) 
    at io.github.inflationx.viewpump.ViewPumpContextWrapper.getSystemService(ViewPumpContextWrapper.kt:31) 
    at android.view.LayoutInflater.from(LayoutInflater.java:229) 
    at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:167) 
    at android.app.Activity.getSystemService(Activity.java:6146) 
    at android.view.LayoutInflater.from(LayoutInflater.java:229) 
    at com.android.internal.policy.PhoneWindow.<init>(PhoneWindow.java:346) 
    at com.android.internal.policy.PhoneWindow.<init>(PhoneWindow.java:362) 
    at android.app.Activity.attach(Activity.java:7246) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3055) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7050) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 

I didn't found any docs about the restriction of usage of this versions of Calligraphy only on Android X

Is there any better way to solve this crash rather than decrease the targetSdkVersion to 28?

最佳答案

嘿,你可以直接使用 android:fontFamily="@font/aktiv_bold" 属性为 Button, TextView, EditText ... 设置自定义字体,不是必需的使用书法或 ViewPump。

            <Button
                ...
                android:fontFamily="@font/aktiv_bold"
                ...
                >
            </Button>

你所有的字体都应该放在res目录下的font文件夹中。

enter image description here

关于java - Android 10 上的 InflationX/书法崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59076741/

相关文章:

java - Jar cron 作业未运行(手动运行)

android - 使用房间数据库查询在产品之间进行搜索

android - 应用程序在加载浏览器时崩溃

android-studio - 将 Android Studio 指向特定的 cmake 版本

android-studio - Kotlin:如何分类().fooA()。fooB()

java - 使用 jar 文件的循环复杂度

java - Maven 替代品?

java - 如何将 SQL 中的 LONGBLOB 图像制作成缓冲图像以显示在标签中

android - react native : How do I manage the 9000 Android screen sizes?

java - 如何从时间列表中获取最大时间?