MacOS下利用Alfred Workflow批量签名Android APK

最近需要在mac os上搭建完整的生产环境,可是在安卓apk签名的问题上卡了半天。当然,Mac下的Eclipse也是自带签名工具的,但是它只能在工程export时起作用。由于笔者需要向第三方加密平台上传APK,再从这些平台下载加密完的各渠道APK们二次签名。一个高效、漂亮的批量签名工具就显得尤为必要了。

总有一些Terminal神教信徒坚称命令行才是唯一有效率的,视一切GUI为异宗。我虽觉自己尚不够格对此作个评判,但只知道涉及到文件管理时,命令行实在是力不从心。当你面对着十来个待签名的渠道包APK,即使不去在命令行里一行行的敲jarsigner,写个shell每次不厌其烦的输入各种冗长的路径也着实让人头疼。

这里需要介绍的方法是利用小黑帽Alfred 2的Workflow功能。关于Alfred,不了解的童鞋请自行Google,我在这里就不多费口舌了。如果你像我一样为Mac上Total Commander和Listary的缺失而懊恼,那么Alfred总算让我们有点安慰了。知乎传送门: 借助 Alfred 2 的 Workflows 功能可以做哪些好玩的事情?

打开Alfed输入框后,按”⌘ + ,” 进入Preference页面,点击工具栏中的Workflow Tab

AL1

点击Workflow Tab页左下角的”+”号,新建一个Blank Workflow. 不嫌麻烦的话,可以给它拖一个可爱的Logo。

AL2

接下来就是核心部分了。首先我们需要新建一个文件选择器。在新建出的Workflow中点击右上角的”+”, 弹出菜单中选择 Triggers -> File Action。注意勾选Accepts multiple files

AL3

有了文件选择器,接下来就要建立针对被选择文件的处理逻辑了。再次点击右上角的”+”,选择 Actions -> Run Script。

sc

在Script一栏中填入如下脚本

in="{query}"

blah='	' read -a array <<< "$in"

suc_count=0
fail_count=0

for i in "${array[@]}"
do

E=$(jarsigner -keystore /yourkeystorepath.keystore -storepass "keysotre passwrod"  -keypass "alias passwrod" $i aliasname)

if [ -z "$E" ]
	then
		suc_count=$(($suc_count+1))

	else
		fail_count==$(($fail_count+1))
fi

done

echo "Success: $suc_count"
echo "Fail: $fail_count"

这份脚本应该算比较简明了,我简要提两点。开头的两行是作输入解析的,Alfred在工作流中只以{query}作为每个工作单元的输入输出。当涉及多个输入时,query中一般以tab作多个文件名的分隔。suc_count和fail_count保存的是签名结果,用以向下一个工作单元输出。最后两行的echo,将直接输出到下一个工作单元的{query}中。

接下来我们设立一个通知逻辑,以Notification Center的形式用户签名结果。还是在老地方 “+” -> “Outputs” -> “Notification Center”。如下图所示设置

AL5

接下来我们用鼠标拖拽把三个工作单元顺次连结起来

AL6

到这里,此工作流就设立完毕了。现在我们可以去Finder里找几个待签名的APK测试下:

show case

选中待签名APK -> 按下 “⌥⌘ \” (反斜杠)唤起文件触发器,这时应该可以看到我们新建的2SignAPK静静的躺在最下面了。(可以通过输入首字母“2”快速选取到此项),轻敲回车,片刻之后签名完毕。此时应该就可以看到右上角弹出Notification Center的Post消息了。这下总算比冷冰冰的Terminal友好多了吧~

notification

Done >_<

38 Responses

  1. 您好,我是百度i wanna be the guy吧大吧主 蛋疼阿有木有。
    很喜欢你的游戏,非常想跟你认识一下
    我也很喜欢自己创作一些游戏,看了一些你的日志,感觉兴趣和你挺像的,希望我们今后可以合作。
    也许你会喜欢我的案子。。
    我的QQ117400023,希望能加一下,记得写一下备注。

  2. 点更多的 游戏进来的。居然 真的可以进来。。 哈哈 那些 只是画个黑白线条 颜色都没上的游戏居然出来骗钱。。 哈哈 作者是将你自己吗。。 (我在steam 买了。。 哈哈)

  3. 更多游戏过来的,没有人知道的大冒险真的好好啊啊啊,干了这杯鸡汤,然后,满怀梦想的打开课本了!!!!!!

  4. 最近正好有开发游戏的想法,无意之中看到了这一个,感触很大,觉得我就是那四个人啊,哈哈,真是没救了。不管怎么样,谢谢你

  5. 前三個大冒險是自己通關來的,《沒人知道的大冒險》是看別人玩的;覺得每一作都很用心,尤其第四作很多場景讓人淚奔。西西弗斯神話鏡頭反復出現,讓我在觀看每個人故事之餘,分出時間反觀自己。
    本來是想了解一下開發者的,結果搜出了blog,蠻意外。

发表评论

电子邮件地址不会被公开。 必填项已用*标注