2015-10-20 13 views
5

picasso library'un yerel sürümünü kullanan bir Android projem var. Ben gradle build kullanarak komut satırından projemi inşa etmeye çalıştıklarında, hep Picasso var olmadığını bir hata alıyorum:picasso'nun yerel sürümünü derlemek için not alma

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

Ben --info ile çalıştırdığınızda Üstelik, bunun görevleri montaj görebilirsiniz, ama picasso:check ve picasso:build hatalı sonunda yerleştirilir:

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']

Ben :picasso:(assemble|check|build) önce onu başarısız olduğu :compileDebugJavaWithJavac, çalıştırmak gerekir düşünürdüm

, özellikle benimverilen Build.gradle dosyamın bağımlılıklar bölümündeyönergesi. İşte

benim build.gradle dosyasıdır:

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' 
} 

Ve işte benim settings.gradle dosyasıdır: Ben inanmıyorum

$ 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 

Not:

İşte
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') 

benim gradle versiyonu Bu Picasso ile ilgili bir şey var çünkü ben aynı sorunu çalışırken görüyorum android-autofittextview'un yerel bir sürümünü derlemek için.

Herkes, düzgün bir şekilde derlemek ve yerel Picasso sürümümü nasıl ekleyebileceğimi söyleyebilir mi? Karanlıkta


Shot, ama bu benim android-kütüphane projeleri .aar dosyaları bina ve .jar dosyalarını ve böylece her nasılsa gradle olarak bu tanımıyor şekilde gerçekleştirilmesinden ilgisi olup olmadığını merak geçerli bağımlılıklar?

+0

Picasso projesindeki gradle dosyasının projenizle aynı compileSdkVersion ve buildToolsVersion uygulamasına sahip olduğundan emin olun –

+0

@ eric247 Yalnızca eşleşmelerini sağladığımdan, hiçbir etkisi olmadığından emin oldum. – esilver

+0

Android Studio'yu kullanıyor musunuz? –

cevap

0

Sonunda başarılı bir şekilde inşa edebildim. Picasso'nun kök dizini olan bir proje yapısı vardır ve her biri farklı projeleri temsil eden çok sayıda alt dizin (picasso, picasso-sample, picasso-pollexor). ProjectDir'i asıl kitaplık alt dizini yerine root picasso dizini olarak ayarlıyordum. Ben diğer bağımlılıklar birinde benzer bir şey yaptım bu

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

için

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

: Böylece, bu benim settings.gradle dosyayı değiştirdi. Böylece, yerine:

project(':android-autofittextview').projectDir = \ 
    new File(settingsDir, '../../Interface/android-autofittextview') 

Bunu yapan:

project(':android-autofittextview').projectDir = \ 
    new File(settingsDir, '../../Interface/android-autofittextview/library') 

bu sonuncu örnekte, kütüphane dizinde build.gradle dosyası bu I build.gradle ebeveyn üzerinde bağımlılıkları vardı çünkü aldatıcı Çocuğa kopyalamak zorunda kaldı. Çocuk/kütüphaneyi kastettiğimi anlayan ana projeye bağımlılık oluşturabiliyormuşum gibi görünüyor.Ancak bu yaklaşımı kullanarak derlemeyi başarabildim.