文章目錄
1、簡介
定時 實現對螞蟻森林能量的自動拾取,以及幫指定好友澆水
2、開發環境搭建
語言: javaScript
開發工具:vcCode. auto.js
1)、手機安裝 auto.js
我們編寫的腳本就是在這個上面運行
auto.js 官網
可以下載源碼自己編譯 apk,
同時官網提供開發文檔,幫助編寫開發
或者 下載別人已經編譯好的 a’p’k
autojs 下載
安裝在手機上,並且設置無障礙服務
開啓音量上鍵關閉 運行程序
2)、電腦安裝vcCode
爲了編寫腳本方便 我們在使用 vccode 來編寫代碼
vccode 官網下載
3)、vcCode 安裝autojs插件
4)、連接電腦端的 vcCode 和手機端的 autojs
(1).開啓AutoJS插件
按 Ctrl+Shift+P
移動光標到命令Auto.js: Start Server,按回車鍵執行該命令。
此時VS Code會在右上角顯示"Auto.js server running",即開啓服務成功。
(2) 查看電腦ip
電腦 cmd 運行 ipconfig 命令,查找當前ip
(3) autojs 手機連接電腦
auto.js app 設置裏點擊連接電腦,輸入 電腦 ip
電腦顯示連接成功
3、編寫功能代碼
可以參考autojs 開發文檔 對 功能進行開發
autojs 官方文檔
1) 、使用 vcCode 進行代碼編寫
2) 使用 android sdk裏面的 uiautomatorviewer.bat 抓取app 控件信息
3) 、運行代碼
在電腦上按 F5 就能夠讓電腦上編寫的代碼直接在手機運行
4) 保存電腦上的代碼到手機
按 Ctrl+Shift+P
移動光標到命令Auto.js: Sava On Device,按回車鍵執行該命令。
就保存到了手機上的 autojs apk 裏面 ,以後可以直接在這裏面運行。
5)自動拾取螞蟻能量的參考代碼
auto();// 自動打開無障礙服務
// 以下數據需自己適配
var boundTopY = 560 ; //能量區域上 自己手機上的能量區域 需要更改本機適配
var boundBomY = 820; //能量區域下
var boundLeftX = 150; //能量區域左
var boundRightX = 900; //能量區域右
var enrgyBound = 80; //自己手機能量球大小 120 取 80 跨度
var energyPoint = [220,740,360,690,490,640,610,610,750,640,890,770] //自己手機 能量球位置 ,最多六個 需自己適配 x 座標 /Y 座標 依次排列
var waterPointX = 980; //好友 澆水按鈕x座標 需自己適配
var waterPointY = 1520;
//打開森林頁面
function openForestPage(){
launchApp("支付寶") //打開支付寶
text("首頁").waitFor()
sleep(500)
click("首頁") //點擊首頁
text("螞蟻森林").waitFor()
sleep(500)
click("螞蟻森林") //點擊首頁 //點擊螞蟻森林
}
//拾取自己能量
function collectOwnEnergy(){
text("公益林").waitFor()
sleep(1000)
if ( null != textContains("收集能量").findOne(3000)) {
var Energys = textContains("收集能量").find() //查找所有的可以蒐集的能量
for (var i = 0; i< Energys.length;i++) {
var energyBound = Energys[i].bounds()
click(energyBound.centerX(), energyBound.centerY());
}
}
}
//通過區域來點選能量球
function collectOtherEnergyFromBound(){
for (var x = boundLeftX ; x < boundRightX;x += enrgyBound ){
for (var y = boundTopY; y < boundBomY; y += enrgyBound ){
click(x,y)
}
}
}
//通過能量球的位置來點選
function collectOtherEnergyFromPoint(){
for (var i = 0; i<energyPoint.length;i += 2){
click(energyPoint[i],energyPoint[i+1])
}
}
//拾取他人或者自己能量
function collectOtherEnergy(){
//collectOtherEnergyFromBound()
collectOtherEnergyFromPoint()
}
//點擊查看更多好友
function swipToMoreFriends(){
while(!text("查看更多好友").exists()) {
swipe(device.width/2, device.height * (2/3), device.width/2, device.height/3, 1000);
}
text("查看更多好友").findOne().click()
sleep(2000)
while(!text("沒有更多了").exists()) {
swipe(device.width/2, device.height * (5/6), device.width/2, device.height/6, 1000);
}
}
//獲取好友的名字
function getFriendName(friend){
return friend.child(2).child(0).child(0).text()
}
//判斷點擊的是不是自己
function judgeIfSelf(friend){
var name = getFriendName(friend)
if (name == "靜水魚遊") {
return true
} else {
return false
}
}
//給好友澆水
function waterFriendEnergy(){
click(waterPointX,waterPointY)
sleep(2000)
if (text("澆水送祝福").exists()) {
click("澆水送祝福")
}
sleep(500)
}
//拾取好友能量
function selectFriendsEnergy(){
// toast(11111)
var friendsList = className("android.webkit.WebView").findOne().child(0).child(0).child(1) //獲取好友列表
for (var i = 0;i<friendsList.childCount() ;i++){
//toast(i)
if(!judgeIfSelf(friendsList.child(i))){
var waterFriend = judgeWaterDesignatedFriends(friendsList.child(i)) //不給好友澆水 註釋掉
friendsList.child(i).click()
sleep(2000)
collectOtherEnergy()
if (waterFriend) {waterFriendEnergy()} //不給好友澆水 註釋掉
back()
sleep(1000)
}
}
}
//給指定澆水的好友
function judgeWaterDesignatedFriends (friend){
var waterFriendList = ["小豬佩奇","喜羊羊"] //給澆水的好友 數組
for (var i= 0;i< waterFriendList.length;i++) {
if (waterFriendList[i] == getFriendName(friend)) {
return true
}
}
return false
}
//解鎖手機
function unlock(){
if(!device.isScreenOn()){
//點亮屏幕
device.wakeUp();
sleep(1000);
//滑動屏幕到輸入密碼界面
swipe(device.width/2, device.height/2, device.width/2, device.height/5, 1000);
sleep(1000);
id("com.android.systemui:id/key1").findOne(2000).click() //根據密碼佈局找到對應按鍵
sleep(500)
id("com.android.systemui:id/key2").findOne(2000).click()
sleep(500)
id("com.android.systemui:id/key3").findOne(2000).click()
sleep(500)
id("com.android.systemui:id/key4").findOne(2000).click()
sleep(500)
id("com.android.systemui:id/key5").findOne(2000).click()
sleep(500)
id("com.android.systemui:id/key6").findOne(2000).click()
}
}
//退出程序
function endCollectEnergy(){
back();sleep(1000);
back();sleep(1000);
back();sleep(1000);
home()
}
//unlock()
openForestPage()
collectOwnEnergy()
swipToMoreFriends()
selectFriendsEnergy()
endCollectEnergy()
因爲好友頁面螞蟻森林使用html 製作,不能用元素 獲取,所以不同機型需要根據自己機型設置。
具體位置 可以打開 自己開發者選項 裏面的 指針位置 進行定位
圖中方框 是自己機器設定的區域位置,和 能量球大小。
也可以自己定位 自己手機上 6 個能量球的位置,還有好友澆水位置這裏就不展示。
此代碼會遍歷所有好友,尚不支持取判定好友是否有能量可收
文件參考:
https://github.com/hyb1996/Auto.js