didi / drouter Goto Github PK
View Code? Open in Web Editor NEWAndroid Router Framework
License: Apache License 2.0
Android Router Framework
License: Apache License 2.0
从FragmentA跳入ActivityB,在ActivityB中setResult后,FragmentA中会有回调。
从FragmentA跳入ActivityB,再从ActivityB跳转(start(Context context, RouterCallback callback))到ActivityC,销毁ActivityC后,在ActivityB中setResult,FragmentA中无法收到回调。如果ActivityB跳转ActivityC时使用的是start(),FragmentA中会有回调。
D/DRouterCore: Request start -------------------------------------------------------------
D/DRouterCore: primary request "1", router uri "didi://router/login?a=1&b=2", need callback "true"
W/DRouterCore: warning: there is no request target match
D/DRouterCore: primary request "1" complete, router uri "didi://router/login?a=1&b=2", all reason {}
D/0PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/8PRETTY_LOGGER: │ false
D/0PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/DRouterCore: Request finish ------------------------------------------------------------
@AndroidEntryPoint
@Router(scheme = "didi", host = "router", path = "/login")
class LoginActivity : BaseActivity<ActivityLoginBinding>()
DRouter.build("didi://router/login?a=1&b=2")
.start(context) { result ->
val r = result.isActivityStarted
Logger.d(r)
}
buildscript {
repositories {
// other repositories...
mavenCentral()
google()
jcenter()
}
dependencies {
// other plugins...
classpath(Deps.Jetpack.Hilt.hiltPlugin)
classpath "io.github.didi:drouter-plugin-proxy:1.0.2"
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.1.1' apply false
id 'com.android.library' version '7.1.1' apply false
id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
id 'org.jetbrains.kotlin.plugin.serialization' version '1.6.10' apply false
id 'org.jetbrains.kotlin.jvm' version '1.6.10' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
最新版本
DRouter.build("didi://router/login")
.putExtra(key, value)
.start(this, new RouterCallback.ActivityCallback() {
@OverRide
public void onActivityResult(int resultCode, Intent data) {
}
});
使用以上方式的同时也复写了原生Activity的onActivityResult,但是复写的回调了,而DRouter的没有回调,是不能同时共存么?
不依赖插件直接编译不会出现问题,依赖后一直卡在app:dexBuilderDebug出现Unexpected scopes found in folder 'E:\MikumoDev\AndroidDev\Ostar\app\build\intermediates\transforms\DRouter\debug'. Required: EXTERNAL_LIBRARIES, SUB_PROJECTS. Found: EXTERNAL_LIBRARIES, PROJECT, SUB_PROJECTS
如果一个path中带有查询参数,应该怎么定义呢?比如:/xxx/<id>/xxx?a=<a>&b=<b>,但是这样编译报错
【平台环境】:mac
【Android Studio版本】:Android Studio Bumblebee | 2021.1.1 Patch 3
【编译使用Java版本】:jdk11
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0
【gradle-plugin版本】:com.android.tools.build:gradle:7.1.1
【gradle-wrapper版本】:gradle-7.3.2-bin.zip
【drouter版本】:drouter-api:2.3.1
【复现步骤】:使用publish打包aar后上传到maven,主工程依赖aar,正常打包出apk,编译提示 Error: there is no drouter-plugin version,未扫描类文件,没有产生路由表
【期望结果】:正常的log,正常的生成路由表,正常的进行路由跳转
【日志】:> Task :app:transformClassesAndResourcesWithDRouterForDebug
plugin proxy version: 1.0.2
Error: there is no drouter-plugin version
4.2.2满足需求,.gradle/droute成功的download到plugin了
7.1.1没有下载插件文件,TransformProxy中的pluginVersion为空,猜测可能是ProxyUtil.getPluginVersion方法无法解析jar文件中的META-INF/drouter
请按照以下模板创建新的issue,填写环境,方便快速定位问题
【平台环境】:mac/windows
【Android Studio版本】:Bumblebee | 2021.1.1 Patch 2
【编译使用Java版本】:jdk11,查看AS->设置->Build,Execution,Deployment->Build Tools->Gradle->Gradle JDK
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30
【gradle-plugin版本】:com.android.tools.build:gradle:4.2.2
【gradle-wrapper版本】:gradle-6.7.1-bin.zip
【drouter版本】:drouter-api:2.3.0
【复现步骤】:...
【期望结果】:...
【日志】:如方便最好也贴出来
【平台环境】:mac
【Android Studio版本】:Chipmunk | 2021.2.1 Patch 2
【编译使用Java版本】:jdk8
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0
【gradle-plugin版本】:com.android.tools.build:gradle:3.4.3
【gradle-wrapper版本】:gradle-5.6.4-all.zip
【drouter版本】:drouter-api:2.3.1
【drouter插件版本】drouter-plugin:1.3.1
【复现步骤】:接入DRouter运行编译
【期望结果】:运行ok
【日志】:
我们的项目使用了DRouter,并且版本依赖已升级至2.1.3,编译生成出来的aab文件,安装到手机上,无法正常跳转。报 warning: there is no request target match
编译出来的apk能正常使用~
请问是否有解决办法,往告知,谢谢。
Gradle编译报错,是必须升级到java 11吗?
【平台环境】:mac
【Android Studio版本】:Chipmunk | 2021.2.1 Patch 1
【编译使用Java版本】:jdk8
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0
【gradle-plugin版本】:com.android.tools.build:gradle:3.4.3
【gradle-wrapper版本】:gradle-5.6.4-all.zip
【drouter版本】:drouter-api:2.4.2
【复现步骤】:接入DRouter运行编译
【期望结果】:运行ok
【日志】:
FAILURE: Build failed with an exception.
com/didi/drouter/plugin/RouterTransform has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
Try:
Run with --debug option to get more log output. Run with --scan to get full insights.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesAndResourcesWithDRouterForArm64Debug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.UnsupportedClassVersionError: com/didi/drouter/plugin/RouterTransform has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java_lang_ClassLoader$loadClass$0.call(Unknown Source)
at com.didi.drouter.plugin.TransformProxy.transform(TransformProxy.groovy:64)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140)
... 34 more
Get more help at https://help.gradle.org
BUILD FAILED in 28s
632 actionable tasks: 1 executed, 631 up-to-date
G:\Android\temp\epad\module_oa\build\intermediates\runtime_library_classes_jar\debug\classes.jar: 另一个程序正在使用此文件,进程无法访问。
项目接入DRouter之后经常会出现这个,有什么办法解决么?目前我是手动杀掉java.exe
如:"didi://web?url=${Uri.encode("https://www.baidu.com?a=b&c=d")}&title=标题"
使用url字段时还需要decode才能使用,和原生url传参使用混淆了
希望框架层QueryParameter解析时就做好decode处理或者支持上层自定义,使用方无需decode
看了wiki示例,对于路由到Fragment这节:
https://github.com/didi/DRouter/wiki/1.-Router#fragment%E5%AF%BC%E8%88%AA
是否存在同步式路由带Fragment的调用方式?类似于
Fragment f = DRouter.build("didi://router/message").start();
在像ViewPager+DRouter这种场景的时候,需要获取到多个Fragment再设置到Adapter中,会有这种需求。
tks!
【平台环境】:windows
【Android Studio版本】:chipmunk| 2021.2.1 Patch 1
【编译使用Java版本】:jdk11
【kotlin版本】: 1.6.21
【gradle-plugin版本】:7.1.3
【gradle-wrapper版本】:7.1.3
【drouter版本】:2.3.0
【期望结果】:正常运行app
我的路由参数里面有一个needLogin参数,标志前往此路由需要用户进行登录。我现在想法时声明一个全局的登录拦截器,判断路由中的参数,在拦截器中进行跳转到登录,用户登录成功,继续之前的路由
`
@interceptor(
name = "LoginInterceptor",
priority = 1,
global = true
)
class LoginInterceptor : IRouterInterceptor {
companion object {
const val LOGIN_QUERY = "needLogin"
const val LOGIN_URl = "https://app.ink.net/login"
}
override fun handle(request: Request) {
if (checkNeedLogin(request)) {
request.setRedirect(LOGIN_URl)
.start(request.context, object : RouterCallback.ActivityCallback() {
override fun onActivityResult(resultCode: Int, data: Intent?) {
Log.d("ink", "back")
}
})
} else {
request.interceptor.onContinue()
}
}
private fun checkNeedLogin(request: Request): Boolean {
val needLogin = request.uri.getQueryParameter(LOGIN_QUERY)
if (needLogin.isNullOrEmpty()) {
return false
}
return needLogin.equals("true", false)
}
}
`
我希望在onActivityResult中获取到用户的登录结果,并根据结果决定是否进行进一步的跳转。但是现在我并不能拿到对应的结果,他甚至并没有执行onActivityResult 方法。
我并不想在拦截器中传值到登录页面,然后再在登录页面中做判断。我想请问一下我是否能直接在拦截器中做处理?
【平台环境】:windows
【Android Studio版本】:Android Studio Chipmunk | 2021.2.1 Patch 1
【编译使用Java版本】:jdk11
【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21
【gradle-plugin版本】:com.android.tools.build:gradle:7.1.3
【gradle-wrapper版本】:gradle-7.4-all.zip
【drouter版本】:drouter-api:2.3.1
【复现步骤】:编译时AGP出现上千条警告日志
【期望结果】:不出现警告日志
【日志】:AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow.","sources":[{"file":"C:\Users\troy\Repo\xxx\app\build\intermediates\transforms\DRouter\dev\debug\214.jar"}],"tool":"D8"}
通常一个app中scheme和host是全局一致的,目前似乎每个目标页面都需要完整设置这些参数,会有大量模版化的代码产生
@Router(scheme = SCHEME, host = HOST, path = PATH)
跳转函数也是如此
DRouter.build("$SCHEME://$HOST$PATH").start()
建议在DRouter初始化时,增加一个全局Config机制,当没有设置scheme、host时,默认使用全局scheme、host。
参考Retrofit的baseUrl
具体来说ActivityCompat2#sCallbackMap是静态map,key虽然是WeakReference,但value是ActivityCallback,通常是匿名内部类,会持有activity引用,目前sCallbackMap remove的时机只有onActivityResult,假如没机会执行onActivityResult就有泄露的可能
动态下载与api匹配的plugin,无需升级plugin版本,这个能否自行下载,公司的自动构建平台不让联网。
如何添加拦截器?
关闭R8编译 android.enableR8=false
启用代码混淆 minifyEnabled true
jdk11(jdk8无问题)
示例Demo能复现该问题 windows系统
Execution failed for task ':demo:minifyDebugWithProguard'.
java.io.IOException: Can't read [C:\Users\troy\Repo\github\DRouter-master\demo\build\intermediates\transforms\DRouter\debug\44(;;;;;;;**.class)] (Can't read [com] (Can't read [didi] (Can't read [drouter] (Can't read [loader] (Can't read [host] (Can't read [InterceptorLoader.class] (Can't process class [com/didi/drouter/loader/host/InterceptorLoader.class] (Unsupported version number [55.0] (maximum 54.0, Java 10)))))))))
Android11以上会有这个问题,参考:https://developer.android.com/about/versions/11/privacy/package-visibility?hl=zh-cn
支持VirtualApk?VirtualApk在 Android10,11用不了了吧,看了项目已经很久没更新了,你们didi内部还在使用这个插件化框架么?
关键信息:
``
classpath 'com.android.tools.build:gradle:7.2.2'
//https://github.com/didi/DRouter/wiki
classpath "io.github.didi:drouter-plugin-proxy:1.0.2"
//https://mvnrepository.com/artifact/io.sentry/sentry-android-gradle-plugin 高版本3.x drouter会报错
classpath 'io.sentry:sentry-android-gradle-plugin:3.5.0'
//https://github.com/didi/DRouter/wiki
api "io.github.didi:drouter-api:2.4.3"
api "io.github.didi:drouter-api-page:1.0.0"
api "io.github.didi:drouter-api-process:1.0.0"
``
//这个版本可用
classpath 'io.sentry:sentry-android-gradle-plugin:2.1.5'
集成最新版的sentry时报以下错误:
//https://mvnrepository.com/artifact/io.sentry/sentry-android-gradle-plugin
// 高版本3.x drouter会报错
classpath 'io.sentry:sentry-android-gradle-plugin:3.5.0'
``
Caused by: java.lang.RuntimeException: org.gradle.api.GradleException: Could not generate d_router table
SHA-256 digest error for org/bouncycastle/asn1/cmc/BodyPartReference.class
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:71)
at com.android.build.gradle.internal.profile.AnalyticsResourceManager.recordBlockAtExecution(AnalyticsResourceManager.kt:226)
at com.android.build.gradle.internal.profile.AnalyticsService.recordBlock(AnalyticsService.kt:160)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:239)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)
at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)
at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)
at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171)
at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:180)
at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
at org.gradle.internal.Either$Right.fold(Either.java:175)
at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:249)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:54)
at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:144)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
Caused by: org.gradle.api.GradleException: Could not generate d_router table
SHA-256 digest error for org/bouncycastle/asn1/cmc/BodyPartReference.class
at com.didi.drouter.plugin.RouterTask.startExecute(RouterTask.java:92)
at com.didi.drouter.plugin.RouterTask.run(RouterTask.java:71)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.didi.drouter.plugin.RouterTransform.transform(RouterTransform.groovy:81)
at com.didi.drouter.plugin.RouterTransform$transform.call(Unknown Source)
at com.didi.drouter.plugin.RouterTransform$transform.call(Unknown Source)
at com.didi.drouter.plugin.TransformProxy.transform(TransformProxy.groovy:69)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:281)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:69)
... 123 more
Caused by: java.lang.SecurityException: SHA-256 digest error for org/bouncycastle/asn1/cmc/BodyPartReference.class
at javassist.bytecode.AttributeInfo.(AttributeInfo.java:72)
at javassist.bytecode.StackMapTable.(StackMapTable.java:54)
at javassist.bytecode.AttributeInfo.read(AttributeInfo.java:136)
at javassist.bytecode.CodeAttribute.(CodeAttribute.java:116)
at javassist.bytecode.AttributeInfo.read(AttributeInfo.java:87)
at javassist.bytecode.MethodInfo.read(MethodInfo.java:568)
at javassist.bytecode.MethodInfo.(MethodInfo.java:109)
at javassist.bytecode.ClassFile.read(ClassFile.java:817)
at javassist.bytecode.ClassFile.(ClassFile.java:185)
at javassist.CtClassType.(CtClassType.java:98)
at javassist.ClassPool.makeClass(ClassPool.java:707)
at javassist.ClassPool.makeClass(ClassPool.java:685)
at com.didi.drouter.plugin.RouterTask.resolveJarFile(RouterTask.java:200)
at com.didi.drouter.plugin.RouterTask.loadFullPath(RouterTask.java:162)
at com.didi.drouter.plugin.RouterTask.loadFullPaths(RouterTask.java:130)
at com.didi.drouter.plugin.RouterTask.startExecute(RouterTask.java:83)
... 133 more
``
请问下 这样的 intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
跑drouter的demo没问题,跑公司的项目,同事的可以运行,我的运行不了,报错,有可能是什么问题
`java.lang.IllegalArgumentException: java.lang.IllegalArgumentException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)
at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:722)
at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:149)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getInitalGraphData(DesugarIncrementalTransformHelper.java:162)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.makeDesugaringGraph(DesugarIncrementalTransformHelper.java:130)
at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:167)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getDependenciesPaths(DesugarIncrementalTransformHelper.java:231)
at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.getD8DesugaringCacheInfo(DexArchiveBuilderTransform.java:467)
at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.transform(DexArchiveBuilderTransform.java:390)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at java.base/java.util.Optional.map(Optional.java:265)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.(ClassReader.java:160)
at org.objectweb.asm.ClassReader.(ClassReader.java:143)
at org.objectweb.asm.ClassReader.(ClassReader.java:418)
at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:152)
at com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeClass(DesugaringClassAnalyzer.java:139)
at com.android.builder.desugaring.DesugaringClassAnalyzer.access$000(DesugaringClassAnalyzer.java:60)
at com.android.builder.desugaring.DesugaringClassAnalyzer$1.visitFile(DesugaringClassAnalyzer.java:121)
at com.android.builder.desugaring.DesugaringClassAnalyzer$1.visitFile(DesugaringClassAnalyzer.java:115)
at java.base/java.nio.file.Files.walkFileTree(Files.java:2800)
at java.base/java.nio.file.Files.walkFileTree(Files.java:2872)
at com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeDir(DesugaringClassAnalyzer.java:113)
at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:65)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda$getInitalGraphData$4(DesugarIncrementalTransformHelper.java:150)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.IllegalArgumentException
Task :app:transformClassesWithDexBuilderForDevDebug FAILED
Execution failed for task ':app:transformClassesWithDexBuilderForDevDebug'.
com.android.build.api.transform.TransformException: java.lang.IllegalArgumentException: java.lang.IllegalArgumentException
【平台环境】:windows
【Android Studio版本】:chipmunk| 2021.2.1 Patch 1
【编译使用Java版本】:jdk11
【kotlin版本】: id 'org.jetbrains.kotlin.android' version '1.7.0-RC2' apply false
【gradle-plugin版本】:https://services.gradle.org/distributions/gradle-7.3.3-bin.zip
【gradle-wrapper版本】:gradle-7.3.3-bin.zip
【drouter版本】:drouter-api:2.2.1
【复现步骤】:run 的时候会偶现
【期望结果】:正常运行app
【日志】:
项目里面分为接口模块interface
和一个公共服务实现模块fn
。
本来是都是代码集成的,运行正常。
后面把模块都是打出aar(未传maven仓库),使用api files
的方式依赖,正常编译过了后,运行发现找不到@Service
的服务了。(因为测试,只写了一个服务)
对aar依赖大致类似下面的写法:
dependencies {
api files('aar/interface-release.aar')
api files('aar/fn-release.aar')
}
之后,先注释掉上面 fn
的aar依赖后,把原fn的模块代码拷过来,并调整一下fn模块自己的依赖,将对interface
模块代码的依赖,改成上面的interface
的aar。
再编译,运行就是正常的了。
如题!
如题,现在有一种场景,在IRouterHandler
中处理了一些逻辑之后,需要 startActivityForResult
启动新的页面,但是拿不到ActivityResultLauncher
.
这两种场景下的逻辑处理帮忙看看有没有什么问题或更好的封装。
private fun start(uri: String, extras: Map<String, Any>? = null, intent: Intent? = null, context: Context? = null, callback: RouterCallback? = null) {
DRouter.build(uri)
.putExtraMap(extras)
.putExtra(Extend.START_ACTIVITY_VIA_INTENT, intent)
.start(context, object : RouterCallback.ActivityCallback() {
override fun onResult(result: Result) {
if (result.request.routerType == RouterType.UNDEFINED || result.request.routerType == RouterType.ACTIVITY) {
if (!result.isActivityStarted) {
// LogUtils.d(TAG, "RouteHelper startLocalRoute 打开了错误的地址 uri = ${result.request.uri}, type = ${result.request.routerType}")
// 统一处理页面打开失败逻辑。。。
return
}
}
callback?.onResult(result)
}
override fun onActivityResult(resultCode: Int, data: Intent?) {
(callback as? RouterCallback.ActivityCallback)?.onActivityResult(resultCode, data)
}
})
}
@Interceptor(name = "RouteInterceptor", priority = 999, global = true)
class RouteInterceptor : IRouterInterceptor {
override fun handle(request: Request) {
if (request.routerType == RouterType.ACTIVITY) {// 判断路由类型
if (request.uri.toString().contains(RouteConstant.ROUTE_OPTION)) {// 判断是否是需要前置条件的uri
if (SPUtils.getInstance().getBoolean("optionFlag")) {// 模拟前置条件
request.interceptor.onContinue()
} else {
RouteHelper.startLocalRoute(RouteConstant.ROUTE_TEST)// 重新打开一个页面
}
} else {
request.interceptor.onContinue()
}
} else {
request.interceptor.onContinue()
}
// if (request.uri.toString() == RouteConstant.ROUTE_TEST) {
// request.interceptor.onContinue()
// } else {
// request.interceptor.onInterrupt()
// }
}
}
为什么要做一个gradle plugin的proxy,然后里面也只是下载了真正的gradle plugin,然后去执行逻辑,是出于什么考虑,很好奇。
大佬能在demo中加个例子吗
DRouter是否可以实现单Activity+多Fragment呢?并且其中Fragment有可能出现多层嵌套的情况
最新版 2.2.1 经常出现 所有路由无法跳转 rebuild 后 重新运行有时候可以解决
primary request "76", router uri "/mine/wallet", need callback "false"
W/DRouterCore: warning: there is no request target match
D/DRouterCore: primary request "76" complete, router uri "/mine/wallet", all reason {}
D/DRouterCore: Request finish
val bundle =
ActivityOptionsCompat.makeSceneTransitionAnimation(mContext,
Pair(view.findViewById(R.id.ivCover), "ivCover")).toBundle()
val intent = Intent(mContext, CourseDetailsActivity::class.java)
intent.putExtra("cover", item.cover)
intent.putExtra("title", item.name)
startActivity(intent, bundle)
项目中多个模块业务分离,其他模块不太好使用硬代码将其他模块中拦截器引入,比如用户模块中有登录拦截器,其他模块中无法使用该拦截器class,可有更好的办法,现在可使用handler实现,可总觉得很怪。
DRouter.build("xxx://xxxx/xxxx")
.putExtra("cid", "xxxx")
.putExtra("type", "xxxx")
.start()
然后在对应的activity里面
val request = RouterHelper.getRequest(this)
if(request != null) {
type = request.getExtra().getInt("type")
}
request总是为null,无法取到路由请求里面携带的参数
如果要获取路由参数,需要自己封装方法从intent里面取吗?
Cause: com/didi/drouter/plugin/RouterTransform has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
错误堆栈:
2Thread Name: 'main'
3Back traces starts.
4java.lang.IllegalStateException: FragmentManager is already executing transactions
5 at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1931)
6 at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1967)
7 at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:305)
8 at com.didi.drouter.router.ActivityCompat2$HolderFragmentV4.attach(ActivityCompat2.java:121)
9 at com.didi.drouter.router.RouterDispatcher.startActivity(RouterDispatcher.java:62)
10 at com.didi.drouter.router.RouterLoader$1.onContinue(RouterLoader.java:95)
11 at com.didi.drouter.router.RouterDispatcher.start(RouterDispatcher.java:28)
12 at com.didi.drouter.router.ActivityCompat2.startActivityForResult(ActivityCompat2.java:58)
13 at com.didi.drouter.router.InterceptorHandler.handleNext(InterceptorHandler.java:30)
14 at com.didi.drouter.router.InterceptorHandler.handle(InterceptorHandler.java:21)
15 at com.didi.drouter.router.RouterLoader.start(RouterLoader.java:54)
16 at com.didi.drouter.router.RouterLoader.startLocal(RouterLoader.java:79)
17 at com.didi.drouter.router.Request.start(Request.java:58)
发生场景:
外层是viewPager,在其中的一个fragment中使用Drouter.start(),在调用这个方法的同时,切换viewPager。
定位到的源码:
这里一定需要commitNow吗?
有什么方法可以避免这个问题的发生?
8.1起,上架到GP的新应用,都要使用App Bundle的形式。
Arouter打出来的aab,由于动态路由的问题,跳转找不到path。
目前在想办法找解决方案。想问下滴滴的框架现在支持App Bundle吗
buildFeatures {
viewBinding true
}
特性再com.android.tools.build:gradle:3.5.3上支持不了
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.