2012-01-08 8 views
2

私のアプリケーションでGoogle ACRAを使用しています。 Androidの2.3.7を実行している唯一のネクサスSにGoogle ACRAを使用している場合のjava.lang.NoSuchMethodError

java.lang.NoSuchMethodError: 
    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:213) 
    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImplWrapper.<init>(OpenSSLSocketImplWrapper.java:35) 
    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:92) 
    at org.acra.util.FakeSocketFactory.createSocket(FakeSocketFactory.java:79) 
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164) 
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
    at org.acra.util.HttpRequest.sendPost(HttpRequest.java:109) 
    at org.acra.util.HttpRequest.sendPost(HttpRequest.java:80) 
    at org.acra.util.HttpUtils.doPost(HttpUtils.java:59) 
    at org.acra.sender.GoogleFormSender.send(GoogleFormSender.java:62) 
    at org.acra.ErrorReporter.sendCrashReport(ErrorReporter.java:850) 
    at org.acra.ErrorReporter.checkAndSendReports(ErrorReporter.java:960) 
    at org.acra.ErrorReporter$ReportsSenderWorker.run(ErrorReporter.java:142) 

エラーが発生します。

は最近、私は私のレポートファイルに送信され、次のエラーが発生します。 私は常に同じデバイスであるかどうかは分かりません。

明らかに、エラーはアプリケーション自体からではなく、Googleのレポートからです。

どのように修正できますか?

+0

はあなたにもProGuardのを使用しましたか? – Force

+0

私はProGuardを使用していません –

答えて

0

あなたのNexusにはすべてのライブラリが必要ですか?あなたはライブラリのバージョンが他の携帯電話やエミュレータと同じであると確信していますか?

+0

いいえ、私はありません。 Googleのレポートでこのエラーが表示され、実際のデバイスにアクセスできません。私のアプリケーションは市場に出回っているので、何百もの人々が使っていることは分かっていますが、エラーはNexus Sからだけであり、Nexus Sデバイスの種類が異なるかどうかはわかりません。 –

1

あなたは難読化していますか?私は同様の問題を抱えていましたが、修正できました。

もしそうなら、あなたのproguard.cfgにこれらの行追加してみてください:

#ACRA specifics 
# we need line numbers in our stack traces otherwise they are pretty useless 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 

# ACRA needs "annotations" so add this... 
-keepattributes *Annotation* 

# keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'. 
# Note: if you are removing log messages elsewhere in this file then this isn't necessary 
-keep class org.acra.ACRA { 
     *; 
} 

# keep this around for some enums that ACRA needs 
-keep class org.acra.ReportingInteractionMode { 
    *; 
} 

# keep this otherwise it is removed by ProGuard 
-keep public class org.acra.ErrorReporter 
{ 
public void addCustomData(java.lang.String,java.lang.String); 
} 

# keep this otherwise it is removed by ProGuard 
-keep public class org.acra.ErrorReporter 
{ 
public org.acra.ErrorReporter$ReportsSenderWorker handleSilentException(java.lang.Throwable); 
} 

希望に役立ちます...

関連する問題