gpt4 book ai didi

android - 如何让 gradle 编译本地版本的毕加索

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:12 26 4
gpt4 key购买 nike

我有一个使用本地版本 picasso library 的 Android 项目我已经在几个方面进行了修改。但是,每当我尝试使用 gradle build 从命令行构建我的项目时,我总是得到一个毕加索不存在的错误:

$ ./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;

此外,当我使用 --info 运行时,我看是拼装任务,但是 picasso:checkpicasso: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 文件的依赖项部分中的指令。

这是我的 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'
}

这是我的 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')

这是我的毕业版本:
$ 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

请注意,我认为这与毕加索本身没有任何关系,因为我在尝试编译 android-autofittextview 的本地版本时看到了同样的问题。也。

谁能告诉我如何让 gradle 正确编译并包含我的本地版本的毕加索?

在黑暗中拍摄,但我想知道这是否与我的 android-library 项目正在构建 .aar 的事实有关文件而不是 .jar 文件,所以不知何故 gradle 不将这些识别为有效的依赖项?

最佳答案

我终于能够成功构建。 Picasso 有一个项目结构,其中有一个根目录,然后是许多子目录,每个子目录代表不同的项目(picasso、picasso-sample、picasso-pollexor)。我将 projectDir 设置为根毕加索目录而不是实际的库子目录。因此,我从这里更改了我的 settings.gradle 文件:

project(':picasso').projectDir = \
new File(settingsDir, '../../../Lib/picasso')

对此
project(':picasso').projectDir = \
new File(settingsDir, '../../../Lib/picasso/picasso')

我在我的其他依赖项之一中做了类似的事情。因此,而不是:
project(':android-autofittextview').projectDir = \
new File(settingsDir, '../../Interface/android-autofittextview')

我这样做了:
project(':android-autofittextview').projectDir = \
new File(settingsDir, '../../Interface/android-autofittextview/library')

这很棘手,因为在后一个示例中,库目录中的 build.gradle 文件依赖于父 build.gradle,我必须将其复制到子目录中。似乎我应该能够创建对理解我的意思是子/库的父项目的依赖项。

但最终我能够使用这种方法编译它。

关于android - 如何让 gradle 编译本地版本的毕加索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33228261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com