热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用AndroidGradle插件3.3.0在合并资源期间构建失败

如何解决《使用AndroidGradle插件3.3.0在合并资源期间构建失败》经验,为你挑选了2个好方法。

我有很多不同的版本,我的构建有特定的资源,我不想在我的项目中使用一堆特定于风味的目录混乱我的src目录,所以我在我的项目中的另一个文件夹中添加源集到mergeResources任务(mergeResources.doFirst).这一直适用于过去几个版本的Android Gradle插件(3.1.0-3.2.0和一些3.3.0-alpha版本),但在某一点上,3.3.0-alpha AGP已经开始在mergeResources任务期间导致构建失败.

现在我不断得到:

构建失败在35秒16项可操作的任务:15执行,1跟上时代的例外在线程"ForkJoinPool.commonPool工人-6" java.lang.IllegalStateException:当后台驻留程序都在COM使用AAPT流程管理器无法关闭. android.builder.internal.aapt.v2.Aapt2DaemonManager.shutdown(Aapt2DaemonManager.kt:96)位于com.android的com.android.build.gradle.internal.res.namespaced.RegisteredAaptService.shutdown(Aapt2DaemonManagerService.kt:61). build.gradle.internal.workeractions.WorkerActionServiceRegistry $ shutdownAllRegisteredServices $ 1 $ 1.run(WorkerActionServiceRegistry.kt:96)在java.util.concurrent.ForkJoinTask $ RunnableExecuteAction.exec(ForkJoinTask.java:1402)在java.util.concurrent.ForkJoinTask. doEec(ForkJoinTask.java:289)位于java.util.concurrent的当前java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)的java.util.concurrent.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1056) .ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

我的堆栈跟踪是:

任务':app:mergeMainReleaseResources'的执行失败.java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2InternalException:AAPT2 aapt2-3.3.0-alpha13-5013011窗口守护进程#0:编译期间意外的错误"C:\用户\亚历克斯\ Documents\Work\Android\project\app\productio n_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png',试图阻止守护进程.这不应该在正常情况下发生,请提出问题.

例外是:org.gradle.api.tasks.TaskExecutionException:任务':app:mergeMainReleaseResources'的执行失败.在org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77) .api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)在org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)在org.gradle.api.internal .tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)在org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)在org.gradle.api.internal.tasks.execution org.gradle中的.skipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)位于org.gradle.api.internal的org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)中的.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) .tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)在org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)在org.gradle.api.internal.tasks.execution .ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter $ 1.运行(EventFiringTaskExecuter.java:51)org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)at org.gradle.internal.operations.DefaultBuildOperationE xecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)org.gradle.internal.operations.DefaultBupeOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)在org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)在org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)在org.gradle.execution.taskgraph .LocalTask​​InfoExecutor.execute(LocalTask​​InfoExecutor.java:42)org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java) :262)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute(DefaultTaskPlanEx)ecutor.java:135)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker $ 1.execute(DefaultTaskPlanExecutor.java:130)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)在org.gradle.internal.concurrent. ExecutorPolicy $ CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)在org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run(ManagedExecutorImpl.java:46)在org.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run(ThreadFactoryImpl.java :55)

引起:org.gradle.internal.UncheckedException:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2InternalException:AAPT2 aapt2-3.3.0-alpha13-5013011-windows守护程序#0:意外编译'C:\ Users\Alex\Documents\Work\Android\project\app\production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png'时出错,试图停止守护进程.这不应该在正常情况下发生,请提出问题.在org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:63)在org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:40)在org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java :76)org.gradle.api.internal.project.taskfactory.IncrementalTask​​Action.doExecute(IncrementalTask​​Action.java:50)at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)at at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter $ 1.run(ExecuteActionsTaskExecuter.java:131) .internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)atg.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)at org.gradle.internal.operati ons.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)org.gradle.internal.operations.DefaultOperationExecutor.run(DefaultBuildOperationExecutor.java:90)org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)... 31 java.util.concurrent.ExecutionException:通过多个致com.android.builder.internal.aapt.v2.Aapt2InternalException:AAPT2 aapt2-3.3.0-alpha13-5013011窗口守护进程#0:意外的错误编译期间"C:\用户\ Alex\Documents\Work\Android\project\app\production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png',试图停止守护进程.这不应该在正常情况下发生,请提出问题.com.android.ide.common.workers.ExecutorServiceAdapter.close(ExecutorServiceAdapter.kt:56)在com.android.build的com.android.build.gradle.internal.aapt.WorkerExecutorResourceCompilationService.close(WorkerExecutorResourceCompilationService.kt:67) .gradle.tasks.MergeResources.doFullTask​​Action(MergeResources.java:268)位于org.gradle.internal.refternal.JavaMethod.invoke的com.android.build.gradle.internal.tasks.IncrementalTask​​.taskAction(IncrementalTask​​.java:106) (JavaMethod.java:73)......还有42个

