0

私はEclipse LunaでJavaで開発しています。パッケージ化プロセスは Proguard によって管理されます。

アプリは、ローカル データストア リポジトリに対して、および物理デバイス上で正常に動作しています。

ただし、アプリをベータ版として Google Play に公開しました。アプリが ClassNotFoundException でクラッシュします。例外は、GAE のエンドポイント クライアント ライブラリ プロセスによって生成されたクラスに対する呼び出しです。

これが私がこれまでに試したことですが、運はありません...

  1. すべてのクライアント ライブラリをリストの一番上に配置するようにビルド パスを再配置し、依存関係のチェックを外して、プロジェクトを消去します。

  2. また、proguard-project.txt で完全なパッケージ名とクラス名を指定して -keepclass オプションを使用してみました。

  3. 次のエントリを proguard-project.txt に追加しました...まだうまくいきません

    -keep public class * extends com.google.api.client.json.GenericJson # ジェネリック型とリフレクション経由でアクセスされる @Key アノテーションを保持するために google-api-client が必要とする** -keepclassmembers class * { @com.google.api. client.util.Key ; -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

誰が私が行方不明になっているのか手がかりを持っていますか? ありがとう!

4

1 に答える 1

0

これは、proguard-project.txt ファイルに追加することになったものです。

# Needed by google-api-client to keep generic types and @Key annotations accessed via reflection
-keep public final class * 
-keep public class *

-keepclassmembers class * {
  public <fields>;
  static <fields>;
  public <methods>;
  protected <methods>;
}

-keepclassmembers class * extends com.google.api.client.json.GenericJson{
  public <fields>;
  static <fields>;
  public <methods>;
}

-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
于 2015-09-16T00:07:53.407 に答える