0

Pro-Guard を有効にして署名付き APK を生成する際に奇妙な問題があります。テキストの色が黒のサーバーからのいくつかのアイテムのリスト ビューを表示しています。デバッグ リリースでは、リスト ビューに問題なくデータが表示されます。しかし、リリースモードでは、透明色のデータを表示するリストビュー、テキストの色は黒を使用し、リストビューアダプタークラスで色を設定しています。リリースモードでは、リストビューをクリックしてリスト項目を選択できますが、リスト内の項目ですビューが表示されません。

ここに画像の説明を入力

上の画像はデバッグ モードで、リスト ビューが正しく表示されています。

ここに画像の説明を入力

上の画像はリリースモードです。

私のプロガードファイルに注意してください

    -keep class in.apricotz.outlet.ui.adapter.ListBaseAdapter.**
       -keep class butterknife.** { *; }
       -dontwarn butterknife.internal.**
       -keep class **$$ViewBinder { *; }

      -keepclasseswithmembernames class * {
      @butterknife.* <fields>;
     }

    -keepclasseswithmembernames class * {
    @butterknife.* <methods>;
   }
   -dontwarn org.apache.http.**
   -dontwarn okio.**
   -dontwarn retrofit2.**
   -keep class retrofit2.** { *; }
   -keepattributes Signature
   -keepattributes Exceptions
   -keepattributes *Annotation*

   -keepattributes RuntimeVisibleAnnotations
   -keepattributes RuntimeInvisibleAnnotations
   -keepattributes RuntimeVisibleParameterAnnotations
   -keepattributes RuntimeInvisibleParameterAnnotations
   -keepattributes EnclosingMethod
   -keepclasseswithmembers class * {
    @retrofit2.* <methods>;
   }

  -keepclasseswithmembers interface * {
    @retrofit2.* <methods>;
  }

  -keepattributes Signature
  -keepnames class org.apache.** {*;}
  -keep public class org.apache.** {*;}
  -keep public class org.apache.http.**{*;}
  -keep class rx.schedulers.Schedulers {
    public static <methods>;
   }
   -keep class rx.schedulers.ImmediateScheduler {
     public <methods>;
    }
   -keep class rx.schedulers.TestScheduler {
    public <methods>;
    }
   -keep class rx.schedulers.Schedulers {
    public static ** test();
   }
  -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
   }
  -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef              {        long producerNode;
      long consumerNode;
  }
  -dontwarn rx.internal.util.**

  -dontusemixedcaseclassnames
  -dontskipnonpubliclibraryclasses
  -dontpreverify
  -verbose
  -ignorewarnings
  -repackageclasses ''
  -allowaccessmodification
  -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

  -dontwarn android.support.design.**
  -keep class android.support.design.** { *; }
  -keep interface android.support.design.** { *; }
  -keep public class android.support.design.R$* { *; }
  -keep public class * extends android.support.v4.app.Fragment
  -keepclassmembers class **.R$* {
    public static <fields>;
   }

私はこの 2 日間、この問題に悩まされてきました。デバッグ リリースでは、アプリは問題なく完全に動作しています。私を助けてください。

引用符

4

1 に答える 1

0

実際に根本的な原因を見つけることはできませんが、次のことを確認できます。

リリースモードでサーバーからデータを取得するための URL は、アイテムのリストにある空のアイテムに応答しますか?

github からカスタム ライブラリを使用する場合は、セットアップを作成した Pro-Guard を確認してください。

リストビューのビューアイテムを保持するためにビューホルダーオブジェクトを使用しましたか? プログラミングで textview の文字色を設定します。

recyclerview を使用して listview を置き換えることができます。

ProGuard の問題を確認してください: https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/troubleshooting.html

于 2016-06-24T06:56:39.580 に答える