如何在android studio中为Google Cloud Endpoint配置proguard

时间:2015-11-04 18:50:04

标签: android proguard google-cloud-endpoints android-proguard

尝试理解proguard(实际上我只是想让它工作),我从一个非常简单的hello world应用程序开始。到现在为止还挺好。然后我添加了我的谷歌云端点。没有其他的。一旦我添加了端点,proguard会抛出异常:

proguard-rules.pro

所以我遇到问题的唯一原因是因为云端点I add using android studio。所以我的问题是如何为proguard配置Google Cloud Android应用程序?

由于来自Proguard的失败消息,我将-keepclassmembers class * { @com.google.api.client.util.Key <fields>; } -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault -keep class com.google.api.** { public *; } -dontwarn com.google.api.** -keep class com.google.common.** { public *; } -dontwarn com.google.common.** -keep class com.mycompany.cloud.Cloud.** { *; } -dontwarn com.google.android.gms.** -dontwarn com.google.common.cache.** -dontwarn com.google.common.primitives.** -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 *; } 从没有任何内容更改为具有以下内容:

Unexpected error while evaluating instruction:
  Class       = [com/fasterxml/jackson/core/JsonFactory$Feature]
  Method      = [collectDefaults()I]
  Instruction = [22] getfield #8
  Exception   = [java.lang.IllegalArgumentException] (Value "i" is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
Unexpected error while performing partial evaluation:
  Class       = [com/fasterxml/jackson/core/JsonFactory$Feature]
  Method      = [collectDefaults()I]
  Exception   = [java.lang.IllegalArgumentException] (Value "i" is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
Exception while processing task 
java.lang.IllegalArgumentException: Value "i" is not a reference value [proguard.evaluation.value.UnknownIntegerValue]
    at proguard.evaluation.value.Value.referenceValue(Value.java:97)
    at proguard.evaluation.Stack.apop(Stack.java:330)
    at proguard.evaluation.BasicInvocationUnit.visitFieldrefConstant(BasicInvocationUnit.java:197)
    at proguard.classfile.constant.FieldrefConstant.accept(FieldrefConstant.java:69)
    at proguard.classfile.ProgramClass.constantPoolEntryAccept(ProgramClass.java:465)
    at proguard.evaluation.BasicInvocationUnit.invokeMember(BasicInvocationUnit.java:179)
    at proguard.evaluation.Processor.visitConstantInstruction(Processor.java:591)
    at proguard.classfile.instruction.ConstantInstruction.accept(ConstantInstruction.java:157)
    at proguard.optimize.evaluation.PartialEvaluator.evaluateSingleInstructionBlock(PartialEvaluator.java:761)
    at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:609)
    at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(PartialEvaluator.java:567)
    at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute0(PartialEvaluator.java:271)
    at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute(PartialEvaluator.java:188)
    at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
    at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:81)
    at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95)
    at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:92)
    at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:73)
    at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:516)
    at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47)
    at proguard.classfile.visitor.ClassAccessFilter.visitProgramClass(ClassAccessFilter.java:67)
    at proguard.classfile.ProgramClass.accept(ProgramClass.java:358)
    at proguard.classfile.ClassPool.classesAccept(ClassPool.java:124)
    at proguard.optimize.Optimizer.execute(Optimizer.java:462)
    at proguard.ProGuard.optimize(ProGuard.java:328)
    at proguard.ProGuard.execute(ProGuard.java:127)
    at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074)
    at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139)
    at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115)
    at com.android.builder.tasks.Job.runTask(Job.java:48)
    at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)
    at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227)
    at java.lang.Thread.run(Thread.java:744)

现在,proguard崩溃了另外一条消息

dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
}

更新 Gradle文件:

buildscript {     存储库{         maven {url&#39; https://maven.fabric.io/public&#39; }     }

defaultConfig {
    applicationId "com.mycomp.android"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 11
    versionName "0.0.11"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        zipAlignEnabled true
    }
}
dexOptions {
    incremental true
    javaMaxHeapSize "4g"
    preDexLibraries = false
}

} apply plugin:&#39; com.android.application&#39; 申请插件:&#39; io.fabric&#39; 申请插件:&#39; com.google.gms.google-services&#39;

知识库{     maven {url&#39; https://maven.fabric.io/public&#39; } }

android {     compileSdkVersion 23     buildToolsVersion&#34; 23.0.1&#34;

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(path: ':myendpoint', configuration: 'android-endpoints')
    compile('com.twitter.sdk.android:twitter:1.9.0@aar') {
        transitive = true;
    }
    compile 'com.android.support:multidex:1.0.0'
    compile 'com.android.support:design:23.0.1'
    compile 'com.android.support:recyclerview-v7:23.0.1'
    compile 'com.android.support:cardview-v7:23.0.1'
    compile 'com.google.android.gms:play-services-analytics:8.1.0'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.path:android-priority-jobqueue:1.1.2'
    compile 'com.google.android.gms:play-services-gcm:8.1.0'
    compile 'com.google.android.gms:play-services-appindexing:8.1.0'
    compile 'com.google.android.gms:play-services-location:8.1.0'
    compile 'com.google.android.gms:play-services-ads:8.1.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
        transitive = true;
    }
}

}

<xsl:template match="tag2/@id[.=../../@id]">
    <xsl:attribute name="{name()}">
        <xsl:value-of select="concat(., 'D')"/>
    </xsl:attribute>
</xsl:template>

0 个答案:

没有答案