2

最近、Android Studio を使用するように既存の Android プロジェクトを更新しましたが、ビルドできませんでした。

Execution failed for task ':mergeDebugResources'.
> Index: 0

いくつかの実験の後、すべてのフォルダーに存在するソース管理の隠しディレクトリ .arch-ids が窒息していることがわかりました。

build.gradle を exclude キーワードで操作しようとしましたが、役に立ちませんでした:

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java {
            srcDirs = ['src']
            exclude '**/.arch-ids/*'
        }
        resources {
            srcDirs 'src'
            exclude '**/.arch-ids/*'
        }
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res {
            srcDirs = ['res']
        }
        assets.srcDirs = ['assets']
    }

    instrumentTest.setRoot('tests')
}

現時点では「res」の部分が原因のようですが、「exclude」キーワードはサポートされていません。

4

1 に答える 1

4

次のようなものを試すことができます:

android {
    ...
    sourceSets {
        main {
            ...
            res.srcDirs = ['build/filtered_resources']
            ...
        }
...
}

次に、フィルタされたリソースのコピーを使用するためのタスクの依存関係:

task __filteredResources(type:Copy) {
    from('res/') {
        exclude '**/.arch-ids/*'
    }
    into 'build/filtered_resources'
    includeEmptyDirs = true
}

tasks.whenTaskAdded { task ->
    if (task.name == 'generateBuildConfig') {
        task.dependsOn __filteredResources
    }
}
于 2013-07-12T08:00:30.887 に答える