LagouAndroidShare
LagouAndroidShare copied to clipboard
替换成调用自己的类运行时找不到activity,调用Log下的方法没问题。
可以在编译后生成的文件中,看到预期的代码。
一下是崩溃日志,一启动就会崩溃。但是如果和课程中一样只是加入Log的方法没有这个问题。 2020-09-10 15:39:47.556 16981-16981/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.wondroid.transforminject, PID: 16981 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wondroid.transforminject/com.wondroid.transforminject.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.wondroid.transforminject.MainActivity" on path: DexPathList[[zip file "/data/app/com.wondroid.transforminject-o5Gj4PwPLYWk0oRKUyulcg==/base.apk"],nativeLibraryDirectories=[/data/app/com.wondroid.transforminject-o5Gj4PwPLYWk0oRKUyulcg==/lib/arm64, /system/lib64, /system/product/lib64]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3228) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3443) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2040) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7520) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.wondroid.transforminject.MainActivity" on path: DexPathList[[zip file "/data/app/com.wondroid.transforminject-o5Gj4PwPLYWk0oRKUyulcg==/base.apk"],nativeLibraryDirectories=[/data/app/com.wondroid.transforminject-o5Gj4PwPLYWk0oRKUyulcg==/lib/arm64, /system/lib64, /system/product/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:230) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41) at android.app.Instrumentation.newActivity(Instrumentation.java:1251) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3216) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3443) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2040) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7520) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
最近恰好也碰到了这个问题,出现这个原因是Activity没有被打进dex,你可以尝试反编译一下apk看一下。 你可以看下LifeCycleTransform.groovy的实现,在transform中遍历DirectoryInput时,最后有一段代码,加上就可以了。
//处理完输入文件后把输出传给下一个文件
def dest = outputProvider.getContentLocation(directoryInput.name, directoryInput.contentTypes,
directoryInput.scopes, Format.DIRECTORY)
FileUtils.copyDirectory(directoryInput.file, dest)