0

Ant と Android (SDK リビジョン 18) で Android APK をビルドするための Jenkins ビルド サーバーがあります。APK のリリースは正常に機能しています。ただし、proguard.cfg を提供し、project.properties の「proguard.config=proguard.cfg」でそれを指すことでプロガードを有効にすると、次のようになります。

Proguard が実行されます (シェル出力とその後の mappings.txt と seed.txt の存在からわかるように) apk が生成されます。ただし、APK によって生成されたスタック トレースはまったく難読化されていません。

誰かがこれについて考えましたか?proguard によって生成された jar は、何らかの理由で apk に含まれていないようです。


これが私のProguard構成です

-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/ ,!class/merging/

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

#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);
}

mappings.txt には、コードが難読化されていると記載されています。

de.cellular.crashtest.ObfuscateThisClass -> de.cellular.crashtest.b:

ただし、報告されたスタックトレースでは難読化されていません

4

1 に答える 1

0

それは単なるジェンキンスの構成の問題だったようです: apk はbin/ディレクトリからアーカイブされましたが、難読化されたものはrelease/

于 2012-06-08T14:20:28.770 に答える