Flutter成功通过审核,马甲包已上架

访客 292 0

flutter上架马甲包过审:

所谓马甲包,就是完全复制主包功能或保留部分功能分身包,而各大应用商店都是不允许马甲包的存在的,所以就要通过技术手段,让马甲包与主包的外表和内在都变得不一样。简单得分为两个步骤:
1、改变马甲包的外表-换肤
其中包括包名,包名称,应用图标和应用主页面布局和整体风格等。
2、改变马甲包的内在-混淆

以下是我们公司Flutter项目马甲包上架的简要记录,共提交了vivo、oppo、华为、小米和腾讯应用宝的审核:

资料准备: 由于我们的马甲包是上传在同一个公司主体下,因此需要提前准备以下资料: 1. 软件著作权证书 2. 承诺函 3. 安全评估报告 4. 安全评估提交截图 5. 应用图标(Icon) 6. 五张应用截图 7. 上架内容(包括主副标题、一句话简介、应用描述等)

美肤更换

由于时间比较紧张,并且项目比较庞大,所以我们只是改变了主色系以及登录流程和首页一级tab页的UI布局。

混淆
flutter构建apk是默认混淆的!起初我们没有做任何处理就提审了,结果当然是审核不通过!
Flutter成功通过审核,马甲包已上架-第1张图片-谷歌商店上架
这简直就是一模一样啊!于是我们做了以下处理:

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修改资源的引用路径就可以了,改完记得多测试!
Flutter成功通过审核,马甲包已上架-第2张图片-谷歌商店上架

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、小米和腾讯应用宝的审核。华为对于马甲包的人工审核非常严格,需要进行大规模修改才能通过,因此我们不得不放弃在华为应用商店上架。此外,在提交应用时还需要提供“全国互联网安全服务管理提交结果截图”,并且必须显示审核结果为成功才能上架。由于需要审核人员上门检查的程序比较繁琐,我们只需将主包截图进行一些简单的处理即可满足要求。

标签: 马甲包的 马甲包 马甲包过审 资源

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~