SourceSet'instrumentTest'未被Android Gradle插件识别

2024-01-28 03:58

本文主要是介绍SourceSet'instrumentTest'未被Android Gradle插件识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我将AndroidStudio更新至版本3.1.2

清洁项目…

并建立失败

The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
但是,AndroidStudio的3.0.1版本没有这个问题

解决办法:

instrumentTest已被弃用,并且不适用于现代Gradle版本 - 您可能在升级Android Studio时更新了项目。

用androidTest替换instrumentTest,它会工作。

详细日志:

org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ‘:ios_dialog_lib’.
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:94)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:89)
at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:70)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access 100(LifecycleProjectEvaluator.java:34)atorg.gradle.configuration.project.LifecycleProjectEvaluator 100 ( L i f e c y c l e P r o j e c t E v a l u a t o r . j a v a : 34 ) a t o r g . g r a d l e . c o n f i g u r a t i o n . p r o j e c t . L i f e c y c l e P r o j e c t E v a l u a t o r ConfigureProject.run(LifecycleProjectEvaluator.java:110)
at org.gradle.internal.progress.DefaultBuildOperationExecutor RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)atorg.gradle.internal.progress.DefaultBuildOperationExecutor R u n n a b l e B u i l d O p e r a t i o n W o r k e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 336 ) a t o r g . g r a d l e . i n t e r n a l . p r o g r e s s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:666)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:135)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:98)
at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:81)
at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42)
at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access 000(DefaultBuildConfigurationActionExecuter.java:25)atorg.gradle.execution.DefaultBuildConfigurationActionExecuter 000 ( D e f a u l t B u i l d C o n f i g u r a t i o n A c t i o n E x e c u t e r . j a v a : 25 ) a t o r g . g r a d l e . e x e c u t i o n . D e f a u l t B u i l d C o n f i g u r a t i o n A c t i o n E x e c u t e r 1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access 000(DefaultBuildConfigurationActionExecuter.java:25)atorg.gradle.execution.DefaultBuildConfigurationActionExecuter 000 ( D e f a u l t B u i l d C o n f i g u r a t i o n A c t i o n E x e c u t e r . j a v a : 25 ) a t o r g . g r a d l e . e x e c u t i o n . D e f a u l t B u i l d C o n f i g u r a t i o n A c t i o n E x e c u t e r 1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36)
at org.gradle.initialization.DefaultGradleLauncher CalculateTaskGraph.run(DefaultGradleLauncher.java:268)atorg.gradle.internal.progress.DefaultBuildOperationExecutor C a l c u l a t e T a s k G r a p h . r u n ( D e f a u l t G r a d l e L a u n c h e r . j a v a : 268 ) a t o r g . g r a d l e . i n t e r n a l . p r o g r e s s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)atorg.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)atorg.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)atorg.gradle.initialization.DefaultGradleLauncher.constructTaskGraph(DefaultGradleLauncher.java:175)atorg.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:130)atorg.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:109)atorg.gradle.internal.invocation.GradleBuildController R u n n a b l e B u i l d O p e r a t i o n W o r k e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 328 ) a t o r g . g r a d l e . i n t e r n a l . p r o g r e s s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 199 ) a t o r g . g r a d l e . i n t e r n a l . p r o g r e s s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . r u n ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 110 ) a t o r g . g r a d l e . i n i t i a l i z a t i o n . D e f a u l t G r a d l e L a u n c h e r . c o n s t r u c t T a s k G r a p h ( D e f a u l t G r a d l e L a u n c h e r . j a v a : 175 ) a t o r g . g r a d l e . i n i t i a l i z a t i o n . D e f a u l t G r a d l e L a u n c h e r . d o B u i l d S t a g e s ( D e f a u l t G r a d l e L a u n c h e r . j a v a : 130 ) a t o r g . g r a d l e . i n i t i a l i z a t i o n . D e f a u l t G r a d l e L a u n c h e r . e x e c u t e T a s k s ( D e f a u l t G r a d l e L a u n c h e r . j a v a : 109 ) a t o r g . g r a d l e . i n t e r n a l . i n v o c a t i o n . G r a d l e B u i l d C o n t r o l l e r 1.call(GradleBuildController.java:78)
at org.gradle.internal.invocation.GradleBuildController 1.call(GradleBuildController.java:75)atorg.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)atorg.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)atorg.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)atorg.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53)atorg.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)atorg.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)atorg.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)atorg.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner 1. c a l l ( G r a d l e B u i l d C o n t r o l l e r . j a v a : 75 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t W o r k e r L e a s e S e r v i c e . w i t h L o c k s ( D e f a u l t W o r k e r L e a s e S e r v i c e . j a v a : 152 ) a t o r g . g r a d l e . i n t e r n a l . i n v o c a t i o n . G r a d l e B u i l d C o n t r o l l e r . d o B u i l d ( G r a d l e B u i l d C o n t r o l l e r . j a v a : 100 ) a t o r g . g r a d l e . i n t e r n a l . i n v o c a t i o n . G r a d l e B u i l d C o n t r o l l e r . r u n ( G r a d l e B u i l d C o n t r o l l e r . j a v a : 75 ) a t o r g . g r a d l e . t o o l i n g . i n t e r n a l . p r o v i d e r . r u n n e r . B u i l d M o d e l A c t i o n R u n n e r . r u n ( B u i l d M o d e l A c t i o n R u n n e r . j a v a : 53 ) a t o r g . g r a d l e . l a u n c h e r . e x e c . C h a i n i n g B u i l d A c t i o n R u n n e r . r u n ( C h a i n i n g B u i l d A c t i o n R u n n e r . j a v a : 35 ) a t o r g . g r a d l e . l a u n c h e r . e x e c . C h a i n i n g B u i l d A c t i o n R u n n e r . r u n ( C h a i n i n g B u i l d A c t i o n R u n n e r . j a v a : 35 ) a t o r g . g r a d l e . t o o l i n g . i n t e r n a l . p r o v i d e r . V a l i d a t i n g B u i l d A c t i o n R u n n e r . r u n ( V a l i d a t i n g B u i l d A c t i o n R u n n e r . j a v a : 32 ) a t o r g . g r a d l e . l a u n c h e r . e x e c . R u n A s B u i l d O p e r a t i o n B u i l d A c t i o n R u n n e r 1.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.internal.progress.DefaultBuildOperationExecutor RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)atorg.gradle.internal.progress.DefaultBuildOperationExecutor R u n n a b l e B u i l d O p e r a t i o n W o r k e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 336 ) a t o r g . g r a d l e . i n t e r n a l . p r o g r e s s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:69)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:30)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput 2.call(ForwardClientInput.java:74)atorg.gradle.launcher.daemon.server.exec.ForwardClientInput 2. c a l l ( F o r w a r d C l i e n t I n p u t . j a v a : 74 ) a t o r g . g r a d l e . l a u n c h e r . d a e m o n . s e r v e r . e x e c . F o r w a r d C l i e n t I n p u t 2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy 1.run(StartBuildOrRespondWithBusy.java:50)atorg.gradle.launcher.daemon.server.DaemonStateCoordinator 1. r u n ( S t a r t B u i l d O r R e s p o n d W i t h B u s y . j a v a : 50 ) a t o r g . g r a d l e . l a u n c h e r . d a e m o n . s e r v e r . D a e m o n S t a t e C o o r d i n a t o r 1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)atorg.gradle.internal.concurrent.ManagedExecutorImpl C a t c h A n d R e c o r d F a i l u r e s . o n E x e c u t e ( E x e c u t o r P o l i c y . j a v a : 63 ) a t o r g . g r a d l e . i n t e r n a l . c o n c u r r e n t . M a n a g e d E x e c u t o r I m p l 1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor Worker.run(UnknownSource)atorg.gradle.internal.concurrent.ThreadFactoryImpl W o r k e r . r u n ( U n k n o w n S o u r c e ) a t o r g . g r a d l e . i n t e r n a l . c o n c u r r e n t . T h r e a d F a c t o r y I m p l ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Unknown Source) Caused by: org.gradle.api.GradleException: The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
at com.android.build.gradle.internal.errors.SyncIssueHandlerImpl.reportIssue(SyncIssueHandlerImpl.kt:53)
at com.android.builder.errors.EvalIssueReporter DefaultImpls.reportError(EvalIssueReporter.kt:137)atcom.android.build.gradle.internal.errors.SyncIssueHandler D e f a u l t I m p l s . r e p o r t E r r o r ( E v a l I s s u e R e p o r t e r . k t : 137 ) a t c o m . a n d r o i d . b u i l d . g r a d l e . i n t e r n a l . e r r o r s . S y n c I s s u e H a n d l e r DefaultImpls.reportError(SyncIssueHandler.kt)
at com.android.build.gradle.internal.errors.SyncIssueHandlerImpl.reportError(SyncIssueHandlerImpl.kt:30)
at com.android.build.gradle.internal.dependency.SourceSetManager.checkForUnconfiguredSourceSets(SourceSetManager.kt:193)
at com.android.build.gradle.BasePlugin.lambda createAndroidTasks c r e a t e A n d r o i d T a s k s 6(BasePlugin.java:762)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:744)
at com.android.build.gradle.BasePlugin.lambda null n u l l 4(BasePlugin.java:650)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
at com.android.build.gradle.BasePlugin.lambda createTasks c r e a t e T a s k s 5(BasePlugin.java:646)
at org.gradle.internal.event.BroadcastDispatch ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)atorg.gradle.internal.event.BroadcastDispatch A c t i o n I n v o c a t i o n H a n d l e r . d i s p a t c h ( B r o a d c a s t D i s p a t c h . j a v a : 91 ) a t o r g . g r a d l e . i n t e r n a l . e v e n t . B r o a d c a s t D i s p a t c h ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch SingletonDispatch.dispatch(BroadcastDispatch.java:230)atorg.gradle.internal.event.BroadcastDispatch S i n g l e t o n D i s p a t c h . d i s p a t c h ( B r o a d c a s t D i s p a t c h . j a v a : 230 ) a t o r g . g r a d l e . i n t e r n a l . e v e n t . B r o a d c a s t D i s p a t c h SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.BroadcastDispatch CompositeDispatch.dispatch(BroadcastDispatch.java:324)atorg.gradle.internal.event.BroadcastDispatch C o m p o s i t e D i s p a t c h . d i s p a t c h ( B r o a d c a s t D i s p a t c h . j a v a : 324 ) a t o r g . g r a d l e . i n t e r n a l . e v e n t . B r o a d c a s t D i s p a t c h CompositeDispatch.dispatch(BroadcastDispatch.java:234)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)atcom.sun.proxy. D i s p a t c h i n g I n v o c a t i o n H a n d l e r . i n v o k e ( P r o x y D i s p a t c h A d a p t e r . j a v a : 93 ) a t c o m . s u n . p r o x y . Proxy31.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:76)
… 97 more
这是我的buildgradle相关配置

sourceSets {
main {
manifest.srcFile ‘AndroidManifest.xml’
java.srcDirs = [‘src’]
resources.srcDirs = [‘src’]
aidl.srcDirs = [‘src’]
renderscript.srcDirs = [‘src’]
res.srcDirs = [‘res’]
assets.srcDirs = [‘assets’]
jniLibs.srcDirs = [‘libs’]
}
// Move the tests to tests/java, tests/res, etc…
instrumentTest.setRoot(‘tests’)
// Move the build types to build-types/
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, …
// This moves them out of them default location under src//… which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot(‘build-types/debug’)
release.setRoot(‘build-types/release’)
}

这篇关于SourceSet'instrumentTest'未被Android Gradle插件识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652396

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.