diff --git a/thunder/src/main/AndroidManifest.xml b/thunder/src/main/AndroidManifest.xml
index ec994ad5f..658513ac3 100644
--- a/thunder/src/main/AndroidManifest.xml
+++ b/thunder/src/main/AndroidManifest.xml
@@ -1,6 +1 @@
-
-
-
-
-
-
+
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java b/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java
index 3fda0634a..990f05538 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java
@@ -1,7 +1,7 @@
package com.xunlei.downloadlib;
import android.content.Context;
-import android.text.TextUtils;
+import android.os.Build;
import com.github.catvod.Init;
import com.github.catvod.utils.Prefers;
@@ -10,6 +10,7 @@ import com.xunlei.downloadlib.parameter.BtIndexSet;
import com.xunlei.downloadlib.parameter.BtSubTaskDetail;
import com.xunlei.downloadlib.parameter.BtTaskParam;
import com.xunlei.downloadlib.parameter.EmuleTaskParam;
+import com.xunlei.downloadlib.parameter.GetDownloadLibVersion;
import com.xunlei.downloadlib.parameter.GetFileName;
import com.xunlei.downloadlib.parameter.GetTaskId;
import com.xunlei.downloadlib.parameter.InitParam;
@@ -24,7 +25,6 @@ public class XLDownloadManager {
private XLLoader loader;
private Context context;
- private static boolean mAllowExecution = true;
public XLDownloadManager() {
this.context = Init.context();
@@ -33,16 +33,13 @@ public class XLDownloadManager {
}
public void init() {
- InitParam initParam = new InitParam(context.getFilesDir().getPath());
- System.loadLibrary("xl_thunder_sdk");
- String peerid = getPeerId();
- String guid = getGuid();
- if (!TextUtils.isEmpty(initParam.mGuid)) {
- guid = initParam.mGuid;
- }
- loader.init(context, initParam.mAppVersion, "", peerid, guid, initParam.mStatSavePath, initParam.mStatCfgSavePath, initParam.mLogSavePath, mAllowExecution ? XLUtil.getNetworkTypeComplete(context) : 0, initParam.mPermissionLevel);
- loader.setUserId("Yt4vsji-qngamdRo");
- setSpeedLimit(-1L, -1L);
+ InitParam param = new InitParam(context.getFilesDir().getPath());
+ loader.init(param.getSoKey(), "com.android.providers.downloads", param.mAppVersion, "", getPeerId(), getGuid(), param.mStatSavePath, param.mStatCfgSavePath, 0, param.mPermissionLevel, param.mQueryConfOnInit);
+ getDownloadLibVersion(new GetDownloadLibVersion());
+ setOSVersion(Build.VERSION.INCREMENTAL + "_alpha");
+ setLocalProperty("PhoneModel", Build.MODEL);
+ setStatReportSwitch(false);
+ setSpeedLimit(-1, -1);
}
public void release() {
@@ -66,7 +63,7 @@ public class XLDownloadManager {
}
public void startTask(long taskId) {
- loader.startTask(taskId, false);
+ loader.startTask(taskId);
}
public void stopTask(long taskId) {
@@ -89,8 +86,24 @@ public class XLDownloadManager {
loader.setDownloadTaskOrigin(taskId, str);
}
- public void setTaskLxState(long j, int i, int i2) {
- loader.setTaskLxState(j, i, i2);
+ private void setLocalProperty(String key, String value) {
+ loader.setLocalProperty(key, value);
+ }
+
+ public void setOSVersion(String str) {
+ loader.setMiUiVersion(str);
+ }
+
+ public void getDownloadLibVersion(GetDownloadLibVersion version) {
+ loader.getDownloadLibVersion(version);
+ }
+
+ public void setTaskGsState(long j, int i, int i2) {
+ loader.setTaskGsState(j, i, i2);
+ }
+
+ public void setStatReportSwitch(boolean value) {
+ loader.setStatReportSwitch(value);
}
public int createP2spTask(P2spTaskParam param, GetTaskId taskId) {
@@ -136,9 +149,4 @@ public class XLDownloadManager {
public void setSpeedLimit(long min, long max) {
loader.setSpeedLimit(min, max);
}
-
- public void setAccelerateToken(long j, int i, long j2, int i2, String str) {
- loader.setAccelerateToken(j, i, j2, i2, str);
- }
-
}
\ No newline at end of file
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java b/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java
old mode 100755
new mode 100644
index 4a1af34a1..49183d2a9
--- a/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/XLLoader.java
@@ -1,7 +1,5 @@
package com.xunlei.downloadlib;
-import android.content.Context;
-
import com.xunlei.downloadlib.parameter.BtIndexSet;
import com.xunlei.downloadlib.parameter.BtSubTaskDetail;
import com.xunlei.downloadlib.parameter.GetDownloadLibVersion;
@@ -12,9 +10,10 @@ import com.xunlei.downloadlib.parameter.TorrentInfo;
import com.xunlei.downloadlib.parameter.XLTaskInfo;
import com.xunlei.downloadlib.parameter.XLTaskLocalUrl;
-public class XLLoader {
+class XLLoader {
public XLLoader() {
+ System.loadLibrary("xl_stat");
System.loadLibrary("xl_thunder_sdk");
}
@@ -40,14 +39,12 @@ public class XLLoader {
public native int getTorrentInfo(String str, TorrentInfo torrentInfo);
- public native int init(Context context, String str, String str2, String str3, String str4, String str5, String str6, String str7, int i, int i2);
+ public native int init(String str, String str2, String str3, String str4, String str5, String str6, String str7, String str8, int i, int i2, int i3);
public native int parserThunderUrl(String str, ThunderUrlInfo thunderUrlInfo);
public native int releaseTask(long j);
- public native int setAccelerateToken(long j, int i, long j2, int i2, String str);
-
public native int setDownloadTaskOrigin(long j, String str);
public native int setLocalProperty(String str, String str2);
@@ -62,11 +59,7 @@ public class XLLoader {
public native int setTaskGsState(long j, int i, int i2);
- public native int setTaskLxState(long j, int i, int i2);
-
- public native int setUserId(String str);
-
- public native int startTask(long j, boolean z);
+ public native int startTask(long j);
public native int stopTask(long j);
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java b/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java
index 2742e2d9c..5f38190eb 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/XLTaskHelper.java
@@ -41,8 +41,8 @@ public class XLTaskHelper {
}
private synchronized GetTaskId startTask(GetTaskId taskId, int index) {
- getManager().setTaskLxState(taskId.getTaskId(), index, 1);
getManager().startTask(taskId.getTaskId());
+ getManager().setTaskGsState(taskId.getTaskId(), index, 2);
return taskId;
}
@@ -64,7 +64,7 @@ public class XLTaskHelper {
public synchronized GetTaskId addThunderTask(String url, File savePath) {
String fileName = getManager().getFileNameFromUrl(url);
GetTaskId taskId = new GetTaskId(savePath, fileName, url);
- if (url.startsWith("ftp://") || url.startsWith("http://") || url.startsWith("https://")) {
+ if (url.startsWith("ftp://")) {
P2spTaskParam param = new P2spTaskParam();
param.setFilePath(savePath.getAbsolutePath());
param.setSeqId(getSeq().incrementAndGet());
@@ -77,6 +77,8 @@ public class XLTaskHelper {
param.setPass("");
int code = getManager().createP2spTask(param, taskId);
if (code != XLConstant.XLErrorCode.NO_ERROR) return taskId;
+ getManager().setDownloadTaskOrigin(taskId.getTaskId(), "out_app/out_app_paste");
+ getManager().setOriginUserAgent(taskId.getTaskId(), "AndroidDownloadManager/5.41.2.4980 (Linux; U; Android 4.4.4; Build/KTU84Q)");
} else if (url.startsWith("ed2k://")) {
EmuleTaskParam param = new EmuleTaskParam();
param.setFilePath(savePath.getAbsolutePath());
@@ -87,8 +89,6 @@ public class XLTaskHelper {
int code = getManager().createEmuleTask(param, taskId);
if (code != XLConstant.XLErrorCode.NO_ERROR) return taskId;
}
- getManager().setDownloadTaskOrigin(taskId.getTaskId(), "out_app/out_app_paste");
- getManager().setOriginUserAgent(taskId.getTaskId(), "AndroidDownloadManager/4.4.4 (Linux; U; Android 4.4.4; Build/KTU84Q)");
return startTask(taskId, 0);
}
@@ -115,8 +115,7 @@ public class XLTaskHelper {
for (int i = 0; i < list.size(); i++) btIndexSet.mIndexSet[i] = list.get(i);
getManager().deselectBtSubTask(taskId.getTaskId(), btIndexSet);
}
- startTask(taskId, index);
- return taskId;
+ return startTask(taskId, index);
}
public synchronized TorrentInfo getTorrentInfo(File file) {
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java b/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java
old mode 100755
new mode 100644
index b7ae796d7..848663c96
--- a/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/android/XLUtil.java
@@ -1,8 +1,5 @@
package com.xunlei.downloadlib.android;
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
import android.util.Base64;
import java.util.Random;
@@ -47,52 +44,4 @@ public class XLUtil {
bArr[length + 3] = b;
return new String(Base64.encode(bArr, 0)).trim();
}
-
- public static int getNetworkTypeComplete(Context context) {
- if (context == null) {
- return 0;
- }
- ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- int i = 0;
- if (connectivityManager != null) {
- NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
- i = 0;
- if (activeNetworkInfo != null) {
- int type = activeNetworkInfo.getType();
- if (type == 1) {
- i = 9;
- } else if (type == 0) {
- switch (activeNetworkInfo.getSubtype()) {
- case 1:
- case 2:
- case 4:
- case 7:
- case 11:
- i = 2;
- break;
- case 3:
- case 5:
- case 6:
- case 8:
- case 9:
- case 10:
- case 12:
- case 14:
- case 15:
- i = 3;
- break;
- case 13:
- i = 4;
- break;
- default:
- i = 0;
- break;
- }
- } else {
- i = 5;
- }
- }
- }
- return i;
- }
}
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java
index 49c21028b..4bfc9a57d 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/InitParam.java
@@ -1,21 +1,33 @@
package com.xunlei.downloadlib.parameter;
+import android.util.Base64;
+
+import com.xunlei.downloadlib.android.XLUtil;
+
+import java.nio.charset.StandardCharsets;
public class InitParam {
+
+ public String mAppKey;
public String mAppVersion;
- public String mGuid;
- public String mLogSavePath;
public int mPermissionLevel;
- public String mStatCfgSavePath;
+ public int mQueryConfOnInit;
public String mStatSavePath;
+ public String mStatCfgSavePath;
public InitParam(String path) {
- this.mAppVersion = "1.18.2";
- this.mPermissionLevel = 3;
+ this.mAppKey = "xzNjAwMQ^^yb==0^852^083dbcff^cee25055f125a2fde";
+ this.mAppVersion = "21.01.07.800002";
+ this.mPermissionLevel = 1;
+ this.mQueryConfOnInit = 0;
this.mStatSavePath = path;
this.mStatCfgSavePath = path;
- this.mLogSavePath = path;
- this.mGuid = "000000000000000000";
}
+ public String getSoKey() {
+ String[] split = mAppKey.split("==");
+ String replace = split[0].replace('^', '=');
+ String str = new String(Base64.decode(replace.substring(2, replace.length() - 2), 0), StandardCharsets.UTF_8);
+ return XLUtil.generateAppKey("com.android.providers.downloads", Short.parseShort(str.split(";")[0]), (byte) 1);
+ }
}
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java
index 41140b546..73dccb7c4 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.java
@@ -10,11 +10,13 @@ import java.util.Comparator;
import java.util.List;
public class TorrentFileInfo {
- public int mFileIndex;
+
+ public boolean isSelected;
public String mFileName;
+ public String mSubPath;
public long mFileSize;
+ public int mFileIndex;
public int mRealIndex;
- public String mSubPath;
public File mFile;
public String getFileName() {
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java
index a64845552..1aa3aa450 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentInfo.java
@@ -8,11 +8,11 @@ import java.util.List;
public class TorrentInfo {
- public int mFileCount;
- public String mInfoHash;
- public boolean mIsMultiFiles;
- public String mMultiFileBaseFolder;
public TorrentFileInfo[] mSubFileInfo;
+ public String mMultiFileBaseFolder;
+ public boolean mIsMultiFiles;
+ public String mInfoHash;
+ public int mFileCount;
public File mFile;
public TorrentInfo(File file) {
diff --git a/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java b/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java
index 13185050e..63e2a60da 100644
--- a/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java
+++ b/thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskInfo.java
@@ -1,33 +1,14 @@
package com.xunlei.downloadlib.parameter;
-import android.os.Parcel;
-import android.os.Parcelable;
+public class XLTaskInfo {
-public class XLTaskInfo implements Parcelable {
- public static final Creator CREATOR = new Creator() {
- @Override // android.os.Parcelable.Creator
- public final XLTaskInfo createFromParcel(Parcel parcel) {
- return new XLTaskInfo(parcel);
- }
-
- @Override // android.os.Parcelable.Creator
- public final XLTaskInfo[] newArray(int i) {
- return new XLTaskInfo[i];
- }
- };
- public int mAddedHighSourceState;
public int mAdditionalResCount;
- public long mAdditionalResDCDNBytes;
- public long mAdditionalResDCDNSpeed;
public long mAdditionalResPeerBytes;
public long mAdditionalResPeerSpeed;
public int mAdditionalResType;
public long mAdditionalResVipRecvBytes;
public long mAdditionalResVipSpeed;
- public long mCheckedSize;
public String mCid;
- public int mDcdnState;
- public long mDownloadFileCount;
public long mDownloadSize;
public long mDownloadSpeed;
public int mErrorCode;
@@ -35,8 +16,6 @@ public class XLTaskInfo implements Parcelable {
public long mFileSize;
public String mGcid;
public int mInfoLen;
- public int mLanPeerResState;
- public int mOriginErrcode;
public long mOriginRecvBytes;
public long mOriginSpeed;
public long mP2PRecvBytes;
@@ -44,82 +23,10 @@ public class XLTaskInfo implements Parcelable {
public long mP2SRecvBytes;
public long mP2SSpeed;
public int mQueryIndexStatus;
+ public long mScdnRecvBytes;
+ public long mScdnSpeed;
public long mTaskId;
public int mTaskStatus;
- public long mTotalFileCount;
-
- public XLTaskInfo() {
- }
-
- public XLTaskInfo(Parcel parcel) {
- this.mTaskId = parcel.readLong();
- this.mFileName = parcel.readString();
- this.mInfoLen = parcel.readInt();
- this.mTaskStatus = parcel.readInt();
- this.mErrorCode = parcel.readInt();
- this.mFileSize = parcel.readLong();
- this.mDownloadSize = parcel.readLong();
- this.mDownloadSpeed = parcel.readLong();
- this.mTotalFileCount = parcel.readLong();
- this.mDownloadFileCount = parcel.readLong();
- this.mQueryIndexStatus = parcel.readInt();
- this.mCid = parcel.readString();
- this.mGcid = parcel.readString();
- this.mOriginSpeed = parcel.readLong();
- this.mOriginRecvBytes = parcel.readLong();
- this.mP2SSpeed = parcel.readLong();
- this.mP2SRecvBytes = parcel.readLong();
- this.mP2PSpeed = parcel.readLong();
- this.mP2PRecvBytes = parcel.readLong();
- this.mAdditionalResCount = parcel.readInt();
- this.mAdditionalResType = parcel.readInt();
- this.mAdditionalResVipSpeed = parcel.readLong();
- this.mAdditionalResVipRecvBytes = parcel.readLong();
- this.mAdditionalResPeerSpeed = parcel.readLong();
- this.mAdditionalResPeerBytes = parcel.readLong();
- this.mDcdnState = parcel.readInt();
- this.mCheckedSize = parcel.readLong();
- this.mLanPeerResState = parcel.readInt();
- this.mOriginErrcode = parcel.readInt();
- }
-
- @Override // android.os.Parcelable
- public int describeContents() {
- return 0;
- }
-
- @Override // android.os.Parcelable
- public void writeToParcel(Parcel parcel, int i) {
- parcel.writeLong(this.mTaskId);
- parcel.writeString(this.mFileName);
- parcel.writeInt(this.mInfoLen);
- parcel.writeInt(this.mTaskStatus);
- parcel.writeInt(this.mErrorCode);
- parcel.writeLong(this.mFileSize);
- parcel.writeLong(this.mDownloadSize);
- parcel.writeLong(this.mDownloadSpeed);
- parcel.writeLong(this.mTotalFileCount);
- parcel.writeLong(this.mDownloadFileCount);
- parcel.writeInt(this.mQueryIndexStatus);
- parcel.writeString(this.mCid);
- parcel.writeString(this.mGcid);
- parcel.writeLong(this.mOriginSpeed);
- parcel.writeLong(this.mOriginRecvBytes);
- parcel.writeLong(this.mP2SSpeed);
- parcel.writeLong(this.mP2SRecvBytes);
- parcel.writeLong(this.mP2PSpeed);
- parcel.writeLong(this.mP2PRecvBytes);
- parcel.writeInt(this.mAdditionalResCount);
- parcel.writeInt(this.mAdditionalResType);
- parcel.writeLong(this.mAdditionalResVipSpeed);
- parcel.writeLong(this.mAdditionalResVipRecvBytes);
- parcel.writeLong(this.mAdditionalResPeerSpeed);
- parcel.writeLong(this.mAdditionalResPeerBytes);
- parcel.writeInt(this.mDcdnState);
- parcel.writeLong(this.mCheckedSize);
- parcel.writeInt(this.mLanPeerResState);
- parcel.writeInt(this.mOriginErrcode);
- }
public int getTaskStatus() {
return mTaskStatus;
diff --git a/thunder/src/main/jniLibs/arm64-v8a/libxl_stat.so b/thunder/src/main/jniLibs/arm64-v8a/libxl_stat.so
new file mode 100644
index 000000000..2d8e3d43b
Binary files /dev/null and b/thunder/src/main/jniLibs/arm64-v8a/libxl_stat.so differ
diff --git a/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so b/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so
old mode 100755
new mode 100644
index 92b14fa8f..14230530f
Binary files a/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so and b/thunder/src/main/jniLibs/arm64-v8a/libxl_thunder_sdk.so differ
diff --git a/thunder/src/main/jniLibs/armeabi-v7a/libxl_stat.so b/thunder/src/main/jniLibs/armeabi-v7a/libxl_stat.so
new file mode 100644
index 000000000..f3eaddf28
Binary files /dev/null and b/thunder/src/main/jniLibs/armeabi-v7a/libxl_stat.so differ
diff --git a/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so b/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so
old mode 100755
new mode 100644
index 9cb8235b5..25dac4387
Binary files a/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so and b/thunder/src/main/jniLibs/armeabi-v7a/libxl_thunder_sdk.so differ