我有一个Android项目,它使用我在几个方面修改过的本地版本的毕加索库.但是,每当我尝试使用命令行构建我的项目时gradle build
,我总会得到Picasso不存在的错误:
$ ./gradlew build
:compileLint
:copyDebugLint UP-TO-DATE
:mergeDebugProguardFiles UP-TO-DATE
:preBuild UP-TO-DATE
:preDebugBuild UP-TO-DATE
:checkDebugManifest
:prepareDebugDependencies
:compileDebugAidl UP-TO-DATE
:compileDebugRenderscript UP-TO-DATE
:generateDebugBuildConfig UP-TO-DATE
:generateDebugAssets UP-TO-DATE
:mergeDebugAssets UP-TO-DATE
:generateDebugResValues UP-TO-DATE
:generateDebugResources UP-TO-DATE
:packageDebugResources UP-TO-DATE
:processDebugManifest UP-TO-DATE
:processDebugResources UP-TO-DATE
:generateDebugSources UP-TO-DATE
:processDebugJavaRes UP-TO-DATE
:compileDebugJavaWithJavac
/Users/me/project/src/com/example/myproject/MyView.java:30: error: package com.squareup.picasso does not exist
import com.squareup.picasso.Picasso;
Run Code Online (Sandbox Code Playgroud)
而且,当我运行时--info
,我可以看到它正在组装任务,但是picasso:check
并且picasso:build
错误地放在最后:
Tasks to be executed: [task ':compileLint', task ':copyDebugLint', task ':mergeDebugProguardFiles', task ':preBuild', task ':preDebugBuild', task ':checkDebugManifest', task ':prepareDebugDependencies', task ':compileDebugAidl', task ':compileDebugRenderscript', task ':generateDebugBuildConfig', task ':generateDebugAssets', task ':mergeDebugAssets', task ':generateDebugResValues', task ':generateDebugResources', task ':packageDebugResources', task ':processDebugManifest', task ':processDebugResources', task ':generateDebugSources', task ':processDebugJavaRes', task ':compileDebugJavaWithJavac', task ':packageDebugJar', task ':compileDebugNdk', task ':packageDebugJniLibs', task ':packageDebugLocalJar', task ':packageDebugRenderscript', task ':bundleDebug', task ':compileDebugSources', task ':assembleDebug', task ':copyReleaseLint', task ':mergeReleaseProguardFiles', task ':preReleaseBuild', task ':checkReleaseManifest', task ':prepareReleaseDependencies', task ':compileReleaseAidl', task ':compileReleaseRenderscript', task ':generateReleaseBuildConfig', task ':generateReleaseAssets', task ':mergeReleaseAssets', task ':generateReleaseResValues', task ':generateReleaseResources', task ':packageReleaseResources', task ':processReleaseManifest', task ':processReleaseResources', task ':generateReleaseSources', task ':processReleaseJavaRes', task ':compileReleaseJavaWithJavac', task ':packageReleaseJar', task ':compileReleaseNdk', task ':packageReleaseJniLibs', task ':packageReleaseLocalJar', task ':packageReleaseRenderscript', task ':bundleRelease', task ':compileReleaseSources', task ':assembleRelease', task ':assemble', task ':lint', task ':preDebugUnitTestBuild', task ':prepareDebugUnitTestDependencies', task ':processDebugUnitTestJavaRes', task ':compileDebugUnitTestJavaWithJavac', task ':compileDebugUnitTestSources', task ':mockableAndroidJar', task ':assembleDebugUnitTest', task ':testDebugUnitTest', task ':preReleaseUnitTestBuild', task ':prepareReleaseUnitTestDependencies', task ':processReleaseUnitTestJavaRes', task ':compileReleaseUnitTestJavaWithJavac', task ':compileReleaseUnitTestSources', task ':assembleReleaseUnitTest', task ':testReleaseUnitTest', task ':test', task ':check', task ':build', task ':android-autofittextview:assemble', task ':android-autofittextview:check', task ':android-autofittextview:build', task ':picasso:assemble', task ':picasso:check', task ':picasso:build']
我认为这:picasso:(assemble|check|build)
需要在之前运行:compileDebugJavaWithJavac
,它失败了,特别是compile project(':picasso')
在我的build.gradle文件的dependencies部分中给出了我的指令.
这是我的build.gradle
档案:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.+'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion '23.0.1'
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
dependencies {
repositories {
mavenCentral()
}
compile project(':picasso')
compile project(':android-autofittextview')
compile 'org.apache.httpcomponents:httpmime:4.2.3'
}
Run Code Online (Sandbox Code Playgroud)
这是我的settings.gradle
档案:
include ':myproject'
include ':picasso'
project(':picasso').projectDir = \
new File(settingsDir, '../../../Lib/picasso')
include ':android-autofittextview'
project(':android-autofittextview').projectDir = \
new File(settingsDir, '../../../Interface/android-autofittextview')
Run Code Online (Sandbox Code Playgroud)
这是我的gradle版本:
$ gradle --version
------------------------------------------------------------
Gradle 2.7
------------------------------------------------------------
Build time: 2015-09-14 07:26:16 UTC
Build number: none
Revision: c41505168da69fb0650f4e31c9e01b50ffc97893
Groovy: 2.3.10
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_51 (Oracle Corporation 25.51-b03)
OS: Mac OS X 10.10.5 x86_64
Run Code Online (Sandbox Code Playgroud)
请注意,我不相信这与picasso本身有任何关系,因为我也看到同样的问题,试图编译本地版本的android-autofittextview.
谁能告诉我如何正确编译并包含我当地版本的毕加索?
在黑暗中拍摄,但我想知道这是否与我的android-library项目正在构建.aar文件而不是.jar文件这一事实有关,所以某种方式gradle不会将这些视为有效的依赖项?
我终于能够成功构建了。Picasso 有一个项目结构,其中有一个根目录,然后有许多子目录,每个子目录代表不同的项目(picasso、picasso-sample、picasso-pollexor)。我将 projectDir 设置为根 picasso 目录而不是实际的库子目录。因此,我更改了我的 settings.gradle 文件:
project(':picasso').projectDir = \
new File(settingsDir, '../../../Lib/picasso')
Run Code Online (Sandbox Code Playgroud)
对此
project(':picasso').projectDir = \
new File(settingsDir, '../../../Lib/picasso/picasso')
Run Code Online (Sandbox Code Playgroud)
我在其他依赖项之一中做了类似的事情。因此,代替:
project(':android-autofittextview').projectDir = \
new File(settingsDir, '../../Interface/android-autofittextview')
Run Code Online (Sandbox Code Playgroud)
我这样做了:
project(':android-autofittextview').projectDir = \
new File(settingsDir, '../../Interface/android-autofittextview/library')
Run Code Online (Sandbox Code Playgroud)
这很棘手,因为在后一个示例中,库目录中的 build.gradle 文件依赖于父级 build.gradle,我必须将其复制到子级中。似乎我应该能够创建对父项目的依赖关系,该依赖关系理解我的意思是子/库。
但最终我能够使用这种方法对其进行编译。
归档时间: |
|
查看次数: |
398 次 |
最近记录: |