com.android.builder.internal.aapt.v2.Aapt2InternalException:由造成AAPT2 aapt2-3.3.0-alpha13-5013011窗口服务#0:编译过程中意外的错误"C:\用户\亚历克斯\文件\工作\ Android的\ project\app\production_resources\categories\fitness\res\drawable-xxxhdpi\background_4.png',试图停止守护进程.这不应该在正常情况下发生,请提出问题.在com.android.builder.internal.aapt.v2.Aapt2Daemon.handleError(Aapt2Daemon.kt:148)在com.android.builder.internal.aapt.v2.Aapt2Daemon.compile(Aapt2Daemon.kt:88)在com.android .builder.internal.aapt.v2.Aapt2DaemonManager $ LeasedAaptDaemon.compile(Aapt2DaemonManager.kt:170):在COM在com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable $运行$ 1.invoke(37 Aapt2CompileWithBlameRunnable.kt).在com.android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon(Aapt2DaemonManagerService.kt:71)在COM:android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable $运行$ 1.invoke(28 Aapt2CompileWithBlameRunnable.kt) .android.build.gradle.internal.res.namespaced.Aapt2DaemonManagerService.useAaptDaemon $默认(Aapt2DaemonManagerService.kt:69)在com.android.build.gradle.internal.res.Aapt2CompileWithBlameRunnable.run(Aapt2CompileWithBlameRunnable.kt:34)在COM .android.ide.common.workers.ExecutorServiceAdapter $ $提交提交$ 1.run(ExecutorServiceAdapter.kt:39)

引起:java.io.IOException:AAPT2进程意外退出.错误输出:com.android.builder.internal.aapt.v2.Aapt2DaemonImpl $ WaitForTaskCompletion.err(Aapt2DaemonImpl.kt:309)at com.android.builder.internal.aapt.v2.Aapt2DaemonImpl $ processOutput $ 1.err(Aapt2DaemonImpl. kt:75)在com.android.utils.GrabProcessOutput $ 1.run(GrabProcessOutput.java:104)

我想也许PNG文件已损坏或标记不正确,但我通过一大堆转换运行它,我得到同样的错误.

在测试期间,它工作正常,但在发布期间构建是我收到此错误.我使用AS 3.2和AGP 3.2.0构建我的生产版本,工作正常.此外,这只是Windows.它在我的Mac上工作正常.

我的build.gradle是:

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion '28.0.3'
    defaultConfig {
        applicationId "com.project.test"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 37
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    dexOptions {
        jumboMode true
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }

    sourceSets {

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')

        androidTest.setRoot('tests')
    }

    signingConfigs {

        key {
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }

    }

    buildTypes {

        debug {
            minifyEnabled false
        }

        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.key
        }
    }

    flavorDimensions "default"

    productFlavors {

        main {
            versionName "0"
            buildConfigField "String", "CATEGORY", "\"fitness\""
            buildConfigField "String", "BUILD_VERSION", "\"$config.buildVersion\""
            dimension "default"
        }

        flavors.each { name, flavor ->
            "$name" {
                applicatiOnId= config.applicationId + "." + "$name"
                versiOnName= config.versionName
                versiOnCode= flavor.versionCode
                buildConfigField "String", "CATEGORY", "\"${flavor.category}\""
                buildConfigField "String", "BUILD_VERSION", "\"$config.buildVersion\""
                buildConfigField "String", "APP_ID", "\"$name\""
                resValue "string", "APP_NAME", flavor.appName
                dimension "default"
            }
        }

    }

    packagingOptions {
        exclude 'META-INF/rxjava.properties'
    }

    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    androidTestImplementation('com.android.support.test:runner:1.0.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.google.code.findbugs:jsr305:3.0.2'
    implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion"
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"
    implementation "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:customtabs:$rootProject.supportLibraryVersion"
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.android.billingclient:billing:1.1'
    implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion"
    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation "com.facebook.fresco:fresco:$rootProject.frescoVersion"
    implementation "com.facebook.fresco:animated-gif:$rootProject.frescoVersion"
    implementation "com.google.android.gms:play-services-auth:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-gcm:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-base:$rootProject.playServicesVersion"
    implementation "com.google.android.gms:play-services-ads:$rootProject.playServicesVersion"
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
        transitive = true
    }
    implementation 'com.mixpanel.android:mixpanel-android:5.2.1'
    implementation "com.google.dagger:dagger:$rootProject.daggerVersion"
    implementation "com.google.dagger:dagger-android-support:$rootProject.daggerVersion"
    annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"
    implementation "com.jakewharton:butterknife:$rootProject.butterknifeVersion"
    annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterknifeVersion"
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
    implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    implementation "com.google.android.exoplayer:exoplayer-core:$rootProject.exoPlayerVersion"
    implementation "com.google.android.exoplayer:exoplayer-hls:$rootProject.exoPlayerVersion"
    implementation "com.google.android.exoplayer:exoplayer-ui:$rootProject.exoPlayerVersion"
    testImplementation 'junit:junit:4.12'
}

