一种减少Android项目代码重复度的方法技术

技术编号:25755689 阅读:10 留言:0更新日期:2020-09-25 21:05
本发明专利技术提供了一种减少Android项目代码重复度的方法,属于减少项目代码重复度技术领域。本发明专利技术涉及的Android项目代码采用面向切面的编程方法,向编译后的代码中插入非功能性代码;开启混淆并配置混淆字典;使用Java脚本批量修改未经过混淆的代码文件的路径,使用Java脚本批量修改实体类和Android四大组件文件夹的命名格式;编写Java脚本程序在项目中所有文件末尾追加字符,对不同文件格式的项目文件追加不同的字符;修改项目包所在的路径;在定位到项目的任意目录,在所述任意目录下,新建一个新的签名文件,当App打包时,使用此签名文件进行签名。本发明专利技术设计的减少Android项目代码重复度的方法,相比于直接修改代码的方法,具有工作量小和预防新的bug产生等优点。

【技术实现步骤摘要】
一种减少Android项目代码重复度的方法
本专利技术属于减少项目代码重复度
,尤其涉及一种减少Android项目代码重复度的方法。
技术介绍
随着互联网技术的飞速发展,目前有大量优秀的程序员进行各种软件的开发和应用工作,程序员在开发项目时,尤其是非常大的项目,会面临着项目初期编写的实现特定功能的代码块和其他功能的代码块封装在一起,随着封装的次数增多,所述特定功能的代码和各种代码块的数据交换日益密切,但是,这种应用场景会导致在软件上架时,因为软件的重复度超过一定的限度而导致审查不合格,但是如果修改重复代码,则会可能导致整个软件功能的不稳定,导致bug增多,甚至整个软件出现奔溃的局面。目前程序员减少代码重复度一般采用一个人写相关功能的代码,尽量减少一个独立的功能模块分给多人写,此外,封装的时候采用最小模块法,用最小的模块再封装更加复杂的功能模块。该方法的缺点是项目代码非常庞大的时候,不可能一个人单独完成某个功能代码的编写,用最小的模块封装,也会造成更多的代码重复,更加造成在重复度检测的时候,造成代码重复度高而导致上市失败的情况发生,此外,如果直接修改项目代码,可能会产生新的bug而导致程序不稳定,甚至导致项目失败。本方案提出一种解决软件上架审查过程中,由于封装次数过多而导致的软件代码重复度高而导致的审核不通过的问题,具有方法简单,不会引入bug的优点。
技术实现思路
本专利技术的目的是针对上述问题,提供一种减少Android项目代码重复度的方法。为了达到上述目的,本专利技术采用了以下技术方案:一种减少Android项目代码重复度的方法,包括以下步骤:S1:项目代码采用面向切面编程方法,向编译后的代码中插入非功能性代码;S2:开启混淆,配置混淆字典:开启混淆后,Android项目经过Java编译器编译后,将编译后的项目代码的文件夹名、类名、方法名、参数名和变量名替换为若干无特定意义字符;S3:使用Java脚本批量修改未经过混淆的代码文件的路径,使用Java脚本批量修改实体类和Android四大组件文件夹的命名格式;S4:编写Java脚本程序在项目中所有文件末尾追加字符,对不同文件格式的项目文件追加不同的字符;S5:修改项目包所在的路径;S6:在定位到项目的任意目录,在所述任意目录下,新建一个新的签名文件,当App打包时,使用此签名文件进行签名。在上述的减少Android项目代码重复度的方法中,步骤S1所述的切面编程方法采用AspectJ框架,新建插入不同代码类,在所述的插入不同代码类中编写一个向项目文件中插入不同代码的程序段。在上述的减少Android项目代码重复度的方法中,所述不同代码的程序段包含实现不打印的log日志、无内容的布尔判断、无意义的变量赋予的非功能代码。在上述的减少Android项目代码重复度的方法中,所述插入不同代码类用AspectJ的Around关键字修饰,且指定处理目标为主工程所有功能代码。在上述的减少Android项目代码重复度的方法中,步骤S2所述的混淆字典将项目代码中的字符更改为指定的字符。在上述的减少Android项目代码重复度的方法中,步骤S3所述的文件夹命名格式修改为统一的前缀。具体实施方式一种减少Android项目代码重复度的方法,使得所有编译后的所有class文件md5与代码内容变化;编译后的class文件名称、内部方法名变量名均会修改为难以识别的命名;所有未混淆的代码文件名称统一被修改,且在被引用地方的命名也会同步修改;修改项目中所有文件的内容和项目路径,再创建一个新的唯一签名文件,并用此文件进行打包,具体包括以下步骤:1:项目代码采用面向切面编程方法,向编译后的代码中插入非功能性代码;2:开启混淆,配置混淆字典:开启混淆后,Android项目经过Java编译器编译后,将编译后的项目代码的文件夹名、类名、方法名、参数名和变量名替换为若干无特定意义字符;3:使用Java脚本批量修改未经过混淆的代码文件的路径,使用Java脚本批量修改实体类和Android四大组件文件夹的命名格式;4:编写Java脚本程序在项目中所有文件末尾追加字符,对不同文件格式的项目文件追加不同的字符;5:修改项目包所在的路径;6:在定位到项目的任意目录,在所述任意目录下,新建一个新的签名文件,当App打包时,使用此签名文件进行签名。本专利技术方案独创性地采用向编译后的代码中加入非功能性代码以及使用混淆和混淆字典,加入非功能性代码使所有编译后的所有class文件md5与代码内容变化,使每个文件与方法具有唯一性;使用混淆和混淆字典,编译后的class文件名称、内部方法名变量名均会修改为难以识别的命名,每个文件与方法具有唯一性。Aop即为切面编程,是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。本方案选用AspectJ框架,新建一个MarketAop类,在其中编写一个插入不同代码的方法,不同代码包含不打印的log日志、无内容的布尔判断、无意义的变量赋予等非功能代码;再使用AspectJ的Around关键字修饰此方法且指定处理目标为主工程所有功能代码,此时完成了代码的配置;下次编译项目时会生效,编译时使目标方法前后均插入一定量指定的无意义代码,使所有编译后的class文件md5与代码内容发生变化,每个文件与方法均具有唯一性。混淆为Android项目中的一种配置,是将计算机程序的代码,转换成一种功能上的等价,但是难于阅读和理解的形式的行为。在安卓开发中,开发工具(AndroidStudio)默认提供一套简便的混淆工具,通过在项目中build.gradle文件下启用minifyEnabledtrue来开启。开启后,项目在打包为安装包的过程中,会自动遍历项目中所有文件,将所有文件夹名、类名、方法名、变量名修改为无实际意义的文字,例如将“StudentInfo”替换为“abc”。配置混淆字典,是代码混淆的一种进阶使用。开启方法为在混淆配置文件proguard-rules.pro中增加obfuscationdictionary、classobfuscationdictionary、packageobfuscationdictionary三个自定义的混淆配置,三个配置分别对应方法变量名混淆字典、类名混淆字典和文件夹名混淆字典,每个配置指向一个项目中的txt文件。默认代码混淆会将代码中命名转换为英文小写字母的形式,如“abc”,在配置了混淆字典后,可以将命名转换为对应txt中的一个随机单词。例如在配置了类名字典classobfuscationdictionary,且引用一个包含多个乱码单词的txt文件,则原类名为“StudentInfo”的类在打包时会更改名字为txt文件中的一个随机单词“籲蠶鱅矡”。开启混淆:在项目主module的build.gradle中将minifyEnabled设为true,在proguard-rul本文档来自技高网...

