proguard.ParseException:proguard.cfg 中的未知选项“-encryptstrings”

Posted

技术标签:

【中文标题】proguard.ParseException:proguard.cfg 中的未知选项“-encryptstrings”【英文标题】:proguard.ParseException: Unknown option '-encryptstrings' in proguard.cfg 【发布时间】:2017-02-06 04:45:09 【问题描述】:

当我使用 progurad 选项运行 mvn install goal 时,出现以下错误。以前,我没有这个错误。我找不到导致以下错误的原因:

 proguard.ParseException: Unknown option '-encryptstrings' in line .. of file 'proguard.cfg'

我正在为我的项目使用 dexguard。这个错误是因为 maven 无法识别 dexguard 文件夹位置吗?

proguard.cfg 内容:

-dalvik  -- unknown option
-android -- unknown option
# Encrypt all strings  -- parse exception
-encryptstrings '???*'
以下工作没有问题:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic
-optimizationpasses 30
-allowaccessmodification
-dontpreverify
-dontoptimize
-ignorewarnings
-renamesourcefileattribute Maviance
-keepattributes SourceFile,LineNumberTable,*Annotation*
-keep,allowshrinking,allowobfuscation class android.support.**Compat*  *; 

【问题讨论】:

我也有同样的问题,不过我用的是dexguard,gradle好像改用proguard 【参考方案1】:

只有 DexGuard 支持选项 -encryptstrings '???*'。所以当你使用 ProGuard 构建你的应用程序时,你会收到这样的错误。

因此建议将 dexguard 相关配置分离到单独的配置文件dexguard-project.txt 中,仅在使用 DexGuard 时包含。

【讨论】:

谢谢。我已移至 dexguard-project.txt 文件。我如何让 maven 考虑这个文件?【参考方案2】:

我在使用 dexguard 时遇到了同样的错误。问题是我错过了这一行

            proguardFiles getDefaultDexGuardFile('dexguard-debug.pro')

所以 gradle 使用了 Proguard 而不是 Dexguard,后者显然没有 encryptstrings 功能。所以工作发布配置是这样的:

  release 
            debuggable true
            minifyEnabled true
            proguardFiles getDefaultDexGuardFile('dexguard-debug.pro')
            signingConfig signingConfigs.release
        

【讨论】:

以上是关于proguard.ParseException:proguard.cfg 中的未知选项“-encryptstrings”的主要内容,如果未能解决你的问题,请参考以下文章

使用 ProGuard 导出 Android 应用程序会出现 ParseException 错误

*p++,p++,*(p++)(*p)++(*p)[n],*p[n]的一些资料收集

Lua table直接索引VS缓存索引性能测试小示例

*p++(*p)++*++p++*p 的区别

++*p,(*p)++,*p++与*++p四者的区别

模运算