我正在开发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如何,都是正常操作。
请告诉我您的解决方案。
问候。
答案 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] } }