您的位置:首页 > 移动开发 > Android开发

proguard-android.txt line 43:15 extraneous input '[]' expecting ')' 解决办法

2016-05-20 10:47 417 查看
问题出现时的环境:

        随着2016.5.19Google  I/O大会上展示了Android N 版本以及Android   Studio  2.2  preview版本,里面包含了很多的干货,我就迫不及待的更新Android  Studio 至 2.2      preview1 版本 。我就做了如下操作:
       1.下载Android  Studio 2.2 preview1
         此次的2.2预览版下载了以后不要覆盖 原有的版本,这两个版本可以共存。为了能够更好的切换项目使用的环境。
        2.安装Java8
        官方解释 :就算不用Java8的新特性(如 Lambda 表达式),Android  N   编译的时候必须指定 JDK  为Java8
         3.  更新Android  SDK  Tools  至最新版
          各种更新后就使用了 Android   Studio  2.2  preview 版本,最直观的改变就是写界面的平台,变成了类似ios界面布局平台。当我另外打开我先前的版本(2.1.1)的时候,  原先正常的项目部署不到手机上了,提示如下:

Error:Execution failed for task ':app:transformClassesWithNewClassShrinkerForMockDebug'.
> F:\sdk\tools\proguard\proguard-android.txt line 43:15 extraneous input '[]' expecting ')'


问题分析:

       问题提示很清楚,  出问题的那行 期望的是  “)”,但是接收的却是无关的 “[]”
        进入到proguard-android.txt   找到这行,如下:

-keepclassmembers public class * extends android.view.View {
void set*(%);
void set*(%, %);
void set*(%, %, %, %);
void set*(%[]);    //  就是这一行
void set*(**[]);
void set*(!**Listener);

% get*();
%[] get*();
**[] get*();
!**Listener get*();
}


  很明显,这段混淆代码被篡改了,和以前混淆的方式不一样了。

解决办法:

     恢复成原来的混淆样子即可;

-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: