Multidex transformClassesWithMultidexlistForDebug失败

时间:2016-08-08 01:42:06

标签: android jar proguard multidex

我正在开发Android库。当我的客户端(应用程序开发人员)应用我的Jar文件时,会显示错误消息。 构建正常工作,但是当我在Android Studio中运行(playButton)应用程序时,它就会发生 错误信息如下所示:
    任务执行失败':app:transformClassesWithMultidexlistForDebug'。

  

java.io.IOException:无法读取[/ Users / VSSCP_KYOSEON / Documents / Work / Android / A / B / app / build / intermediates / transforms / jarMerging / debug / jars / 1 / 1f / combined .jar](不能处理类[com / a / b / VSFunctionActivity.class](堆栈映射框中的未知验证类型[88]))

这是我的应用程序Gradle代码:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion '24.0.1'

defaultConfig {
    applicationId "com.a.b"
    minSdkVersion 18
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_6
    targetCompatibility JavaVersion.VERSION_1_6
}

dexOptions {
    javaMaxHeapSize "4g" //specify the heap size for the dex process
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
compile project(':ChartLib')
compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.android.support:multidex:1.0.1'
compile files('libs/vs_sat_sdk.jar')

}

我的Jar文件是vs_sat_sdk.jar。它适用于proguard 我已经应用了Android Multidex指南。 https://developer.android.com/tools/building/multidex.html但我没能执行。

我的操作情况正常。
1.我在我的jar文件中应用proguard。当minSdkVersion超过21时,这是正常操作。但是当minSdkVersion低于21时,显示失败 2.如果我的jar文件没有应用proguard,无论minSdkVersion如何,都是正常操作。

请告诉我您的解决方案。

问候。

1 个答案:

答案 0 :(得分:0)

可能jar文件已由未正确更新StackMapFrame属性的工具处理。

实际上,Android开发不需要StackMapFrame属性,因此您可以指示ProGuard不创建它,它可能会解决您的问题。将ProGuard应用到库时,将以下内容添加到配置中:

{ Centroid: 
   { [Function: ge]
     area2: [Function],
     centroid3: [Function],
     getCentroid: [Function] },
  CGAlgorithms: 
   { [Function: he]
     orientationIndex: [Function],
     signedArea: [Function],
     distanceLineLine: [Function],
     isPointInRing: [Function],
     computeLength: [Function],
     isCCW: [Function],
     locatePointInRing: [Function],
     distancePointLinePerpendicular: [Function],
     computeOrientation: [Function],
     distancePointLine: [Function],
     isOnLine: [Function],
     CLOCKWISE: -1,
     RIGHT: -1,
     COUNTERCLOCKWISE: 1,
     LEFT: 1,
     COLLINEAR: 0,
     STRAIGHT: 0 },
  ConvexHull: 
   { [Function: me]
     extractCoordinates: [Function],
     RadialComparator: { [Function: ye] polarCompare: [Function] } },
  InteriorPointArea: 
   { [Function: oi]
     centre: [Function],
     avg: [Function],
     SafeBisectorFinder: { [Function: ai] getBisectorY: [Function] } },
  InteriorPointLine: [Function: ui],
  InteriorPointPoint: [Function: li],
  RobustLineIntersector: { [Function: ae] nearestEndpoint: [Function] },
  MCPointInRing: { [Function: Ii] MCSelecter: [Function: Ni] },
  MinimumBoundingCircle: 
   { [Function: wi]
     pointWitMinAngleWithX: [Function],
     lowestPoint: [Function],
     pointWithMinAngleWithSegment: [Function] },
  MinimumDiameter: 
   { [Function: Li]
     nextIndex: [Function],
     computeC: [Function],
     getMinimumDiameter: [Function],
     getMinimumRectangle: [Function],
     computeSegmentForLine: [Function] } }