こんにちは、私のAndroidアプリプロジェクトをEclipseからAndroid Studioに移行しようとしています。これはAndroid KitKat。I私が使用したEclipseのバージョンを忘れました。Android Studio 3.0.1を使用しています。ここからの指示に従いました https://developer.Android.com/studio/ intro/migrate.html 。移行しようとしたときにこのエラーが発生しました。助けてください。これは私にとって大きな意味があります
そして、これはGradle Consoleのエラーメッセージです
Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar]
Configuration on demand is an incubating feature.
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
:app:preBuild UP-TO-DATE
:app:preDebugBuild
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:checkDebugManifest
:app:generateDebugBuildConfig
:app:prepareLintJar
:app:generateDebugResValues
:app:generateDebugResources
:app:mergeDebugResources
:app:createDebugCompatibleScreenManifests
:app:processDebugManifest
:app:splitsDiscoveryTaskDebug
:app:processDebugResources
AGPBI: {"kind":"error","text":"error: resource Android:attr/preserveIconSpacing is private.","sources":[{"file":"C:\\Users\\Shazwan\\.gradle\\caches\\transforms-1\\files-1.1\\appcompat-v7-19.1.0.aar\\df4f4f2e7a9c43dda4827c11e87fed2a\\res\\values\\values.xml","position":{"startLine":507,"startColumn":4,"startOffset":24529,"endColumn":61,"endOffset":24586}}],"original":"","tool":"AAPT"}
D:\Work\AndroidD\OpacKAWAT\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:133: error: resource Android:attr/preserveIconSpacing is private.
error: failed linking references.
Failed to execute aapt
com.Android.ide.common.process.ProcessException: Failed to execute aapt
at com.Android.builder.core.AndroidBuilder.processResources(AndroidBuilder.Java:796)
at com.Android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.Java:551)
at com.Android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.Java:285)
at com.Android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.Java:109)
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:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.Java:173)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.Java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.Java:121)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.Java:122)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:107)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.Java:111)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:63)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.Java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.Java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.Java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.Java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.Java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.Java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:107)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.Java:124)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.Java:80)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:105)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:99)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.Java:625)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.Java:580)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.Java:99)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.Java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.Java:46)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.Java:55)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: Java.util.concurrent.ExecutionException: Java.util.concurrent.ExecutionException: com.Android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.Java:503)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.Java:482)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.Java:79)
at com.Android.builder.core.AndroidBuilder.processResources(AndroidBuilder.Java:794)
... 48 more
Caused by: Java.util.concurrent.ExecutionException: com.Android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.Java:503)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.Java:462)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.Java:79)
at com.Android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.Java:179)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
... 1 more
Caused by: com.Android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.Android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.Java:463)
at com.Android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.Java:415)
at com.Android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.Java:332)
at com.Android.utils.GrabProcessOutput$1.run(GrabProcessOutput.Java:104)
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 37s
12 actionable tasks: 12 executed
EclipseからAndroid studioにアップグレードするときに同じ問題が発生しました。build.gradleをアップグレードすることで解決しました。
最初に、私はアップグレードしました
buildToolsVersion
次に変更した
compileSdkVersion 'your api level'
minSdkVersion 'your api level'
targetSdkVersion 'your api level'
アップグレードも
dependencies {
implementation 'com.Android.support:appcompat-v7:'your api level''
}
これは私の問題を解決しました
私の経験はこれでした:targetSdkVersion 21から19にダウングレードした後(私の会社では約20台の電話がAndroid 4.4)を使用しているため)、タイトルからエラーが発生しました:resource Android:attr/preserveIconSpacing is private
。
私はこの方法でこのエラーをなんとか受け渡しました:
エラーメッセージでは、設定を含むディレクトリが書き込まれました。私の場合は.gradle\caches\transforms-1\files-1.1\appcompat-v7-19.0.0.aar\4cd3ccb7957b0114d8e3c7a67ecc96ad\res\values\
。そのディレクトリからattr.xmlファイルを開き、メッセージに記載されている行全体にコメントしました。
<attr name="Android:preserveIconSpacing" />
これで醜いエラーがなくなりました。キャッシュディレクトリのように聞こえ、上書きされる可能性があるため、問題が解決できるとは思いませんでしたが、うまくいきませんでした。
以前、私はAndroidディレクトリからattr.xmlファイルを変更しようとしましたが、これは解決策だと思いましたAndroid-sdk\extras\Android\support\v7\appcompat\res\values\attr.xml。しかし、そのファイルは変更できず、書き込み保護されていました。すべて閉じましたAndroid studio、no Javaまたは他の同様のアプリが起動しましたが、うまくいきませんでした。
以前は、「attr.xml」をディレクトリAndroid-sdk\extras\Android\support\v7\appcompat\res\values \からコピーしようとし、preserveIconSpacing設定を変更して、 res/valuesディレクトリ。運が悪い。
PDATE 2018-nov-05。別のインストールでは、その文字列「」を含むのは「attr.xml」ファイルではありませんでした。そのため、エラーで指定された「res」ディレクトリ全体を検索し、「values.xml」ファイルで見つかった/配置しました。そこでコメントしました。そしてそれはうまくいった。
これが誰かの役に立つことを願っています。
何らかの理由で、KitKat(APIレベル19)を使用してプロジェクトをコンパイルしたかったのですが、最新のカナリア(Android Studio 3.3 Canary 5)を使用してコンパイルできませんでした(エラーメッセージを覚えていませんが、かなりの時間を無駄にしていました)それに、それが同じ問題を抱えている誰かに役立つものとして出てくるかもしれないと思った)。
私は次のことをしました:
プロジェクトのbuild.gradleファイルを開き(アプリモジュールのファイルではありません!)、プラグインのバージョンを2.2.3に設定します。
_dependencies {
classpath 'com.Android.tools.build:gradle:2.2.3'
}
_
プロジェクトのbuild.gradleのgoogle()
を次のように置き換えます(ファイルにgoogle()
がない場合):
_maven {
url 'https://maven.google.com'
}
_
gradle-wrapper.propertiesを開き、gradleのバージョンを2.14.1に設定します( このページ は、互換性のあるプラグインとgradleのバージョンを選択するときに役立ちます):
_distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip
_