源代码和Apk地址链接:https://pan.baidu.com/s/1royu3pvZ0Z_KAlfqtLBBGw 密码:yeph
专业版肯定比个人版功能强大并且要稳定。增加了很多功能的同时也测试封号的App,对于封号的App,给予剔除。虽然App数量减少了但是都是稳定的且收益比较高的。并且一天也就刷那么十几个而已。专业版比较个人版增加了按照时间刷刷刷。同时每个app的时间可以设置,时间到达后自动进入下一个App。时间是一天之内的时间,也就是说一天之内不超过100分钟,即使间断执行程序也会按照设定时间执行。最后执行的时间就是100分钟。
专业版增加清理缓存的功能。每次看视频结束后都会清理缓存。这样保证手机内容小的的福音。同时也是对老手机防卡的一个操作。
专业版增加自动评论功能,这个功能是最难的,操作很多且再输入的时候经常出现错误,一般使用的输入代码是setText和Input。另外有的APP没有评论功能。
专业版签到较之前个人版签到做了个大改版,每个App的签到都和App刷刷放到了一起。无论是签到、自动清理缓存、自动答复都使用了wateFor函数。(其实要慎用)
专业版增加最实用的功能就是自动提现。目前提现的金额是最低额度。(接受定制)
专业版修复了一些bug,同时也增加了一些功能。如:
专业版最大的改动其实是代码的优化。对代码做了整体规划也采用了中文名称。这样对对于阅读和修改都是非常便利的。看下截图:
薅羊毛专业版用到技术颇多。因为打包成Apk肯定有和用户交互的地方那也就意味着有UI界面。列举一下技术有需要技术的也可以查看本文档来复制代码。
先不吹牛技术了,咱们直接看薅羊毛个人版APP的截图。如下:
这个是写的JS脚本在AutoJs里面的效果。咱们看一看薅羊毛UI版的截图。
薅羊毛首页,Splash页面。可以做很多东西……
薅羊毛配置页面
前2项我就不多说了,友情提醒先开启无障碍在开启悬浮否则App会挂掉。
薅羊毛专业版系统页面:
接下来我把整个App比较难写的地方写贴出来给大家提个醒,可能你们认为不是问题。献丑了不要见笑。之后我会将所有代码求全部贴出。
部局的时候出现了点问题,一直找不到合理的部局且很难看(现在也不怎么好看)。后来在AutoJs中示例看到了复杂部局就学了一下,效果还可以吧。
代码如下:
数据绑定代码:
function initializeFirstFrame() {
for (let i = 0; i < videoArray.length; i++) {
let appName = videoArray[i];
let signMessage = "未签";
let signValue = getSignTime(appName);
let signColor = "#FF0000";
if (getDate() == signValue) {
signMessage = "已签";
signColor = "#228B22";
}
//今日薅羊毛时间 1440 1400 1605-20=1585-1440=145-60=85-20=65-60
let execTimesMessage = "";
let key = appName + storageSign + getDate();
let havedRunTimes = woolStorage.get("" + key + "");
if (havedRunTimes == null) {
execTimesMessage = ("已刷:0分");
} else {
if (parseInt(havedRunTimes) < 1000 * 60) {
execTimesMessage = ("已刷时间小于1分钟");
}
let havedMinute = (havedRunTimes / 1000) / 60;//读取到的时间是毫秒需要转换成秒,转换成秒后在转换成分钟
execTimesMessage = ("已刷:" + havedMinute.toFixed(2) + "分");
}
if (appName == "微视") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "65", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "抖音极速版") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "30", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "快手极速版") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "180", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "火山极速版") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "120", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "闪电盒子极速版") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "50", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "欢乐盒子") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "50", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "火火视频极速版") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "120", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "刷宝短视频") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "60", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "彩蛋视频") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "120", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "快音") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "120", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "中青看点") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "100", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "趣铃声") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "120", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "爱走路") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "120", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "闪鸭短视频") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "60", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else if (appName == "长豆短视频") {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "80", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
} else {
let row = { SignColor: signColor, AppName: videoArray[i], AppIndex: (i + 1), ExecTimes: "15", IsSign: signMessage, done: false, ExecTimesMessage: execTimesMessage };
videoItems.push(row);
}
}
ui.videoList.setDataSource(videoItems);
//小视频绑定check事件 火火视频极速版 长豆短视频
ui.videoList.on("item_bind", function (itemView, itemHolder) {
itemView.done.on("check", function (checked) {
let item = itemHolder.item;
item.done = checked;
let appName = item.AppName;
let appIndex = itemView.appIndex.getText();
item.AppIndex = appIndex;
item.ExecTimes = itemView.execTimes.getText();
let brushTimes = itemView.execTimes.getText();
if (checked) {
havedVideoChecked.put(appName, appIndex);
havedVideoTimes.put(appName, brushTimes);
} else {
havedVideoChecked.remove(appName);
havedVideoTimes.remove(appName);
}
});
});
ui.videoList.on("item_click", function (item, i, itemView, listView) {
itemView.done.checked = !itemView.done.checked;
});
}
保存配置采用的是storage,这个是不安全的只要知道名称就可以访问,敏感数据不建议使用它。保存配置代码:
ui.btnSaveWoolConfig.click(function () {
woolStorage.put("isShowConsole", "" + ui.switchIsShowConsole.isChecked() + "");
woolStorage.put("timesInterval", "" + ui.txtScreenSileTimesInterval.getText() + "");
woolStorage.put("IsAutoSign", "" + ui.switchIsAutoSign.isChecked() + "");
woolStorage.put("IsClearCache", "" + ui.switchIsClearCache.isChecked() + "");
woolStorage.put("IsCashOut", "" + ui.switchIsCashOut.isChecked() + "");
woolStorage.put("IsAutoComment", "" + ui.switchIsAutoComment.isChecked() + "");
woolStorage.put("IsShowToast", "" + ui.switchIsShowToast.isChecked() + "");
woolStorage.put("ForeachDays", "" + ui.txtForeachDays.getText() + "");
//txtForeachDays
toast("薅羊毛专业版配置保存成功!");
});
具体业务代码在我之前的文章里面已经写过了,我现在把完整代码贴一下,服务器信息是我的大家别乱搞就好了哈。
附赠Apk地址链接:https://pan.baidu.com/s/1royu3pvZ0Z_KAlfqtLBBGw 密码:yeph
最后再次强调:我提供的是源代码,Apk是附属产品。源码和Apk的用途本人概不负责。