k3b*_*k3b 14 java android proguard gradle ical4j
我尝试压缩消耗的Android应用程序ical4j.jar.
当我使用gradle proguardDebug我得到的proguard构建apk
finalize()clone()我已经验证了android-7支持finalize()和clone():"...\Android ...\sdk\platforms\android-7\android.jar"有方法finalize()和clone()类java.lang.Object.
你知道如何解决这个问题吗?
注意:这不是其他'proguard找不到引用方法'的重复问题,因为在我的具体情况下我认为缺少的方法应该存在.
我在用
这是proguard配置proguard-rules.txt,可能需要一些修复:
# proguard-rules.txt
## ical4j also contains groovy code which is not used in android
-dontwarn groovy.**
-dontwarn org.codehaus.groovy.**
-dontwarn org.apache.commons.logging.**
-dontwarn sun.misc.Perf
-dontnote com.google.vending.**
-dontnote com.android.vending.licensing.**
Run Code Online (Sandbox Code Playgroud)
这是我的 build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
classpath 'net.sf.proguard:proguard-gradle:4.11'
}
}
allprojects {
repositories {
mavenCentral()
}
}
apply plugin: 'android'
configurations {
compile.exclude group: 'commons-logging' // referenced in some portable lib. use androids internal instead
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.3'
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
// used for testing. remove if it works as expected
debug {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'org.mnode.ical4j:ical4j:1.0.5'
compile 'backport-util-concurrent:backport-util-concurrent:3.1'
compile 'commons-codec:commons-codec:1.8'
compile 'commons-lang:commons-lang:2.6'
}
Run Code Online (Sandbox Code Playgroud)
[更新2014-12-20]
我在下面添加了我的工作配置作为答案.
注:当前的Android工作室1.0(android.buildToolsVersion> = '20'),则必须更换 runProguard与minifyEnabled
例
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*une 18
net.fortuna.ical4j.model.CalendarFactory扩展groovy.util.AbstractFactory延伸java.lang.Object.但是,输入中缺少中产阶级(您使用-dontwarn抑制了相应的警告).随着类层次结构缺少的一部分,ProGuard的并没有意识到CalendarFactory可以访问受保护的方法clone和finalize,并打印出这些警告.
由于您的代码可能根本不使用该类,因此您可以禁止显示警告:
-dontwarn net.fortuna.ical4j.model.CalendarFactory
Run Code Online (Sandbox Code Playgroud)
或覆盖所有类似的类:
-dontwarn net.fortuna.ical4j.model.**
Run Code Online (Sandbox Code Playgroud)
您不应为此问题添加任何-keep选项; Android SDK已经为您指定了与Android相关的基本选项.
| 归档时间: |
|
| 查看次数: |
32067 次 |
| 最近记录: |