什么是代码混淆?andriod和android-studio工程如何启用代码混淆功能

什么是代码混淆?andriod和android-studio工程如何启用代码混淆功能,第1张

代码混淆有两种重要功能。其一,混淆代码。其二,优化代码。

进行代码混淆的程序被称为代码混淆器(混淆工具)。进行代码混淆的意义主要在于对代码进行一定程度的加密。

在android 2.3之后,sdk中就已经集成了混淆器proguard(目录在sdk\tools\proguard),所以我们可以很方便的直接在工程中开启代码混淆。

eclipse android工程开启混淆功能,我们需要手动在项目文件.properties(我的是project.properties文件)中添加下面的代码

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

某些方式创建的项目中可能已经有如上两行了,只是默认被注释掉了,只要把proguard.config这一行解注释就好了。这样代码混淆功能就开启了,在打签名包时,项目会自动进行代码混淆。

1 把项目的生成路径改成Release(通过项目的属性-生成来修改)

2 把整个Release文件夹拷到另外一个地方,然后用防止反编译软件来生成新的exe,再覆盖掉

3 在打包项目里面把覆盖完后的Release文件夹里面内容添加进来,生成快捷方式以及卸载在此不详细说明。

混淆后出错(为什么用proguard混淆后,友盟AndroidSDK的一些功能不可用?)

如果您的应用使用了混淆, 请添加

-keepclassmembers class * {

public <init>(org.json.JSONObject)

}

这是由于SDK中的部分代码使用反射来调用构造函数, 如果被混淆掉, 在运行时会提示"NoSuchMethod"错误。

另外,由于SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请在proguard配置文件中添加keep命令如:

-keep public class [您的应用包名].R$*{

public static final int *

}

把[您的应用包名] 替换成您自己的包名,如com.yourcompany.example。

如果您使用了双向反馈功能,还需要添加下面代码,以免我们自定义的UI被混淆:

-keep public class com.umeng.fb.ui.ThreadView {

}

如果使用的是自动更新2.7.0版本,则需要加上以下混淆代码:

-dontwarn okio.**

-dontwarn com.squareup.wire.**

-keep class okio.** {*}

-keep class com.squareup.wire.** {*}

如果仍存在问题,可以再做如下 *** 作:

# 添加第三方jar包

-libraryjars libs/umeng-sdk.jar

# 以下类过滤不混淆

-keep public class * extends com.umeng.**

# 以下包不进行过滤

-keep class com.umeng.** { *}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11197979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存