版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29461259/article/details/53886502
SDK层混淆
SDK开发者不能把你对开发者提供的接口进行混淆混淆
APP层混淆
程序中用到的所有第三方的库都不能混淆
数据库操作的对应类也不能混淆
出错记录
Error:Execution failed for task ':faceToFace:transformClassesAndResourcesWithProguardForDebug'.
> java.io.IOException: The same input jar [
C:\Users\pactera\Desktop\20160831\FaceToFace\faceToFace\libs\fastjson-1.2.6.jar] is specified twice.
在使用-libraryjars libs/...的时候 就会出现这样的错误,这是应为在android studio中,他已经默认将jar包不进行混淆了,如果你再加入的话就twice了
Error:Execution failed for task ':faceToFace:transformClassesAndResourcesWithProguardForDebug'.
> java.io.IOException: Please correct the above warnings first.
Warning:a.m: can't find referenced class java.nio.file.OpenOption
nio问题是okio混淆了
Warning:u.aly.bt: can't find referenced method 'int checkSelfPermission(java.lang.String)' in library class android.content.Context
代码中使用到了检查权限的方法
compileSdkVersion 23
编译环境改为23后
如果使用了httpClient的一些方法,就会出错
因为Android6.0中移除了httpClient请求网络库
需要在对应的build.gradle中的语句块内添加下面的语句
android {
.....
useLibrary 'org.apache.http.legacy'
}
dependencies {
.......
compile 'org.apache.httpcomponents:httpcore:4.4.2'
}
APP混淆后运行报错,提示dbutils.find(Contact.class) 里的Contact类的id字段找不到
我们的APP代码中如果有数据库操作
就不能混淆这个类
-keep class 包名.domain.Contact { *;}