LagouAndroidShare icon indicating copy to clipboard operation
LagouAndroidShare copied to clipboard

androidx 无法正常启动

Open LaoJiZhang opened this issue 4 years ago • 2 comments

2020-04-12 22:03:24.204 18100-18100/com.laojizhang.compile_insert E/AndroidRuntime: FATAL EXCEPTION: main Process: com.laojizhang.compile_insert, PID: 18100 java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/appcompat/R$drawable; at androidx.appcompat.widget.AppCompatDrawableManager$1.(AppCompatDrawableManager.java:63) at androidx.appcompat.widget.AppCompatDrawableManager.preload(AppCompatDrawableManager.java:57) at androidx.appcompat.app.AppCompatDelegateImpl.(AppCompatDelegateImpl.java:328) at androidx.appcompat.app.AppCompatDelegateImpl.(AppCompatDelegateImpl.java:278) at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:221) at androidx.appcompat.app.AppCompatActivity.getDelegate(AppCompatActivity.java:543) at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:98) at android.app.Activity.attach(Activity.java:6909) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2750) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.appcompat.R$drawable" on path: DexPathList[[zip file "/data/app/com.laojizhang.compile_insert-6QI6CYdHxt2f3XyKbd9MaQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.laojizhang.compile_insert-6QI6CYdHxt2f3XyKbd9MaQ==/lib/x86, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at androidx.appcompat.widget.AppCompatDrawableManager$1.(AppCompatDrawableManager.java:63)  at androidx.appcompat.widget.AppCompatDrawableManager.preload(AppCompatDrawableManager.java:57)  at androidx.appcompat.app.AppCompatDelegateImpl.(AppCompatDelegateImpl.java:328)  at androidx.appcompat.app.AppCompatDelegateImpl.(AppCompatDelegateImpl.java:278)  at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:221)  at androidx.appcompat.app.AppCompatActivity.getDelegate(AppCompatActivity.java:543)  at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:98)  at android.app.Activity.attach(Activity.java:6909)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2750)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)  at android.app.ActivityThread.-wrap11(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)  at android.os.Handler.dispatchMessage(Handler.java:105)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6541)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

LaoJiZhang avatar Apr 12 '20 14:04 LaoJiZhang

导致出现该错误的原因是:从Android Gradle插件3.6.0-alpha01开始,不再生成R.java,并且将R片段与其他源分开编译为R.jar。修改Gradle 插件版本低于3.6就可以了,或者是在Transform 中copy R文件。

dreamlgblog avatar Apr 15 '20 03:04 dreamlgblog

把这段代码复制到LifeCycleTransfrom.groovy的transfrom中就可以了

transformInput.jarInputs.each { JarInput jarInput ->                 File file = jarInput.file                 System.out.println("find jar input: " + file.name)                 def dest = outputProvider.getContentLocation(jarInput.name,                          jarInput.contentTypes,                         jarInput.scopes, Format.JAR)                 FileUtils.copyFile(file, dest)             }

pluto8172 avatar Apr 27 '20 08:04 pluto8172