Android Proguard不更改包名称
我遇到了一个问题,因为proguard没有更改我的包名和类名,我正在使用不同的库GSon、改装、支持v-4、v7、okhttp、glide、facebook、fcm、自定义选项卡、crashlytics、MULTIDEX、jsonwebtoken jjwt和其他,我在build.gradle文件中启用了proguard:Android Proguard不更改包名称,android,android-studio,proguard,obfuscation,android-proguard,Android,Android Studio,Proguard,Obfuscation,Android Proguard,我遇到了一个问题,因为proguard没有更改我的包名和类名,我正在使用不同的库GSon、改装、支持v-4、v7、okhttp、glide、facebook、fcm、自定义选项卡、crashlytics、MULTIDEX、jsonwebtoken jjwt和其他,我在build.gradle文件中启用了proguard: buildscript { repositories { maven { url 'https://maven.fabric.io/public' }
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url "https://artifactory.9elements.com/artifactory/imgly" }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
// classpath 'com.android.tools.build:gradle:2.3.1'
// classpath 'com.mutualmobile.gradle.plugins:dexinfo:0.1.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
//apply plugin: 'com.mutualmobile.gradle.plugins.dexinfo'
android {
// compileSdkVersion 25
// buildToolsVersion "25.0.2"
signingConfigs {
release {
keyAlias 'a'
keyPassword 'a'
storeFile file('J:/Android Studio Projects/a-android/a_Keystore.jks')
storePassword 'a'
v2SigningEnabled false
}
}
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
applicationId "com.test.r"
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
// minSdkVersion 16
// targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
renderscriptTargetApi 23
renderscriptSupportModeEnabled true
multiDexEnabled true
//to remove conflicts of compress library and editor sdk
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
buildTypes {
buildTypes.each {
it.resValue 'string', 'facebook_app_id', Facebook_APP_ID
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable false
jniDebuggable false
signingConfig signingConfigs.release
renderscriptDebuggable false
}
}
dexOptions {
incremental true
javaMaxHeapSize "2048M"
jumboMode = true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
}
lintOptions{
disable 'MissingTranslation'
}
}
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile project(':sdp-android')
compile files('libs/universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar')
compile project(':customTab')
compile project(':gallery')
compile project(':camera')
compile project(':cameraVideo')
compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.android.support:design:25.1.1'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp:okhttp:2.7.2'
// compile 'com.github.bumptech.glide:glide:3.5.2'
compile 'com.android.support:support-v4:25.1.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
testCompile 'junit:junit:4.12'
compile 'com.daasuu:BubbleLayout:1.1.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.google.firebase:firebase-messaging:9.4.0'
compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'
compile 'io.jsonwebtoken:jjwt:0.7.0'
// compile 'com.uniquestudio:parsingplayer:2.0.4'
// compile 'com.google.android.exoplayer:exoplayer:r2.3.0'
// compile 'com.devbrackets.android:exomedia:3.1.1'
compile 'com.android.support:multidex:1.0.1'
compile project(':exoMediaPlayer')
compile('com.crashlytics.sdk.android:crashlytics:2.6.7@aar') {
transitive = true;
}
compile project(':videocompress')
compile project(':videoPlayer')
compile project(':videoPlayerLib')
compile project(':chromeTab')
compile 'com.android.support:customtabs:25.1.1'
// compile 'ly.img.android:photo-editor-sdk:3.1.0'
compile 'ly.img.android:photo-editor-sdk:4.0.1'
compile 'com.danikula:videocache:2.7.0'
compile 'commons-io:commons-io:2.4'
}
apply plugin: 'com.google.gms.google-services'
这是Proguard文件:
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
##---------------End: proguard configuration for Gson ----------
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclasseswithmembers class retrofit2.* {
@retrofit2.http.* <methods>;
}
# OkHttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**
-dontwarn okio.**
# for Glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
## Google Play Services 4.3.23 specific rules ##
## https://developer.android.com/google/play-services/setup.html#Proguard ##
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
# end
# Custom Tabs
-dontwarn android.support.customtabs.**
-keep class android.support.customtabs.** { *; }
-keep interface android.support.customtabs.** { *; }
# Render Script
-keep class android.support.v8.renderscript.** { *; }
# Crashlytics
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*
#
-keep class io.github.memfis19.** { *; }
-dontwarn io.github.memfis19.**
-dontwarn com.googlecode.mp4parser.**
-dontwarn io.jsonwebtoken.impl.**
-dontwarn io.jsonwebtoken.**
-keep class io.jsonwebtoken.** { *; }
-dontwarn com.fasterxml.**
-keep class com.fasterxml.** { *; }
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
-keepclassmembers public final enum com.fasterxml.jackson.annotate.JsonAutoDetect$Visibility {
public static final com.fasterxml.jackson.annotate.JsonAutoDetect$Visibility *; }
-keep public class * extends android.app.Activity
-keep public class * extends android.support.v7.app.AppCompatActivity
-keep public class * extends android.app.Application
-keep public class * extends android.support.multidex.MultiDexApplication
-keep class android.support.multidex.**{*;}
-dontwarn android.support.v7**
-keep类android.support.v7.*{*;}
-保留android.support.v7.*{*;}
-dontwarn android.support.v4**
-keep类android.support.v4.*{*;}
-保留android.support.v4.*{*;}
##---------------开始:Gson的proguard配置----------
#Gson在处理字段时使用存储在类文件中的泛型类型信息。前卫
#默认情况下删除此类信息,因此将其配置为保留所有信息。
-保留署名
#用于使用GSON@Expose注释
-keepattributes*注释*
#Gson特定类
-保持类sun.misc.Unsafe{*;}
#-保持类com.google.gson.stream.*{*;}
#将通过Gson进行序列化/反序列化的应用程序类
-保持类com.google.gson.examples.android.model.*{*;}
#防止proguard从TypeAdapterFactory中剥离接口信息,
#JsonSerializer、JsonDeserializer实例(因此可以在@JsonAdapter中使用)
-keep类*实现com.google.gson.TypeAdapterFactory
-keep class*实现com.google.gson.JsonSerializer
-keep类*实现com.google.gson.JsonDeserializer
##---------------结束:Gson的proguard配置----------
-dontwarn 2**
-保持类2.*{*;}
-保留署名
-保留特例
-KeepClassswithMembers 2级改装。*{
@2.http.*;
}
#OkHttp
-保留署名
-keepattributes*注释*
-保持类com.squareup.okhttp.*{*;}
-保持接口com.squareup.okhttp.*{*;}
-dontwarn com.squareup.okhttp**
-唐特沃恩·奥基奥**
#滑翔
-keep public类*实现com.bumptech.glide.module.GlideModule
-保持公共类*扩展com.bumptech.glide.AppGlideModule
-保持公共枚举com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$**{
**[]美元价值;
公众*;
}
##Google Play Services 4.3.23特定规则##
## https://developer.android.com/google/play-services/setup.html#Proguard ##
-keep class*扩展了java.util.ListResourceBundle{
受保护对象[][]getContents();
}
-保持公共类com.google.android.gms.common.internal.safeparcel.SafeParcelable{
公共静态最终***空;
}
-keepnames@com.google.android.gms.common.annotation.KeepName类*
-keepclassmembernames类*{
@com.google.android.gms.common.annotation.KeepName*;
}
-keepnames类*实现android.os.Parcelable{
公共静态最终**创建者;
}
#结束
#自定义选项卡
-dontwarn android.support.customtabs**
-keep class android.support.customtabs.*{*;}
-保留android.support.customtabs.*{*;}
#渲染脚本
-保留类android.support.v8.renderscript.*{*;}
#粗制滥造
-保持类com.crashlytics.*{*;}
-dontwarn com.crashlytics**
-keepattributes源文件,LineNumberTable
-keepattributes*注释*
#
-保持类io.github.memfis19.*{*;}
-dontwarn io.github.memfis19**
-dontwarn com.googlecode.mp4parser**
-dontwarn io.jsonwebtoken.impl**
-dontwarn io.jsonwebtoken**
-保持类io.jsonwebtoken.*{*;}
-dontwarn com.fasterxml**
-保持类com.fasterxml.*{*;}
-keepattributes*注释*、封闭方法、签名
-keepnames类com.fasterxml.jackson.*{*;}
-dontwarn com.fasterxml.jackson.databind**
-keepclassmembers public final enum com.fasterxml.jackson.annotate.jsonautodect$Visibility{
public static final com.fasterxml.jackson.annotate.jsonautodect$Visibility*;}
-keep public class*扩展android.app.Activity
-keep public class*扩展了android.support.v7.app.AppActivity
-keep public class*扩展android.app.Application
-keep public class*扩展了android.support.multidex.multidex应用程序
-keep类android.support.multidex.*{*;}
但我的版本apk不重命名任何模型类、适配器或任何仅重命名类名的成员。就像我的整个代码是用户可见的一样。
谁能想到我做错了
以下是截图:
提前感谢。Proguard还没有重命名软件包的标准 您可以使用手动创建的Proguard映射文件 喜欢 使用
-overloadaggressively
-useuniqueclassmembernames
-dontwarn org.apache.http.**
#Crashlytics
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
#-keep class com.crashlytics.** { *; }
#-dontwarn com.crashlytics.**
#end crashlytics
-dontpreverify
-repackageclasses 'android_spt'
-allowaccessmodification
-optimizations !code/simplification/arithmetic,!field
-keepattributes *Annotation*
-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.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-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.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-重载
-使用UniqueClassMemberName
-dontwarn org.apache.http**
#粗制滥造
-keepattributes*注释*
-keepattributes源文件,LineNumberTable
#-保持类com.crashlytics.*{*;}
#-dontwarn com.crashlytics**
#末端碰撞
-不要翻转
-重新打包类“android\u spt”
-允许访问修改
-优化!代码/简化/算术,!领域
-keepattributes*注释*
-keep public class*扩展android.app.Activity
-keep public class*扩展android.app.Application
-keep public class*扩展了android.app.Service
-keep public class*扩展了android.content.BroadcastReceiver
-keep public class*扩展了android.content.ContentProvider
-keep public class*扩展了android.view.view{
public(android.content.Context);
public(android.content.Context、android.util.AttributeSet);
public(android.content.Context,android.util.AttributeSet,int);
公共无效集*(…);
}
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembers类*扩展了android.content.Context{
public void*(android.view.view);
public void*(android.view.MenuItem);
}
-keepclassmembers类*实现android.os.Parcelable{
静态**创建者;
}
-keepclassmembers类**.R$*{
公共静态;
}
-keepclassmembers类*{
@android.webkit.JavascriptInterface;
}