簡介
可以每天定時收集能量,不用再起早貪黑的收能量偷能量了巩那。==> GitHub項目地址https://github.com/TonyJiangWJ/Ant-Forest
基于 Autojs 的螞蟻森林自動收能量腳本,采用 4.1.1 Alpha2 版本開發(fā)此蜈。解鎖模塊參考自:https://github.com/e1399579/autojs
腳本執(zhí)行依賴于:AutoJs 4.1.1 alpha2 or AutoJS Modify 若無法訪問請百度搜索一下
-
設(shè)備系統(tǒng)要求
- 具有 ROOT 權(quán)限的安卓 5.0 及以上版本
- 沒有 ROOT 權(quán)限的安卓 7.0 及以上版本
覺得本項目好用的話請給個star吧~
其他腳本
- 螞蟻莊園傳送門
- 聚合簽到-簽到薅羊毛
- 拆分出來了基礎(chǔ)項目即横,用于快速開發(fā)AutoJS腳本AutoScriptBase
使用
- 下載安裝 AutoJs 4.1.1 alpha2 or AutoJS Modify 之后把整個腳本項目放進 "/sdcard/腳本/" 文件夾下面。打開軟件后下拉刷新裆赵,然后運行項目或者 main 即可东囚。
- 給與軟件必要權(quán)限
后臺彈出界面
、顯示懸浮窗
战授、自啟動
页藻、電量無限制
,并將軟件保持后臺運行 - 定時啟動腳本植兰,點擊
main.js
的菜單份帐,選擇更多
定時任務(wù)
即可配置定時啟動 - 如果運行提示有任務(wù)正在隊列中,請運行配置
可視化配置.js
然后進到進階配置
中勾選單腳本運行
钉跷,該功能是用于多個腳本同時運行時的任務(wù)隊列 相當(dāng)于一個調(diào)度程序弥鹦,避免多個腳本搶占前臺導(dǎo)致出錯 - 默認配置下已開啟基于圖像識別的方式來執(zhí)行,當(dāng)前因為森林更新基于控件方式基本不再可用爷辙,后續(xù)會直接移除相關(guān)代碼彬坏。更多配置信息見配置小節(jié)
- 運行有問題請查看#常見問題小節(jié)
- 不同手機的解鎖方法不同可能不適配,需要自行編寫解鎖方法膝晾,具體見#添加解鎖設(shè)備小節(jié)
配置
運行 可視化配置.js 后可以看到如下配置:
常用配置都在基本配置中栓始,可以設(shè)置懸浮窗顏色 位置等
運行配置后右上角菜單可以重置所有配置信息為默認值
配置導(dǎo)出導(dǎo)入功能,點擊右上角菜單即可導(dǎo)出當(dāng)前配置到local_config.cfg中血当,默認已加密加密密碼為device.getAndriodId() 如果需要在免費版和付費版AutoJS之間同步 需要自行輸入密碼
運行時數(shù)據(jù)導(dǎo)出導(dǎo)入功能同上所述
重要 基于圖像分析模式必須按如下配置幻赚,否則腳本無法正常執(zhí)行
偶爾會出現(xiàn)好友首頁的能量球無法通過控件識別(大概率是以后的常態(tài)了)禀忆,請進行如下配置:
直接進入排行榜后運行新版本不再需要配置,如果自動識別失敗钻蔑,請手動開啟test/MockDetect.js
得到具體像素點個數(shù),分析倒計時和小手的個數(shù)差異落恼,設(shè)置為他們的一個區(qū)分點箩退,比如大多數(shù)倒計時像素點個數(shù)大于1900,而小手像素點個數(shù)小于1900佳谦,則設(shè)置小手像素點個數(shù)
為1900即可戴涝。基于像素點個數(shù)判斷小手
并配置像素點閾值在運行可視化配置.js之后進入
進階配置
直接點擊實時查看可視化配置信息
按鈕來刷新配置并顯示當(dāng)前的框選區(qū)域啥刻。也可以在配置完之后可以運行test/全局懸浮窗顯示-配置信息.js
查看配置生效狀況,可在resources
目錄下截圖保存region_check.jpg
咪笑,然后可以懸浮窗顯示半透明信息可帽,方便在運行可視化配置.js
時拖動進度條快速調(diào)整具體區(qū)域勾選
拖動輸入?yún)^(qū)域
可以顯示可拖動進度條請確保框選區(qū)域符合如下樣例
排行榜區(qū)域框選如下所示排行榜識別區(qū)域現(xiàn)在可以運行時自動設(shè)置窗怒,該配置為自定義優(yōu)化保留
[圖片上傳失敗...(image-b6ce75-1616084744663)]底部區(qū)域框選住當(dāng)前可以在運行時自動設(shè)置申窘,該配置為自定義優(yōu)化保留了
的上半部分映跟;或者選擇其他區(qū)域,并配置相應(yīng)的顏色值兜粘,比如邀請
按鈕
[圖片上傳失敗...(image-c80af4-1616084744663)]其他配置信息請運行
可視化配置.js
功能
自動匹配不同系統(tǒng)下自動化的方式,安卓 7 及以上可以通過無障礙服務(wù)模擬操作孔轴,7以下版本需要通過 root 權(quán)限模擬操作剃法;
自動識別屏幕鎖定方式并根據(jù)配置的密碼解鎖,支持圖形解鎖路鹰,PIN 解鎖贷洲,混合密碼解鎖;特殊設(shè)備需要自行擴展晋柱,具體見#添加解鎖設(shè)備小節(jié)
同時支持支付寶手勢解鎖
識別自己能量球的倒計時优构,和好友列表中的倒計時做對比,取最小值作為下次收取的等待時間雁竞;
識別好友能量罩钦椭,下一次收取時跳過開啟能量罩的好友;
默認使用倒計時收取碑诉,可通過配置打開循環(huán)收缺肭弧;
可選擇永不停止模式进栽,無倒計時或超過激活時間(激活時間可以設(shè)置為隨機范圍)則在激活時間之后繼續(xù)執(zhí)行德挣,否則按倒計時時間等待,實現(xiàn)全天不間斷收集快毛;
根據(jù)設(shè)置選擇是否幫助好友收取能量格嗅;
根據(jù)白名單實現(xiàn)不收取特定好友能量番挺;
可以設(shè)定收取達到一定閾值后自動澆水回饋 默認閾值當(dāng)日收集超過40克即澆水一次,同時可配置不澆水回饋的黑名單
澆水回饋數(shù)量可配置屯掖,可選:
10
18
33
66
腳本運行時可以顯示懸浮窗展示當(dāng)前狀態(tài)
開始收集的時候按
音量減
可以延遲五分鐘再執(zhí)行玄柏,適合需要使用手機的時候使用,按音量加
則關(guān)閉腳本終止執(zhí)行收取完畢后懸浮框顯示收取的能量數(shù)量
-
可以自動打開無障礙贴铜,需要配合adb賦權(quán)禁荸,不同的軟件請自行替換包名: Pro版為
org.autojs.autojspro
可以通過context.getPackageName()
獲取adb shell pm grant org.autojs.autojs android.permission.WRITE_SECURE_SETTINGS
提供了在線OCR識別服務(wù),用于識別倒計時數(shù)字阀湿,如果覺得準確率欠佳可以選擇申請百度OCR接口權(quán)限
ROOT設(shè)備可以實現(xiàn)自動鎖屏,非ROOT設(shè)備需要擴展鎖屏方法瑰妄,具體見#添加自定義鎖屏代碼陷嘴,默認實現(xiàn)的是下拉狀態(tài)欄中指定位置放了個鎖屏按鍵
腳本更新 可以執(zhí)行
update/檢測更新.js
相對完善的基于圖像分析的收取,倒計時無法直接獲取间坐,請申請百度識圖API或者通過永不停止模式來定時輪詢灾挨。另外注意永不停止模式不要全天運行,1-6點執(zhí)行無意義且可能封號竹宋。
加入開關(guān)劳澄,可以自動識別基于圖像分析還是控件分析,好友數(shù)較多的建議直接使用圖像分析
個人首頁蜈七、好友首頁等等都是基于控件信息識別的秒拔,如使用英文版的請運行配置,修改
控件文本配置
中的控件文本信息飒硅,中文版識別失敗的也需要自行配置可以將配置數(shù)據(jù)以及運行時數(shù)據(jù)進行導(dǎo)入和導(dǎo)出砂缩,內(nèi)容通過AES加密,默認密碼是
device.getAndroidId()
三娩,因此僅本機可用庵芭。如果需要跨設(shè)備或者免費版和Pro版之間備份,自行獲取device.getAndroidId()
然后根據(jù)提示輸入即可通話狀態(tài)監(jiān)聽雀监,當(dāng)通話中或者來電時自動延遲五分鐘執(zhí)行双吆,需要授予AutoJS軟件獲取通話狀態(tài)的權(quán)限[該功能暫不可靠,且Pro版無法使用]
可以配置在鎖屏狀態(tài)下判斷設(shè)備姿勢会前,防止在褲兜內(nèi)誤觸(基于重力加速度傳感器)
-
加入了基于百度文字識別的接口 來識別倒計時數(shù)據(jù)
- 通用文字識別
- 經(jīng)過測試通用文字識別沒法識別好乐,但是網(wǎng)絡(luò)圖片識別接口可用,但是可惜的是每天只有500次的免費調(diào)用機會
- 因此設(shè)置中加入了對倒計時綠色像素點的判斷回官,像素點越多則代表倒計時的數(shù)值越小曹宴,這個時候可以進一步通過百度的接口判斷實際的時間
- 具體運行可視化配置.js 勾選百度OCR識別然后填寫你申請的APIKey和SecretKey即可,上面的閾值隨你設(shè)置歉提,反正記住每天只有500次就對了
- 注意APIKey和SecretKey一定要自己進入AI平臺申請笛坦,不填寫是無效的
-
unit
下提供了多個自定義模式的切換腳本区转,執(zhí)行后會自動打斷當(dāng)前運行中的腳本然后按新的設(shè)置啟動。-
自定義1永不停止.js
25-35分鐘的隨機范圍輪詢一次版扩,有倒計時按倒計時時間執(zhí)行废离,適合9-23點〗嘎可以對它設(shè)置每天9點的定時任務(wù) -
自定義2計時停止.js
按倒計時時間執(zhí)行蜻韭,最長等待時間60分鐘,適合早上執(zhí)行和晚上23點執(zhí)行柿扣,避免0點后繼續(xù)無意義的永不停止肖方。可以對它設(shè)置7點未状、23點以及0點的定時任務(wù) -
自定義3循環(huán)千次只收自己.js
循環(huán)收集自己的俯画,適合自己能量快要生成的時候執(zhí)行,因為每天步行能量生成時間是固定的司草,因此在生成前一分鐘設(shè)置定時任務(wù)即可艰垂,然后再設(shè)置2分鐘后的定時任務(wù)自定義2計時停止.js
- 其他自定義方式請自行創(chuàng)建,內(nèi)容參考以上文件和config.js中的字段
-
循環(huán)/計時模式埋虹、永不停止模式等詳細說明
- 循環(huán)模式:腳本會根據(jù)設(shè)置的次數(shù)不間斷的循環(huán)執(zhí)行直到當(dāng)前執(zhí)行了指定次數(shù)之后便會停止猜憎。
- 計時模式:當(dāng)關(guān)閉循環(huán)模式,且不開啟永不停止模式時搔课,啟用計時模式胰柑。計時模式需要設(shè)置最大等待時間,默認為60分鐘辣辫,腳本執(zhí)行時會通過OCR識別排行榜中的倒計時時間旦事,如果得到的最小倒計時時間小于最大等待時間,那么腳本將會按識別到的最小倒計時計時啟動急灭,否則腳本將退出執(zhí)行姐浮。
- 永不停止模式:關(guān)閉循環(huán)模式并開啟永不停止,此時需要設(shè)置重新激活時間葬馋,當(dāng)識別到的倒計時時間小于這個重新激活時間時卖鲤,腳本會按實際倒計時計時啟動,當(dāng)識別到的倒計時時間大于重新激活時間時畴嘶,則按重新激活時間來計時啟動蛋逾。以此循環(huán)實現(xiàn)全天不間斷的執(zhí)行。這個重新激活時間可以設(shè)置為一個隨機范圍窗悯,每次判斷都會在指定范圍內(nèi)生成一個隨機的時間区匣。
- 以上計時模式和永不停止模式依賴于OCR的正常運行,如果設(shè)備分辨率為1080P的建議直接將自建OCR識別和百度OCR識別關(guān)閉蒋院,此時會啟用模擬的識別亏钩,準確率和速度都相較OCR來說更理想莲绰。其他分辨率設(shè)備則沒怎么測試過,自行斟酌姑丑。
常見問題
- 可視化配置.js 執(zhí)行異常蛤签,運行
unit/功能測試-重置默認配置.js
依舊有問題,嘗試重啟AutoJS栅哀,并檢查AutoJS的版本是否為4.1.1 Alpah2
或者較新版本的AutoJS Pro
- 如果報錯
Function importClass must be called with a class;...
直接強制關(guān)閉AutoJS軟件震肮,然后再打開即可。一般只在跨版本更新后才會出現(xiàn)這個問題留拾,最新版腳本已解決這個問題 - 另外如果不斷的運行異常戳晌,強制關(guān)閉AutoJS軟件后重新執(zhí)行腳本。同時建議定期強制關(guān)閉AutoJS軟件痴柔,避免內(nèi)存不斷增長導(dǎo)致卡頓
- 圖像分析模式 如果識別有遺漏躬厌,嘗試將
顏色相似度
調(diào)低 當(dāng)前默認值已改為20 - 軟件的定時任務(wù),點擊main.js的 三個點菜單->更多->定時任務(wù) 然后設(shè)置相應(yīng)的時間即可
- 排行榜卡住不動竞帽,修改模擬滑動參數(shù)
滑動速度
和模擬滑動距離底部的高度
,當(dāng)前支付寶去除了排行榜中的控件鸿捧,必須使用模擬滑動才能正常使用屹篓。滑動速度請不要過低匙奴,一般200以上即可堆巧,否則無法滑動 - 排行榜列表底部卡住,默認情況下會自動識別底部區(qū)域泼菌,但是需要一定時間來完成請不要手動關(guān)閉腳本谍肤,識別完成后如果需要修改請見 配置部分』┎或者關(guān)閉
基于圖像判斷列表底部
荒揣,修改排行榜下拉次數(shù)
次數(shù)為總好友數(shù)除以8左右,具體自行調(diào)試 - 排行榜識別區(qū)域會自動設(shè)置焊刹,如果異常請手動修改配置中的
校驗排行榜分析范圍
- 報錯
獲取截圖失敗多次
請修改獲取截圖等待時間
默認為500毫秒系任,自行調(diào)試選擇適合自己的,或者直接取消勾選是否異步等待截圖
- 其他問題可以提ISSUE虐块,但是請勾選保存日志到文件俩滥,并將日志文件大小調(diào)整為1024,打開開發(fā)模式并提供出錯位置的日志信息贺奠,日志文件保存在
logs/log-verboses.log
- 如果已經(jīng)按說明配置后開啟
是否直接基于圖像分析收取和幫助好友
運行不正常霜旧,請先取消勾選,然后勾選區(qū)域點擊來收取能量
, 同時自己擴展區(qū)域點擊的方法儡率,見下方的 #添加自定義區(qū)域點擊代碼
添加解鎖設(shè)備
- 具體開發(fā)需要獲取到鎖屏界面的控件信息挂据,可以運行
/unit/獲取鎖屏界面控件信息.js
根據(jù)提示進行操作以清,然后得到相應(yīng)的布局信息進行開發(fā),或者在執(zhí)行完之后發(fā)起ISSUE并提供logs/info.log
文件讓開發(fā)者幫忙棱貌。 - 腳本根目錄下新建extends文件夾玖媚,然后創(chuàng)建ExternalUnlockDevice.js文件,內(nèi)容格式如下自定義
- 更多擴展可以參考
extends/ExternalUnlockDevice-demo.js
module.exports = function (obj) {
this.__proto__ = obj
this.unlock = function(password) {
// 此處為自行編寫的解鎖代碼
// 在結(jié)尾返回此語句用于判斷是否解鎖成功
return this.check_unlock()
}
}
添加自定義鎖屏代碼
- 同解鎖設(shè)備婚脱,在extends文件夾下創(chuàng)建LockScreen.js今魔,內(nèi)容可以參考LockScreen-demo.js 實現(xiàn)自定義鎖屏
- 擴展代碼之后可以執(zhí)行
test/TestLockScreen.js
來調(diào)試是否生效
let { config: _config } = require('../config.js')(runtime, this)
module.exports = function () {
// MIUI 12 偏右上角下拉新控制中心
swipe(800, 10, 800, 1000, 500)
// 等待動畫執(zhí)行完畢
sleep(500)
// 點擊鎖屏按鈕
click(parseInt(_config.lock_x), parseInt(_config.lock_y))
}
分享你的配置
- 如果你想分享你的自定義擴展代碼,可以提交到 這個分支下障贸,比如解鎖代碼 可以命名為
ExternalUnlockDevice-手機型號.js
并提交到extends
目錄下错森,方便其他用戶下載使用 - 想獲取其他網(wǎng)友分享的代碼可以前往這個分支下載,或者等我集成發(fā)布
更新記錄
- 歷史版本更新記錄可前往RELEASES 頁面 和 RELEASES(舊倉庫) 查看
目前存在的問題
- 可能存在收集完一個好友后篮洁,因為沒有獲取到該好友剩余能量球的倒計時導(dǎo)致漏收
- 部分系統(tǒng)涩维,如我使用的MIUI12因為省電策略的問題(即便設(shè)置了白名單無限制自啟動),導(dǎo)致AutoJS軟件的定時任務(wù)無法準時運行袁波。非腳本自身問題
- 新發(fā)現(xiàn)問題請?zhí)峤籌SSUE瓦阐,我會盡快跟進解決