安卓代码混淆

本文介绍了在没有知识产权保护的情况下,如何通过代码混淆来保护Android应用程序的源代码。文章详细解释了为何需要进行代码混淆,并提供了具体的操作步骤,同时针对常见的混淆错误给出了应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要进行代码混淆

说白了,在没有知识产权保护的天朝,我们所要做的就是尽量的不要泄露自己的一些“劳动成果”,当然专门拿来开源的除外。也就是说,代码混淆之后,即使android程序再怎么容易被反编译,但是反编译之后的代码大多是一些符号,也会尽量阻挡一些恶意的人

二、那该怎么做?

  • 项目结构应该是这样的注意,多了一个proguard.cfg
  • 在project.properties中加上这么一句
    proguard.config=proguard.cfg
  • 在Export的时候就会自动帮你进行混淆啦

三、你可能会遇到的一些问题

  • 混淆时报错
    Proguard returned with error code 1
    不要着急,其实我第一次做代码混淆的时候,也遇到这个错误,慢慢 看错误信息,会有解决办法的。这个只是一个error code,并没有具体的错误信息,而实际中的错误类型大致都有:1:找不到类、2:有多个映射、3:找不到方法等错误
但是解决思路是:1:混淆时过滤掉已混淆第三方库、本地方法、枚举、序列化的类、setter和getter、注解等(使用keep关键字);2:看看是不是API版本低了,比如你引入的某个第三方库是在API19下面编译的,并且用到了API19才有的特性,而你却在API17下面编译,自然会有API19的新特性(新方法)找不到,所以方法1都试了还没办法,那把API版本升到最高说不定就解决了哟!(不避讳的说,我这次就遇到了这个问题)

四、更多资料

proguard的相关语法

-libraryjars class_path #应用的依赖包(感觉没用,因为project中已经引入了啊,望指正)
-keep [,modifier,...] class_specification #不混淆某些类

-keepclassmembers [,modifier,...] class_specification #不混淆类的成员

-keepclasseswithmembers [,modifier,...] class_specification #不混淆类及其成员

-keepnames class_specification #不混淆类及其成员名

-keepclassmembernames class_specification #不混淆类的成员名

-keepclasseswithmembernames class_specification #不混淆类及其成员名

-dontwarn [class_filter] #不提示warnning,即忽略错误或者警告

更多Proguard语法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值