2016-11-24 40 views
0

我很新的Java和Android Studio,因爲我主要工作在Xamarin下。
我正在實施一個語音識別項目(最初由Xamarin開發,但現在無法使用,導致Google在某處推出了很大的延遲),試圖使用新的(仍是測試版)雲語音識別。 我已經從here下載了一個示例,並試圖使用它,但我面臨一個奇怪的(對我來說)問題。 SpeechSettings對象使用ImmutableList來保存del默認的API範圍,但是當ImmutableList add("something").build()嘗試調用checkNotNull函數時,我遇到了很多錯誤。我已經從SpeechSettings對象創建中提取了列表的創建,並且爲簡單起見,我已將它放在Button的單擊事件中。創建(或更好地插入一個String元素)會導致相同的錯誤列表。 這是點擊監聽器的代碼:番石榴ImmutableList靜態函數checkNotNull沒有找到

bRecon.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     try 
     { 
      ImmutableList<String> lTest = ImmutableList.String>builder().add("132").build(); 
     } 
     catch (Exception ilEx) 
     { 
     } 

     SpeechRecon sr = new SpeechRecon(); 
    }); 
} 

,這是當ImmutableList創建相對logcat的輸出:

11-24 13:26:03.007 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkNotNull, referenced from method com.google.common.collect.ImmutableList.copyOf 
11-24 13:26:03.007 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26168: Lcom/google/common/base/Preconditions;.checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; 
11-24 13:26:03.007 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000 
11-24 13:26:03.017 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Joiner.appendTo, referenced from method com.google.common.collect.ImmutableCollection.toString 
11-24 13:26:03.017 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve virtual method 26143: Lcom/google/common/base/Joiner;.appendTo (Ljava/lang/StringBuilder;Ljava/lang/Iterable;)Ljava/lang/StringBuilder; 
11-24 13:26:03.017 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x6e at 0x0013 
11-24 13:26:03.022 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkNotNull, referenced from method com.google.common.collect.ImmutableList$Builder.add 
11-24 13:26:03.022 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26168: Lcom/google/common/base/Preconditions;.checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; 
11-24 13:26:03.022 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0002 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkArgument, referenced from method com.google.common.collect.Lists.computeArrayListCapacity 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26164: Lcom/google/common/base/Preconditions;.checkArgument (Z)V 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0003 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkNotNull, referenced from method com.google.common.collect.Lists.newArrayList 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26168: Lcom/google/common/base/Preconditions;.checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkNotNull, referenced from method com.google.common.collect.Lists.newArrayList 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26168: Lcom/google/common/base/Preconditions;.checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; 
11-24 13:26:03.027 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000 
11-24 13:26:03.032 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkNotNull, referenced from method com.google.common.collect.Lists.newArrayList 
11-24 13:26:03.032 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26168: Lcom/google/common/base/Preconditions;.checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; 
11-24 13:26:03.032 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000 
11-24 13:26:03.032 31057-31057/it.sia.cloudspeechrpcjava I/dalvikvm: Could not find method com.google.common.base.Preconditions.checkNotNull, referenced from method com.google.common.collect.Lists.partition 
11-24 13:26:03.032 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to resolve static method 26168: Lcom/google/common/base/Preconditions;.checkNotNull (Ljava/lang/Object;)Ljava/lang/Object; 
11-24 13:26:03.032 31057-31057/it.sia.cloudspeechrpcjava D/dalvikvm: VFY: replacing opcode 0x71 at 0x0000 
11-24 13:26:03.037 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to find class referenced in signature (Lcom/google/common/base/Function;) 
11-24 13:26:03.037 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to find class referenced in signature (Lcom/google/common/base/Function;) 
11-24 13:26:03.042 31057-31057/it.sia.cloudspeechrpcjava W/dalvikvm: VFY: unable to find class referenced in signature (Lcom/google/common/base/Function;) 

,這裏是我的gradle.build文件:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.0" 
    defaultConfig { 
     applicationId "it.sia.cloudspeechrpcjava" 
     minSdkVersion 19 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     pickFirst 'META-INF/io.netty.versions.properties' 
     exclude 'META-INF/INDEX.LIST' 
    } 
} 

dependencies { 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
      { 
       exclude group: 'com.android.support', module: 'support-annotations' 
      }) 
    androidTestCompile 'com.google.code.findbugs:jsr305:3.0.0' 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:25.0.1' 

    compile files('libs/guava-gwt-20.0.jar') 
    compile files('libs/guava-collections-r03.jar') 
    compile files('libs/gax-0.0.25.jar') 
    compile files('libs/grpc-all-1.0.1.jar') 
    compile files('libs/grpc-core-1.0.1.jar') 
    compile files('libs/grpc-core-proto-0.0.6.jar') 
    compile files('libs/grpc-google-cloud-speech-v1beta1-0.1.3.jar') 
    compile files('libs/joda-time-2.9.6.jar') 
    compile files('libs/protobuf-java-3.1.0.jar') 
} 

如果你們中的任何一個人都能指點我一個可能的解決方案,那就太好了。 謝謝。 Rodolfo, 。

回答

1

compile files('libs/guava-collections-r03.jar')「Guava-Collections」未更新6年,取決於您未下載幷包含的其他一些圖書館。

guava-primitives被描述爲「包含實用程序類的庫」,因此它可能包含丟失的Preconditions類。

guava-collections替換爲guava(20.0)的最新版本,它可能會工作。 我也推薦學習有關自動依賴管理的知識,因爲手動下載庫並確保這些庫的依賴關係很快就會變得非常混亂。

+0

你是對的。谷歌雲語音的手動庫依賴性是一個噩夢,但我是Android Studio的新手,並且以'lib_name:artifact:version'編譯形式的自動依賴性導致了包含重複文件的問題:我的主要作用域是向我的客戶展示這款全新的Google語音平臺的強大功能,而不會浪費其他時間深入學習新的編程環境。一旦展示出來,我將有更多時間來優化所有內容,包括我的gradle知識。 –