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