英文:
Why can't I generate a signed APK?
问题
以下是翻译好的部分:
我有一个应用程序,它的工作方式与我想要的完全一样,在过去,我能够生成已签名的APK文件。
然而,在我的最新版本(1.11)中,我再也无法构建已签名的APK。出现了以下错误信息:
执行任务:[:app:assembleRelease] 在项目 C:\Users\Gereon\AndroidStudioProjects\Akkubuch 中
> 任务:app:preBuild 已是最新的。
> 任务:app:preReleaseBuild 已是最新的。
> 任务:app:compileReleaseAidl 无源文件。
> 任务:app:generateReleaseBuildConfig 已是最新的。
> 任务:app:compileReleaseRenderscript 无源文件。
> 任务:app:javaPreCompileRelease 已是最新的。
> 任务:app:mainApkListPersistenceRelease
> 任务:app:generateReleaseResValues 已是最新的。
> 任务:app:generateReleaseResources 已是最新的。
> 任务:app:mergeReleaseResources 已是最新的。
> 任务:app:createReleaseCompatibleScreenManifests
> 任务:app:extractDeepLinksRelease 已是最新的。
> 任务:app:processReleaseManifest
> 任务:app:processReleaseResources
> 任务:app:compileReleaseJavaWithJavac 已是最新的。
> 任务:app:compileReleaseSources 已是最新的。
> 任务:app:prepareLintJar 已是最新的。
> 任务:app:lintVitalRelease 失败
失败:任务“:app:lintVitalRelease”的执行失败。
> Lint基础架构错误
Caused by: java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.RuntimeException: 无效的主APK输出:EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[],version=0,output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.1.apk),...
...
此外,还有另外三个错误出现:
- java.lang.reflect.InvocationTargetException
- java.lang.RuntimeException: 无效的主APK输出
- Lint基础架构错误
英文:
I have an app, that works just the way I want it to and in the past I was able to generate signed APKs.
However now in my newest version (1.11) I can't build a signed akp anymore. This thing gets shown to me:
Executing tasks: [:app:assembleRelease] in project C:\Users\Gereon\AndroidStudioProjects\Akkubuch
> Task :app:preBuild UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:generateReleaseBuildConfig UP-TO-DATE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:javaPreCompileRelease UP-TO-DATE
> Task :app:mainApkListPersistenceRelease
> Task :app:generateReleaseResValues UP-TO-DATE
> Task :app:generateReleaseResources UP-TO-DATE
> Task :app:mergeReleaseResources UP-TO-DATE
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksRelease UP-TO-DATE
> Task :app:processReleaseManifest
> Task :app:processReleaseResources
> Task :app:compileReleaseJavaWithJavac UP-TO-DATE
> Task :app:compileReleaseSources UP-TO-DATE
> Task :app:prepareLintJar UP-TO-DATE
> Task :app:lintVitalRelease FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:lintVitalRelease'.
> Lint infrastructure error
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.android.tools.lint.gradle.api.ReflectiveLintRunner.runLint(ReflectiveLintRunner.kt:38)
at com.android.build.gradle.tasks.LintBaseTask.runLint(LintBaseTask.java:114)
at com.android.build.gradle.tasks.LintPerVariantTask.lint(LintPerVariantTask.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:717)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:684)
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$1(ExecuteStep.java:33)
at java.util.Optional.orElseGet(Optional.java:267)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
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 java.util.Optional.map(Optional.java:215)
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)
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 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Invalid main APK outputs : EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.1.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.10.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.2.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.3.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.4.2.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.4.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.5.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.6.2.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.6.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.7.2.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.7.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.8.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@78c5bc70, apkType=MAIN, filtersData=[], version=0, output=C:\Users\Gereon\AndroidStudioProjects\Akkubuch\app\release\Akkubuch - V.1.9.apk)
at com.android.build.gradle.internal.ide.AndroidArtifactImpl.computeBuildOutputs(AndroidArtifactImpl.java:197)
at com.android.build.gradle.internal.ide.AndroidArtifactImpl.<init>(AndroidArtifactImpl.java:137)
at com.android.build.gradle.internal.ide.ModelBuilder.createAndroidArtifact(ModelBuilder.java:960)
at com.android.build.gradle.internal.ide.ModelBuilder.createVariant(ModelBuilder.java:584)
at com.android.build.gradle.internal.ide.ModelBuilder.buildAndroidProject(ModelBuilder.java:399)
at com.android.build.gradle.internal.ide.ModelBuilder.buildAll(ModelBuilder.java:193)
at com.android.build.gradle.internal.AppModelBuilder.buildAll(AppModelBuilder.kt:63)
at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:104)
at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:133)
at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1.call(DefaultToolingModelBuilderRegistry.java:100)
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.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder.buildAll(DefaultToolingModelBuilderRegistry.java:97)
at com.android.tools.lint.gradle.LintGradleExecution.createAndroidProject(LintGradleExecution.java:369)
at com.android.tools.lint.gradle.LintGradleExecution.analyze(LintGradleExecution.java:88)
... 104 more
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
12 actionable tasks: 5 executed, 7 up-to-date
Also 3 other errors plop up:
java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: Invalid main APK outputs :
Lint infrastructure error
Caused by: java.lang.reflect.InvocationTargetException
答案1
得分: 27
好的,以下是您要翻译的内容:
OK,刚刚遇到了相同的问题。以为我有Lint问题要解决,但是检查“App” > “build” > “reports” > “lint-results-release-fatal”显示是干净的。
尝试进行清理,但是没有起作用。所以我最终删除了“build”和“release”文件夹。不知道实际是什么原因导致的。
英文:
OK just had the same issue. Thought I had Lint issues to resolve, but checking App> build > reports > lint-results-release-fatal showed a clean slate.
Tried to clean, but that did not work. So I ended up deleting the 'build' and 'release' folders. Somehow that worked. Don't know what actually caused it.
答案2
得分: 1
我从“destiny”文件夹中删除了所有内容,然后错误消失了。
英文:
I removed all content from the destiny folder and then the error disappear.
答案3
得分: 1
首先,您需要通过执行以下操作找出问题:
转到“分析”->“检查代码”。检查后,错误应该会显示出来。
我在那里找到了一些错误。尽管在修复错误后它没有起作用,但我已经更新了Android Studio,最终问题得以解决。
英文:
First of all you need to find the problems by performing the following actions:
Go to "Analyze" -> Inspect code. After the inspection, the errors should show up.
I've found myself some errors there. Even though it did not work after fixing the errors, I've updated Android studio and it finally solved the issue.
答案4
得分: 1
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论