android.applicationVariants.all { variant ->
    def category
    variant.productFlavors.each { flavor ->
        flavor.buildConfigFields.each { key, value ->
            if (key == "CATEGORY") {
                category = value.value.substring(1, value.value.length() - 1)
            }
        }
    }
    variant.mergeResources.doFirst {
        android.sourceSets."${variant.productFlavors.get(0).name}".res.srcDirs =
                ["production_resources/flavors/${variant.productFlavors.get(0).name}/res",
                 "production_resources/categories/${category}/res"]
    }
}

afterEvaluate {
    tasks.matching {
        it.name.startsWith('dex')
    }.each { dx ->
        if (dx.additiOnalParameters== null) {
            dx.additiOnalParameters= []
        }
        dx.additionalParameters += '--multi-dex'
        dx.additionalParameters += "--main-dex-list=$projectDir/".toString()
    }
}

apply plugin: 'com.google.gms.google-services'

小智.. 45

这是Android Gradle Plugin 3.3.0中的AAPT2中的一个错误,当时构建一个具有更大png(大约2-3 mb及以上)的项目.

@ akong9759在Googles问题跟踪器上为此创建了一个问题,它已得到修复.

https://issuetracker.google.com/issues/117900475

此问题已在Android Gradle Plugin 3.5.0-alpha03中修复,修复程序计划在3.4.0版中发布.

针对此问题,我们建议对Android Gradle Plugin 3.3.0进行临时修复.将以下内容添加到项目build.gradle中:

allprojects {
    // Workaround for https://issuetracker.google.com/117900475
    // Remove when upgrading to AGP 3.4 or higher.
    configurations.matching { it.name == '_internal_aapt2_binary' }.all { config ->
        config.resolutionStrategy.eachDependency { details ->
            details.useVersion("3.5.0-alpha03-5252756")
        }
    }
}

今天,我将发行版URL中的studio更新为3.4.0,gradle插件更新为3.4.0,5.1.1。完成此更新后,出现错误:“ AAPT2 aapt2-3.5.0-alpha03-5252756-windows守护程序#7:守护程序启动失败”。请帮忙。 (3认同)


小智.. 18

我遇到过同样的问题.构建将破坏并提及不同的png文件,例如background_4.png,但仅限于Windows PC.在Mac上构建没有问题.

在我的情况下,图像大小是问题.只有大于2MB的图像才会破坏构建.在将每个图像缩小到小于2MB的值后,构建开始再次工作.



1> 小智..:

这是Android Gradle Plugin 3.3.0中的AAPT2中的一个错误,当时构建一个具有更大png(大约2-3 mb及以上)的项目.

@ akong9759在Googles问题跟踪器上为此创建了一个问题,它已得到修复.

https://issuetracker.google.com/issues/117900475

此问题已在Android Gradle Plugin 3.5.0-alpha03中修复,修复程序计划在3.4.0版中发布.

针对此问题,我们建议对Android Gradle Plugin 3.3.0进行临时修复.将以下内容添加到项目build.gradle中:

allprojects {
    // Workaround for https://issuetracker.google.com/117900475
    // Remove when upgrading to AGP 3.4 or higher.
    configurations.matching { it.name == '_internal_aapt2_binary' }.all { config ->
        config.resolutionStrategy.eachDependency { details ->
            details.useVersion("3.5.0-alpha03-5252756")
        }
    }
}


今天,我将发行版URL中的studio更新为3.4.0,gradle插件更新为3.4.0,5.1.1。完成此更新后,出现错误:“ AAPT2 aapt2-3.5.0-alpha03-5252756-windows守护程序#7:守护程序启动失败”。请帮忙。

2> 小智..:

我遇到过同样的问题.构建将破坏并提及不同的png文件,例如background_4.png,但仅限于Windows PC.在Mac上构建没有问题.

在我的情况下,图像大小是问题.只有大于2MB的图像才会破坏构建.在将每个图像缩小到小于2MB的值后,构建开始再次工作.


推荐阅读
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了SPOJ2829题目的解法及优化方法。题目要求找出满足一定条件的数列,并对结果取模。文章详细解释了解题思路和算法实现,并提出了使用FMT优化的方法。最后,对于第三个限制条件,作者给出了处理方法。文章最后给出了代码实现。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
author-avatar
cathy522_788
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有