3

我正在嘗試在Android項目中使用Google's Speech API。示例項目有效。我有麻煩在我自己的Android應用程序中使用它。無法在Android中導入com.google.cloud.speech.v1.SpeechGrpc

的build.gradle(模塊:APP):

apply plugin: 'com.android.application' 
apply plugin: 'com.google.protobuf' 

ext { 
    supportLibraryVersion = '25.4.0' 
    grpcVersion = '1.4.0' 
} 
android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 

    defaultConfig { 
     applicationId "ApplicationID" 
     minSdkVersion 16 
     targetSdkVersion 24 
//  compileOptions { 
//   sourceCompatibility JavaVersion.VERSION_1_5 
//   targetCompatibility JavaVersion.VERSION_1_5 
//  } 
    } 
    signingConfigs { 
     release { 
      storeFile file(project.properties.storeFile) 
      storePassword project.properties.storePassword 
      keyAlias project.properties.keyAlias 
      keyPassword project.properties.keyPassword 
     } 
    } 
    productFlavors { 
     dev { 
      // Minimum version with platform multi-dex support 
      minSdkVersion 21 
     } 
     prod { 
      // Minimum version that can run gRPC (TLS extension) 
      minSdkVersion 16 
     } 
    } 
    buildTypes { 
     debug { 
      minifyEnabled false 
      multiDexEnabled true 
     } 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      signingConfig signingConfigs.release 
     } 
    } 

    configurations.all { 
     resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.2' 
     resolutionStrategy.force "com.android.support:support-annotations:$supportLibraryVersion" 
    } 
} 

protobuf { 
    protoc { 
     artifact = 'com.google.protobuf:protoc:3.3.0' 
    } 
    plugins { 
     javalite { 
      artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0" 
     } 
     grpc { 
      artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" 
     } 
    } 
    generateProtoTasks { 
     all().each { task -> 
      task.plugins { 
       javalite {} 
       grpc { 
        // Options added to --grpc_out 
        option 'lite' 
       } 
      } 
     } 
    } 
} 

// 
//  buildTypes { 
//  release { 
//   minifyEnabled false 
//   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
//  } 
// } 
// compileOptions { 
//  targetCompatibility 1.6 
//  sourceCompatibility 1.6 
// } 
//} 

dependencies { 
    // compile 'com.android.support:support-v4:18.0.0' 
    // compile 'com.android.support:appcompat-v7:24.2.1' 
// compile 'com.google.apis:google-api-services-speech:v1-rev8-1.22.0' 
    compile group: 'com.google.cloud', name: 'google-cloud-speech', version: '0.17.1-alpha' 
// compile 'com.google.android.gms:play-services:11.0.2' 
    compile project(':lib') //This is someother library I'm using 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'io.grpc:grpc-core:1.4.0' 

    // Support libraries 
    compile "com.android.support:design:$supportLibraryVersion" 
    compile "com.android.support:cardview-v7:$supportLibraryVersion" 
    compile "com.android.support:recyclerview-v7:$supportLibraryVersion" 

    // gRPC 
    compile "io.grpc:grpc-okhttp:$grpcVersion" 
    compile "io.grpc:grpc-protobuf-lite:$grpcVersion" 
    compile "io.grpc:grpc-stub:$grpcVersion" 
    compile 'javax.annotation:javax.annotation-api:1.2' 
    protobuf 'com.google.protobuf:protobuf-java:3.3.1' 

    // OAuth2 for Google API 
    compile('com.google.auth:google-auth-library-oauth2-http:0.7.0') { 
     exclude module: 'httpclient' 
    } 

    // Tests 
    testCompile 'junit:junit:4.12' 
    androidTestCompile 'com.android.support.test:runner:0.5' 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 
} 

的build.gradle(項目:項目名):

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     jcenter() 
     maven { url 'https://maven.google.com' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 
     // for gRPC 
     classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.0" 
//  compile 'com.github.adrielcafe:AndroidAudioConverter:0.0.8' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     maven { url 'https://maven.google.com' } 
     maven { 
      url "https://jitpack.io" 
     } 
    } 
} 

現在,當我嘗試import com.google.cloud.speech.v1.SpeechGrpc;我得到一個錯誤Cannot resolve symbol 'SpeechGrpc' 。但import com.google.cloud.speech.v1.RecognitionAudioRecognizeRequest等等工作正常。

我試過添加expample project's app module作爲模塊,它甚至不允許我使用import com.google.cloud。所以,我要麼需要解決進口Grpc或正確gradle這個設置,使用谷歌的語音API

+0

Tezz,你是怎麼解決它的? – Sar

+0

[Below](https://stackoverflow.com/a/44917825/3881561)解決方案爲我工作。 – tezz

回答

5

如果加上GoogleCloudPlatform/Android的文檔樣本的proto directory到您的Android應用程序源(APP/src目錄/主/),它即使你沒有在你的build.gradle上編寫[compile group:'com.google.cloud',name:'google-cloud-speech',version:'0.17.1-alpha']應用程序)。

相關問題