2011-12-27 4 views
2

私の実際のデバイスでデバッグする際、エミュレータでうまく動作するAndroidアプリケーションを作成しました。GSONのAndroidアプリはデバッグモードで動作しますが、署名付きAPKを実行しているときは動作しません

しかし、デバイス上で署名付きapkを実行すると、GSONデシリアライズが機能しません。

問題は、このコードで発生します。

public static void parseLanguage(String response) { 
    GsonBuilder gsonBuilder = new GsonBuilder(); 
    gsonBuilder.setFieldNamingStrategy(new MyFieldNamingStrategy()); 
    Gson gson = gsonBuilder.create(); 
    _Helper.s = gson.fromJson(response, _Strings.class); 
} 

私もこのクラスを使用します。

class MyFieldNamingStrategy implements FieldNamingStrategy { 
//Translates the Java field name into its JSON element name representation. 
    @Override 
    public String translateName(Field field) { 
     return field.getName(); 
    } 
} 

私は「応答」という名前の文字列が有効なJSON文字列であることを確認しますが、しました_Strings.classの実際の移植は機能せず、_Strings.classに含まれるすべての文字列は空のままです。

これはなぜ起こるのでしょうか?これは署名されたapkを実行しているときにのみ発生し、Logcat出力は例外を表示せず、トレースもまったく表示しません。

+0

誰もいません。より多くの情報を投稿しない限り(logcatの出力、最終的な例外など) –

+0

logcat ouputは関連性のある有用な情報を出力しません。例外はありません。私はこの質問があいまいであることを十分に認識しています。例外がある場合は、把握するのがずっと簡単でした。私にとって気になるのは、明らかに、デバッグとサインすることとは何か関係があり、他の人が同様の問題に遭遇した可能性があるということです。 – Eivind

答えて

3

可能な限り、デバッグ出力でコードをスパイクしてください。これにより、より多くの洞察が得られます。 問題が署名しているとは思えません。おそらくそれはあなたのプロジェクト/ビルド構成です。考えられる原因の1つに、プログアード(ツールチェーン内)の難読化があります。

+1

ProGuardが原因でした。ありがとうございました。 :-) – Eivind

+0

あなたは解決するために何をしましたか?私は似たような問題を抱えています...私の質問を参照してください:http://stackoverflow.com/questions/30290208/gson-not-creating-correctly-using-my-jsonentity-only-in-published-app-using-an – JonasOliveira

+0

Proguardと反射ベースのツールはよく混ざりません。一般的な解決策は、ドメインクラスをproguard処理から除外することです。 –

関連する問題