AndroidStudio SDK开发和APP开发混淆经验整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 { *;}

猜你喜欢

转载自blog.csdn.net/qq_29461259/article/details/53886502