最近公司需要进行马甲包的制作,一开始想拉分支来解决,发现这样的做法不是很好,如果是多个马甲包呢?需要拉N个分支,一旦源代码动了,马甲包代码也要跟着动,而且还会产生很多冲突,多个地方需要操作起来,费时费力?最后想了想,可以利用shell 脚本进行相关批量马甲包的制作!

方案:利用shell 脚本进行相关包名、文案、一些第三方的appid (例如 微信 )和资源替换。

流程:

1、先拉取git代码

2、写好shell 脚本的配置文件(比如:applicationid 、替换的资源包文件path、微信id等)

3、shell 脚本读取配置文件,进行资源、文案、包名的替换和修改

4、将修改后的工程代码导入到Androidstudio 中,看看相关文件是否被修改

5、运行修改后代码,看看是否能够正常build

6、测试修改后的马甲包

详细shell 代码见如下截图

代码拉取部分的shell 代码如下图

#!/bin/sh# 新建文件夹
newDir(){mkdir $FLODERcd $FLODERtouch README.md
}# 拉取代码 建立文件夹
pullGitCode(){read -p '请输入存放代码的文件夹名称:' -a FLODERwhile [ -z $FLODER ]doread -p '名称为空, 请重新输入:' -a FLODERdone# 文件夹已存在if [ -d $FLODER ]thenread -p "文件夹已存在, 是否删除文件夹并重建?(y/n)" -n 1echo ''if [[ $REPLY =~ ^[Yy]$ ]]thenrm -rf $FLODERelseexitfifinewDirurl=$gitUrlremoteName="origin"branchNmae="master"git initgit remote add $remoteName $urlgit checkout -b $branchNmaegit pull $remoteName $branchNmae
}

这一部分主要是文案替换(其他替换雷同)

#修改文案(将老文案改成新文案)
modifyAppName(){echo "我开始执行修改‘app名称’文案....请耐心等待"projectPath="$projectParentPath/xx-android"LC_CTYPE=C sed -i '' "s/$oldAppName/$newAppName/g" `grep $oldAppName -rl $projectPath`echo "我执行修改了‘app名称’文案结束"
}

最后是打包

打apk包
buildapk(){echo "开始执行打包..."path="$projectParentPath/xx-android"cd $pathif [ $offline == true ];then$path/gradlew clean $apkType --offline --info --stacktraceelse$path/gradlew clean $apkType  --info --stacktracefiecho "打包结束,欢迎下次使用"
}

配置文件就不放出来了,就是一些参数配置,供shell 脚本读取替换使用的

利用 shell 脚本进行android 马甲包制作相关推荐

  1. Android 马甲包制作流程

    一.马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android {signingConfigs {config ...

  2. android集成sdk 马甲包,Android 马甲包制作流程

    一.马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android { signingConfigs { confi ...

  3. 【iOS】iOS马甲包制作+OC、Swift垃圾代码生成脚本

    文章目录 一.马甲包介绍 1.什么是马甲包 2.为什么要制作马甲包 3.怎么制作马甲包 二.OC垃圾代码生成脚本 三.Swift垃圾代码生成脚本 一.马甲包介绍 1.什么是马甲包 马甲包是利用APP ...

  4. Android马甲包的那些事儿

    制作Android马甲包最简单的方式就是使用 productFlavors 机制. 本文就是在productFlavors机制的基础上制作的马甲包,每个马甲只需要 在build.gradle文件中配置 ...

  5. linux shell ddos木马,利用Shell 脚本解决DDOS攻击问题

    思路:主要利用 awk ,if结构,sort,uniq #!/bin/bash FilePath="access.log" awk '{print $1}' $FilePath | ...

  6. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  7. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...

    环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...

  8. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

  9. 解决Linux下无法利用shell脚本启动conda虚拟环境问题

    解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...

最新文章

  1. 熊出没之伐木机器人_熊出没第一首富之争:李老板真的是第一吗?难道不是他第一?...
  2. Java 求1000以内的同构数_求1-10000之间的同构数
  3. path manipulation怎么解决_PyCharm报错与解决方法一览
  4. ansible roles和django项目的整合
  5. 类数组arguments
  6. Linux中nginx的常见指令
  7. ZDB5202烧成控制器方法
  8. 使用emacs去除源代码中多余的空格
  9. 编写linux脚本操作 java 服务
  10. 【MyBatis笔记】01-MyBatis入门程序
  11. 读《卓有成效的管理者》笔记(二)
  12. [原创]手动配置Ubuntu Linux系列3-缺省网关和主机名
  13. 常规的Git管理流程
  14. 毕业3年,从滴滴实习到阿里P7,我整理的超全学习指南
  15. tar.gz 与 tar.xz
  16. SECS-GEM通信标准的特点
  17. 全站仪与计算机之间的数据传输,【科普】全站仪数据传输的三种方式
  18. mysql医学数据库_医学离线数据库 1.0
  19. ‘unsaf-eval‘ is not an allowed source of script
  20. 小米路由器dhcp服务没有响应

热门文章

  1. Android面试宝典(一位优秀应届生面试经验,很多Android高阶问题)
  2. Flask博客开发实战-用户中心实现修改个人信息功能
  3. EOS Platform 7.2 卸载
  4. Ajax跨域请求如何实现
  5. 华为交换机配置远程命令
  6. 国产编程语言「木兰」实为 Python 套壳,官方已致歉!
  7. 计算机系统备份和还原的目的,软网推荐:轻松一键系统备份与还原
  8. python:读取文件内容解码 编码错误 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xab in position 2: illegal
  9. 《Rhino3D 4.0产品造型设计学习手册》——1.5节多样化的插件支持
  10. 02-selenium的进一步学习(控制浏览器窗口+)