flutter上架马甲包过审:
所谓马甲包,就是完全复制主包功能或保留部分功能分身包,而各大应用商店都是不允许马甲包的存在的,所以就要通过技术手段,让马甲包与主包的外表和内在都变得不一样。简单得分为两个步骤:
1、改变马甲包的外表-换肤
其中包括包名,包名称,应用图标和应用主页面布局和整体风格等。
2、改变马甲包的内在-混淆
以下是我们公司Flutter项目马甲包上架的简要记录,共提交了vivo、oppo、华为、小米和腾讯应用宝的审核:
资料准备: 由于我们的马甲包是上传在同一个公司主体下,因此需要提前准备以下资料: 1. 软件著作权证书 2. 承诺函 3. 安全评估报告 4. 安全评估提交截图 5. 应用图标(Icon) 6. 五张应用截图 7. 上架内容(包括主副标题、一句话简介、应用描述等)
美肤更换
由于时间比较紧张,并且项目比较庞大,所以我们只是改变了主色系以及登录流程和首页一级tab页的UI布局。
混淆
flutter构建apk是默认混淆的!起初我们没有做任何处理就提审了,结果当然是审核不通过!
这简直就是一模一样啊!于是我们做了以下处理:
1、修改图片资源名
下面是一个Python脚本代码,用于修改图片资源名。只需在每个图片资源名的末尾添加相同的字符串即可。
请注意:我们假设所有的图片资源都存放在/assets/images目录下。请根据你们项目的实际情况调整脚本代码。
#项目目录projectAbsRootPath = sys.path[0]#图片所在的资源目录路径assetPath="/assets/images"#项目中dart代码所在目录libPath = projectAbsRootPath+ "/lib"assetAbPath = projectAbsRootPath+assetPathprint("projectRootPath:" + projectAbsRootPath + " assets:" +assetAbPath + " lib:" + libPath)print("----------开始查找图片--------------")#遍历目录,将图片存储到list中的方法def searchImage(filePath:String): list = [] isDir = os.path.isdir(filePath) if isDir: for f in os.listdir(filePath): if f.startswith("."): print(filePath+"/"+f) else: tList = searchImage(filePath+"/"+f) list.extend(tList) else: if imghdr.what(filePath) in {"png"}: list.append(filePath) return list#项目中使用的图片资源路径集合imageList = searchImage(assetAbPath)for name in imageList: print(name)for num in range(0,len(imageList)): # if(num<10): pList = imageList[num].split("/") imgName = pList[-1] txt = imageList[num].replace(imgName, '') nList = imgName.split(".") imgName = nList[0] os.rename(imageList[num],txt + '/' + imgName + '_project2.png')
然后通过android studio修改资源的引用路径就可以了,改完记得多测试!
2、原生层添加冗余代码
添加冗余代码,可以使用AndroidJunkCode库:
使用方法
在根目录的build.gradle中:
buildscript { repositories { mavenCentral() } }apply plugin: 'com.android.application' apply plugin: 'android-junk-code' androidJunkCode { variantConfig { release { // The variant name, if no productFlavors are set, it is the buildType name, // if productFlavors are set, it is flavor+buildType, for example (freeRelease, proRelease) packageBase = cn.hx.plugin.ui // The base package name for generating Java classes packageCount = 30 // The number of packages to generate activityCountPerPackage = 3 // The number of Activity classes to generate per package excludeActi最后
最终,我们只通过了vivo、oppo、小米和腾讯应用宝的审核。华为对于马甲包的人工审核非常严格,需要进行大规模修改才能通过,因此我们不得不放弃在华为应用商店上架。此外,在提交应用时还需要提供“全国互联网安全服务管理提交结果截图”,并且必须显示审核结果为成功才能上架。由于需要审核人员上门检查的程序比较繁琐,我们只需将主包截图进行一些简单的处理即可满足要求。
还木有评论哦,快来抢沙发吧~