woo*_*oot 6 android gradle android-studio
我已将我的项目迁移到使用Gradle(使用旧的Android项目结构).最近我将Android Studio升级到v0.2,这迫使我使用android gradle插件v0.5.我可以使用我定义的任何风格来构建我的项目,无论是在调试/发布上.
使用以下方案时,我出了点问题:
建立成功
/Users/myuser/Project/src/com/namespace/project/views/SomeCustomView.java:60:错误:找不到符号MSIZE = arr.getInt(R.styleable.SomeCustomView_some_custom_styleable,0);
Gradle现在抱怨我在attrs.xml中声明的每个自定义xml属性.这让我很疯狂,因为我每次修改styles.xml时都必须清理和重建我的项目
请帮帮我.
谢谢!
我的项目结构:
- Project
- . AndroidManifest.xml
- . assets/
- . build/
- . build.gradle
- . gen/
- . gradle/
- . gradle.properties
- . gradlew
- . libs (includes .jar files)
- . modules
- . . library_projectA
- . . library_projectB
- . out
- . project.properties
- . res
- . res_testenv
- . . values
- . . . strings.xml
- . res_prodenv
- . . values
- . . . strings.xml
- . settings.gradle
- . src/
- . . com/
- . . . namespace/
- . . . . android/
Run Code Online (Sandbox Code Playgroud)
项目目录中的build.gradle:
task wrapper(type: Wrapper) {
gradleVersion = '1.6'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
dependencies {
compile 'com.android.support:support-v4:13.0.0'
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':modules:libprojectA')
compile project(':modules:libprojectB')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 10
targetSdkVersion 17
}
signingConfigs {
release {
}
}
buildTypes {
debug {
runProguard false
}
alphaRelease {
runProguard false
zipAlign true
signingConfig signingConfigs.release
}
release {
runProguard true
proguardFile 'proguard-project.txt'
signingConfig signingConfigs.release
}
}
productFlavors {
testenv {}
prodenv {}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
aidl.srcDirs = ['src']
}
testenv {}
prodenv {}
}
android.sourceSets.testenv {
res.srcDirs = ['res_test']
}
android.sourceSets.prodenv {
res.srcDirs = ['res_prod']
}
}
if (project.hasProperty('storeFile') && project.hasProperty('storePassword') &&
project.hasProperty('keyAlias') && project.hasProperty('keyPassword')) {
android.signingConfigs.release.storeFile = file(storeFile)
android.signingConfigs.release.storePassword = storePassword
android.signingConfigs.release.keyAlias = keyAlias
android.signingConfigs.release.keyPassword = keyPassword
}
Run Code Online (Sandbox Code Playgroud)
和每个库项目的build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android-library'
dependencies {
compile 'com.android.support:support-v4:13.0.0'
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 10
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}
Run Code Online (Sandbox Code Playgroud)
附加堆栈跟踪:
org.gradle.api.tasks.TaskExecutionException:任务':compileTestenvDebug'的执行失败.在org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)位于org.gradle.internal的org.gradle.api.internal.changedetection.state.CacheLockReleasingTaskExecuter $ 1.run(CacheLockReleasingTaskExecuter.java:35)中的.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35).工厂$ 1.创建(Factories.java:22)在org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:179)在org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:232)在org.gradle.apdle.apir.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactState)中的org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:142)CacheAccess.java:83)atg.gradle.api.internal.changedetection.state.CacheLockReleasingTaskExecuter.execute(CacheLockReleasingTaskExecuter.java:33)at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java: 58)atg.gradle.api.internal.tasks.execution.ContextualisingTaskExecuter.execute(ContextualisingTaskExecuter.java:34)at org.gradle.api.internal.changedetection.state.CacheLockAcquiringTaskExecuter $ 1.run(CacheLockAcquiringTaskExecuter.java:39)at at org.gradle.internal.Factories $ 1.create(Factories.java:22)atg.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124)org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess) .java:112)org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:134)org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79)at org. gradle.a pi.internal.changedetection.state.CacheLockAcquiringTaskExecuter.execute(CacheLockAcquiringTaskExecuter.java:37)位于org.gradle.api.internal的org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57). tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)atg.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)at org.gradle.api.internal.tasks.execution.在org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java)的org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)上跳过SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52): 282)org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.executeTask(DefaultTaskPlanExecutor.java:48)org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.processTask(DefaultTaskPlanExecutor.java:34)at org orgra.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:89)org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java :29)org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)org.gradle.execution.DefaultBuildExecuter.access $ 200(DefaultBuildExecuter.java:23)org.gradle.execution.DefaultBuildExecuter $ 2.proceed( DefaultBuildExecuter.java:67)org.gradle.api.internal.changedetection.state.TaskCacheLockHandlingBuildExecuter $ 1.run(TaskCacheLockHandlingBuildExecuter.java:31)org.gradle.internal.Factories $ 1.create(Factories.java:22)at org .gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124)atg.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:112)at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentD)irectoryStore.java:134)org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79)at org.gradle.api.internal.changedetection.state.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java: 29)org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)org.gradle.execution.DefaultBuildExecuter.access $ 200(DefaultBuildExecuter.java:23)org.gradle.execution.DefaultBuildExecuter $ 2.proceed(DefaultBuildExecuter) .java:67)org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)at org.gradle.execution.DefaultBuildExecuter.execute( DefaultBuildExecuter.java:54)在org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)在org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113 )org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)org.gradle.launcher.exec.InProcessBuildActionExecuter $ DefaultBuildController.run(InProcessBuildActionExecuter.java:64)at org.gradle.launcher.cli.ExecuteBuildAction.在org.gradle的org.gradle.launcher.exe.InProcessBuildActionExecuter.exe(InProcessBuildActionExecuter.java:35)的org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)中运行(ExecuteBuildAction.java:33) .launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)org.gradle.api.internal.Actions $ RunnableActionAdapter.execute(Actions .java:171)org.gradle.launcher.cli.CommandLineActionFactory $ ParseAndBuildAction.execute(CommandLineActionFactory.java:201)org.gradle.launcher.cli.CommandLineActionFactory $ ParseAndBuildAction.execute(CommandLineActionFactory.java:174)at org. gradle.launcher.cli.CommandLineActionF actg $ WithLogging.execute(CommandLineActionFactory.java:170)atg.gradle.launcher.cli.CommandLineActionFactory $ WithLogging.execute(CommandLineActionFactory.java:139)org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java: 33)在org.gradle.launcher.bootstrap.EntryPoint.run的org.gradle.launcher.Main.doAction(Main.java:48)的org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) (entryPoint.java:45)org.gradle.launcher.Main.main(Main.java:39)位于org.gradle.launcher的org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50).在org.gradle的org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)的org.gradle.launcher.GradleMain.main(GradleMain.java:26)中的bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32) .wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)引起:org.gradle.api.int ernal.tasks.compile.CompilationFailedException:编译失败; 请参阅编译器错误输出以获取详细信 在org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:42)在org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:33)在在org.gradle在org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:48)org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:95)位于org.gradle.api.internal的org.gradle.api.internal.tasks.compile.DelegatingJavaCompiler.execute(DelegatingJavaCompiler.java:29)中的.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:34)位于org.gradle.api.internal.tasks.compile的org.gradle.api.internal.tasks.compile.IncrementalJavaCompilerSupport.execute(IncrementalJavaCompilerSupport.java:33)中的.tasks.compile.DelegatingJavaCompiler.execute(DelegatingJavaCompiler.java:20) .incrementalJavaCompilerSupport.execute(IncrementalJavaCompilerSupport.java:24)在org.gradle.api.tasks.compile.Compile.compile(Compile.java:68)在org.gradle.api.internal.BeanDynamicObject $ MetaClassAdapter.invokeMethod(BeanDynamicObject.java:216)在org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java: 122)org.gradle.api.api.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147)org.gradle.api.tasks.compile.JavaCompile_Decorated.invokeMethod(Unknown Source)at org.gradle.util.ReflectionUtil.invoke( ReflectionUtil.groovy:23)org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $ StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:217)at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $ StandardTaskAction.execute( org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory上的AnnotationProcessingTaskFactory.java:210)org.gradle.api.internal.AbstractTask $ TaskActionWrapper.exe的$ StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:199)(AbstractTask)的.java:526)在org.gradle.api.internal.AbstractTask $ TaskActionWrapper.execute(AbstractTask.java:509)在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)... 70更多
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |