问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android混淆和加固的区别

发布网友 发布时间:2022-04-26 02:43

我来回答

1个回答

热心网友 时间:2022-06-20 04:48

  2.3SDK的两个新特点:

  1.刚安装上2.3时,查看sdk目录,发现在\tools下新增了一文件夹“proguard”,如下图,我就在想是不是Google终于官方对proguard考虑进去了。理论上,对java的混淆都是可以的,但关键在于如何编写proguard的混淆脚本。

  

  2.使用SDK2.3后,新建的工程下和之前相比,都会多了一个文件“proguard.cfg”。一打开,相当惊喜,这就是混淆所需的proguard脚本啊。

  如下图:

  

  其代码如下:

  view plaincopy to clipboardprint?

  -optimizationpasses 5

  -dontusemixedcaseclassnames

  -dontskipnonpubliclibraryclasses

  -dontpreverify

  -verbose

  -optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*

  -keep public class * extends android.app.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 com.android.vending.licensing.ILicensingService

  -keepclasseswithmembernames class * {

  native ;

  }

  -keepclasseswithmembernames class * {

  public (android.content.Context, android.util.AttributeSet);

  }

  -keepclasseswithmembernames class * {

  public (android.content.Context, android.util.AttributeSet, int);

  }

  -keepclassmembers enum * {

  public static **[] values();

  public static ** valueOf(java.lang.String);

  }

  -keep class * implements android.os.Parcelable {

  public static final android.os.Parcelable$Creator *;

  }

  -optimizationpasses 5

  -dontusemixedcaseclassnames

  -dontskipnonpubliclibraryclasses

  -dontpreverify

  -verbose

  -optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*

  -keep public class * extends android.app.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 com.android.vending.licensing.ILicensingService

  -keepclasseswithmembernames class * {

  native ;

  }

  -keepclasseswithmembernames class * {

  public (android.content.Context, android.util.AttributeSet);

  }

  -keepclasseswithmembernames class * {

  public (android.content.Context, android.util.AttributeSet, int);

  }

  -keepclassmembers enum * {

  public static **[] values();

  public static ** valueOf(java.lang.String);

  }

  -keep class * implements android.os.Parcelable {

  public static final android.os.Parcelable$Creator *;

  }

  从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件。

  并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考\examples中的例子及注释。)

  好了,进行得差不多了,下面就来看看如何真正的生成混淆APK吧。这儿又得提醒一下,SDK新的特性在文档里都是有的,所以文档很重要。

  查看SDK2.3的文档,在路径“/docs/guide/developing/tools/proguard.html”的“Enabling
ProGuard ”中是这样描述的:

  To enable ProGuard so that it runs as part of an Ant or Eclipse build, set
the proguard.config property in the /default.properties file. The path can be an
absolute path or a path relative to the project's root.

  好的,那就这样做吧。

  在工程的"default.properties"中添加这样一句话“proguard.config=proguard.cfg”,如下图:

  

  这样就已经设置好ADT的混淆操作了。接下来就是正常的打包和签名了。。

  下图是我混淆SDK Demo中自带的Notepad效果图:

  

  注意要点:

  1.混淆以后的包会比混淆前的包小一点,一定要注意这点.

  如果混淆不成功,请在第2步,将proguard.config=proguard.cfg修改为proguard.config=E:\Mobile_Develop\Google_Android\publicGoldenBeach_new\proguard.cfg这种类似的用绝对路径,请注意绝对路径中的文件夹名不能含有空格,如果有空格请替换为"_".

  2.android在用proguard混淆时,一般情况下使用系统自带的配置文件就可以保持大部分外部需要引用的类,比如Activity,view扩展等等,但是有些情况下一些引入的外部lib,如果被混淆也会出现各种各样的问题,如果不想混淆这些包,就要加上

  -keep class packagename.** {*;}

  这样就能完整保持原有class了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 android 加入library如何混淆 android studio的混淆文件是哪个 android-android怎么实现只混淆自己的代码,而不混淆第3方jar包 android 怎么实现只混淆自己的代码,而不混淆第3方 android 代码混淆 依赖工程需要加混淆吗 android源码被混淆了怎么还原 Android之如何混淆代码和相关配置 android 怎么实现只混淆自己的代码,而不混淆第3方jar包 android 混淆打包报错 android开发代码混淆都混淆哪些 android studio 多个模块相互依赖怎么混淆 戴东汉官帽的铜像是谁 红木家具茶台与餐桌的区别 cocos2dx android 代码混淆 谁能详细告知清代官员品级? android 阿里云短视频上传,混淆代码是什么? android studio 不同module资源重名引起引用混乱怎么解决? 中式家具可以一椅定乾坤吗? Android 开发怎样做代码加密或混淆 真的有人一对核桃玩十几年吗? 给你颗糖下一句怎么说 给你一颗糖后句是什么 给你一颗糖,真以为自己都很甜了男人对女人说这些意思说什么啊? 有一句话是这样的。具体意思,,我给你你一个糖,你会很开心什么的。当你看到我给别人两个时你就不开心了 “给你一巴掌再给你一颗糖”是什么意思? 我给你一颗糖,哪天我不给你糖的时候你就生气了...这个故事完整的是什么来的? 给你一颗糖 用日语怎么写? 女生说分了吧你太乖了我给你一颗糖我去照顾其他小朋友了你要乖哦什么意思啊? 在你心情不好的时候男生给你一颗糖说吃颗糖就好了说明什么? 女生给你一颗糖 求[我给你一颗糖 却给他两颗糖]的故事,好像是 我给你一颗糖,给他两颗,你却不知那还是他不要我才给 怎样将word题库转换成考试题?可以选择答案,就和驾照考试科目一一样的那种?有软件吗? 可以把电脑上word软件变为做题模式的软件 word试题怎么转成电子试卷题库,在线等 怎么将Word文档里面的题库编辑成软件的形式,求高手指点。。。 有没有那种把word文档的题库自动输出成机考的软件 oppoa5怎么把?魔秀桌面设置成系统默认。 oppoA5怎么把魔秀主题设置默认主题,设置里面也找不到 怎样才能将魔秀桌面设为默认桌面 买的OPPO A57,不知道怎么把魔秀主题设置成默认主题 请高手指点一下