带混淆的Eclipse项目导入Android Studio时报错Error:(16, 0) User supplied default proguard base extension name is
来源:互联网 发布:淘宝曲度腰椎治疗仪 编辑:程序博客网 时间:2024/06/15 16:37
带混淆的Eclipse项目导入Android Studio时报错
Error:(16, 0) User supplied default proguard base extension name is unsupported. Valid values are: [proguard-android.txt, proguard-android-optimize.txt]
<a href="openFile:E:\zhangshuyang\GameDemos\hpnewsandroid\app\build.gradle">Open File</a>
原因是Eclipse和Android Studio的混淆文件名字不同,需要改一下
改后的
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-android-optimize.txt' }}
重新clean编译一下就好了。
另外,将混淆的方式说明贴出来一下,方便大家查看
一.eclipse和Android stuido代码混淆基本类似
android studio代码混淆
1.在build.grandle添加,其中规则写在proguard-rules.pro中,也可以自定义一个文件,将其代替,比如eclipse常用的 proguard-project.txt
不能混淆的代码
下面这样代码混淆的时候要注意保留。
Android系统组件,系统组件有固定的方法被系统调用。
被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View
Android Parcelable ,需要使用android 序列化的。
Java序列化方法,系统序列化需要固定的方法。
枚举 ,系统需要处理枚举的固定方法
本地方法,不能修改本地方法名
annotations 注释
数据库驱动
有些resource 文件
用到反射的地方
其他Anroid 官方建议 不混淆的,如
android.app.backup.BackupAgentHelper
android.preference.Preference
com.android.vending.licensing.ILicensingService
保留选项
-keep {Modifier} {class_specification} 保护指定的类文件和类的成员
-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好
-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。
-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)
-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)
-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)
-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件
压缩
-dontshrink 不压缩输入的类文件
-printusage {filename}
-whyareyoukeeping {class_specification}
优化
-dontoptimize 不优化输入的类文件
-assumenosideeffects {class_specification} 优化时假设指定的方法,没有任何副作用
-allowaccessmodification 优化时允许访问并修改有修饰符的类和类的成员如果Android studio工程中引用了第三方jar,代码混淆如何忽略第三方jar包
下面贴一下自己的混淆后的规则
-optimizationpasses 7 #指定代码的压缩级别 0 - 7 -dontusemixedcaseclassnames #是否使用大小写混合 -dontskipnonpubliclibraryclasses #如果应用程序引入的有jar包,并且想混淆jar包里面的class -dontpreverify #混淆时是否做预校验(可去掉加快混淆速度) -verbose #混淆时是否记录日志(混淆后生产映射文件 map 类名 -> 转化后类名的映射 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #淆采用的算法 -keep public class * extends android.app.Activity #所有activity的子类不要去混淆 -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep class com.google.api.client.googleapis.json.GoogleJsonError$ErrorInfo-keep class com.packagename.widget.**{*;}-keep public class * extends android.widget.BaseAdapter {*;} -keepclasseswithmembernames class * { native <methods>; #保持 native 的方法不去混淆 } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); #保持自定义控件类不被混淆,指定格式的构造方法不去混淆 } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); #保持指定规则的方法不被混淆(Android layout 布局文件中为控件配置的onClick方法不能混淆) } -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*(...); } -keepclassmembers enum * { #保持枚举 enum 不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { #保持 Parcelable 不被混淆(aidl文件不能去混淆) public static final android.os.Parcelable$Creator *; } -keepnames class * implements java.io.Serializable #需要序列化和反序列化的类不能被混淆(注:Java反射用到的类也不能被混淆) -keepclassmembers class * implements java.io.Serializable { #保护实现接口Serializable的类中,指定规则的类成员不被混淆 static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keepattributes Signature #过滤泛型(不写可能会出现类型转换错误,一般情况把这个加上就是了) -keepattributes *Annotation* #假如项目中有用到注解,应加入这行配置 -keep class **.R$* { *; } #保持R文件不被混淆,否则,你的反射是获取不到资源id的 ##-keepclassmembernames class com.hipad.news.bean.** { *; } #转换JSON的JavaBean,类成员名称保护,使其不被混淆 -keep public class com.hipad.news.bean.** {*; } -dontwarn com.hipad.news.bean.** ################################################################## # 下面都是项目中引入的第三方 jar 包。第三方 jar 包中的代码不是我们的目标和关心的对象,故而对此我们全部忽略不进行混淆。 ################################################################## -ignorewarnings-libraryjars libs/android-support-v4.jar-keep public class com.hipad.bean.** {*; }-dontwarn com.hipad.bean.**-dontwarn android.support.v4.** -keep class android.support.v4.** { *; } -keep interface android.support.v4.** { *; } -keep public class * extends android.support.v4.** -keep public class * extends android.app.Fragment -keep class com.google.gson.** { *; } -keep class de.tavendo.** { *; } -dontwarn de.tavendo.** -libraryjars libs/jsoup-1.7.2.jar-libraryjars libs/hpSSOAuths_V1.0_0117.jar-libraryjars libs/imageloader.jar-libraryjars libs/armeabi/libp2psclient.so-libraryjars libs/p2psvideo.jar-dontwarn p2psvideo.**-keep class b00li.** { *; } -dontwarn b00li.** -keep class p2psvideo.** { *; } -dontwarn p2psvideo.** -keep class p2pproxy.** { *; } -dontwarn p2pproxy.** -dontwarn com.google.gson.** -keep class sun.misc.Unsafe { *; } -keep class com.google.gson.** { *; } #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.examples.android.model.** { *; }-keep class com.bgb.scan.model.** {*;}-keepclassmembers class com.hipad.news.activity.DetailsActivity$JsInteration { public *; } -keepclassmembers class com.hipad.news.activity.DiscussActivity$JsInteration { public *; } -keepclassmembers class com.hipad.news.activity.video.CommentActivityList$JsInteration { public *; }-keepclassmembers class com.hipad.news.activity.TopicDetailActivity$JsInteration { public *; } -keepclassmembers class com.hipad.news.activity.video.VideoPalyActivity$JsInteration { public *; } -keepattributes *Annotation* -keepattributes *JavascriptInterface* -keep class android.webkit.JavascriptInterface {*;}
- 带混淆的Eclipse项目导入Android Studio时报错Error:(16, 0) User supplied default proguard base extension name is
- User supplied default proguard base extension name is unsupported
- Android中导入项目编译时报错:Java home supplied via 'org.gradle.java.home' is invalid. Invalid directory...
- Android studio 导入eclipse项目 运行时报错
- android 项目通过eclipse混淆代码 打包 + proguard的配置
- Android Studio 项目导入,构建时报错
- Android studio 混淆proguard
- Android Studio的Proguard(代码混淆)
- Android Studio 导入eclipse项目 运行时报 finished with non-zero exit value 42 的错误
- Eclipse无法导入项目(提示can not import* because the project name is in user)
- proguard混淆带第三方库android项目-java mail
- Android中导入他人项目时报错:Error:(1, 0) Minimum supported Gradle version is 3.3. Current version is 2.14.1...
- Android Studio:ProGuard 混淆配置
- 解决AS导入项目的时候出现错误:Error:Configuration with name 'default' not found.
- android的Proguard混淆
- Android Studio 导入eclipse带NDK的项目,使用Android.mk文件
- 为Eclipse ADT创建的android项目通过ant添加proguard混淆支持(转载)
- Eclipse配合ADT为Android项目添加Proguard混淆的简单新方法
- 【BZOJ 1566】: 【NOI2009】管道取珠 另类DP
- 天气预报
- RestApi总结-(一)认识
- 基于node.js用grunt搭建web前端开发环境
- C#网络编程之HTTP工具类
- 带混淆的Eclipse项目导入Android Studio时报错Error:(16, 0) User supplied default proguard base extension name is
- 防止训练深度网络中出现过拟合现象
- 欢迎使用CSDN-markdown编辑器
- 函数dup and dup2
- CodeForces
- 学习笔记之面向对象编程24(多线程机制3)
- Java门面模式(或外观模式)
- 在线工具网站合集(持续更新)
- python_lintcode_82落单的数_83落单的数 II_84落单的数 III