【技术保护点】
1.一种减少Android项目代码重复度的方法,其特征在于,包括以下步骤:/nS1:项目代码采用面向切面编程方法,向编译后的代码中插入非功能性代码;/nS2:开启混淆,配置混淆字典:开启混淆后,Android项目经过Java编译器编译后,将编译后的项目代码的文件夹名、类名、方法名、参数名和变量名替换为若干无特定意义字符;/nS3:使用Java脚本批量修改未经过混淆的代码文件的路径,使用Java脚本批量修改实体类和Android四大组件文件夹的命名格式;/nS4:编写Java脚本程序在项目中所有文件末尾追加字符,对不同文件格式的项目文件追加不同的字符;/nS5:修改项目包所在的路径;/nS6:在定位到项目的任意目录,在所述任意目录下,新建一个新的签名文件,当App打包时,使用此签名文件进行签名。/n

【技术特征摘要】
1.一种减少Android项目代码重复度的方法,其特征在于,包括以下步骤:
S1:项目代码采用面向切面编程方法,向编译后的代码中插入非功能性代码;
S2:开启混淆,配置混淆字典:开启混淆后,Android项目经过Java编译器编译后,将编译后的项目代码的文件夹名、类名、方法名、参数名和变量名替换为若干无特定意义字符;
S3:使用Java脚本批量修改未经过混淆的代码文件的路径,使用Java脚本批量修改实体类和Android四大组件文件夹的命名格式;
S4:编写Java脚本程序在项目中所有文件末尾追加字符,对不同文件格式的项目文件追加不同的字符;
S5:修改项目包所在的路径;
S6:在定位到项目的任意目录,在所述任意目录下,新建一个新的签名文件,当App打包时,使用此签名文件进行签名。


2.根据权利要求1所述的减少Android项目代码重复度的方法,其特征在于,步...

【专利技术属性】
技术研发人员:魏鹏
申请(专利权)人:杭州冒险元素网络技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1