3.3.6
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
package com.arialyy.aria.core.command.normal;
|
package com.arialyy.aria.core.command.normal;
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.download.DownloadGroupTaskEntity;
|
import com.arialyy.aria.core.download.DownloadGroupTaskEntity;
|
||||||
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
@@ -124,7 +123,7 @@ final class ResumeAllCmd<T extends AbsTaskEntity> extends AbsNormalCmd<T> {
|
|||||||
*/
|
*/
|
||||||
private void resumeEntity(AbsTaskEntity te) {
|
private void resumeEntity(AbsTaskEntity te) {
|
||||||
if (te instanceof DownloadTaskEntity) {
|
if (te instanceof DownloadTaskEntity) {
|
||||||
if (te.requestType == AbsTaskEntity.FTP) {
|
if (te.requestType == AbsTaskEntity.D_FTP || te.requestType == AbsTaskEntity.U_FTP) {
|
||||||
te.urlEntity = CommonUtil.getFtpUrlInfo(te.getEntity().getKey());
|
te.urlEntity = CommonUtil.getFtpUrlInfo(te.getEntity().getKey());
|
||||||
}
|
}
|
||||||
mQueue = DownloadTaskQueue.getInstance();
|
mQueue = DownloadTaskQueue.getInstance();
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
package com.arialyy.aria.core.command.normal;
|
package com.arialyy.aria.core.command.normal;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.common.QueueMod;
|
import com.arialyy.aria.core.common.QueueMod;
|
||||||
import com.arialyy.aria.core.download.DownloadGroupTaskEntity;
|
import com.arialyy.aria.core.download.DownloadGroupTaskEntity;
|
||||||
@@ -130,7 +129,7 @@ class StartCmd<T extends AbsTaskEntity> extends AbsNormalCmd<T> {
|
|||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
List<UploadTaskEntity> uEntity =
|
List<UploadTaskEntity> uEntity =
|
||||||
DbEntity.findDatas(UploadTaskEntity.class, "groupName=? and state=?", "", "3");
|
DbEntity.findDatas(UploadTaskEntity.class, "state=?", "3");
|
||||||
if (uEntity != null && !uEntity.isEmpty()) {
|
if (uEntity != null && !uEntity.isEmpty()) {
|
||||||
waitList.addAll(uEntity);
|
waitList.addAll(uEntity);
|
||||||
}
|
}
|
||||||
@@ -143,7 +142,7 @@ class StartCmd<T extends AbsTaskEntity> extends AbsNormalCmd<T> {
|
|||||||
for (AbsTaskEntity te : waitList) {
|
for (AbsTaskEntity te : waitList) {
|
||||||
if (te.getEntity() == null) continue;
|
if (te.getEntity() == null) continue;
|
||||||
if (te instanceof DownloadTaskEntity) {
|
if (te instanceof DownloadTaskEntity) {
|
||||||
if (te.requestType == AbsTaskEntity.FTP) {
|
if (te.requestType == AbsTaskEntity.D_FTP || te.requestType == AbsTaskEntity.U_FTP) {
|
||||||
te.urlEntity = CommonUtil.getFtpUrlInfo(te.getEntity().getKey());
|
te.urlEntity = CommonUtil.getFtpUrlInfo(te.getEntity().getKey());
|
||||||
}
|
}
|
||||||
mQueue = DownloadTaskQueue.getInstance();
|
mQueue = DownloadTaskQueue.getInstance();
|
||||||
|
@@ -116,7 +116,7 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
* 设置新任务的最大线程数
|
* 设置新任务的最大线程数
|
||||||
*/
|
*/
|
||||||
protected int getNewTaskThreadNum() {
|
protected int getNewTaskThreadNum() {
|
||||||
return mEntity.getFileSize() <= SUB_LEN || mTaskEntity.requestType == AbsTaskEntity.FTP_DIR ? 1
|
return mEntity.getFileSize() <= SUB_LEN || mTaskEntity.requestType == AbsTaskEntity.D_FTP_DIR ? 1
|
||||||
: AriaManager.getInstance(mContext).getDownloadConfig().getThreadNum();
|
: AriaManager.getInstance(mContext).getDownloadConfig().getThreadNum();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -37,7 +37,7 @@ public abstract class AbsFtpThreadTask<ENTITY extends AbsNormalEntity, TASK_ENTI
|
|||||||
private final String TAG = "AbsFtpThreadTask";
|
private final String TAG = "AbsFtpThreadTask";
|
||||||
protected String charSet, port;
|
protected String charSet, port;
|
||||||
/**
|
/**
|
||||||
* FTP 服务器编码
|
* D_FTP 服务器编码
|
||||||
*/
|
*/
|
||||||
public static String SERVER_CHARSET = "ISO-8859-1";
|
public static String SERVER_CHARSET = "ISO-8859-1";
|
||||||
|
|
||||||
|
@@ -62,6 +62,10 @@ public class DownloadEntity extends AbsNormalEntity implements Parcelable {
|
|||||||
return getUrl();
|
return getUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public int getTaskType() {
|
||||||
|
return getUrl().startsWith("ftp") ? AbsTaskEntity.D_FTP : AbsTaskEntity.D_HTTP;
|
||||||
|
}
|
||||||
|
|
||||||
public DownloadEntity() {
|
public DownloadEntity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,7 +17,7 @@ package com.arialyy.aria.core.download;
|
|||||||
|
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import com.arialyy.aria.core.inf.AbsGroupEntity;
|
import com.arialyy.aria.core.inf.AbsGroupEntity;
|
||||||
import com.arialyy.aria.orm.NormalList;
|
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
||||||
import com.arialyy.aria.orm.OneToMany;
|
import com.arialyy.aria.orm.OneToMany;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -58,6 +58,10 @@ public class DownloadGroupEntity extends AbsGroupEntity {
|
|||||||
this.groupName = key;
|
this.groupName = key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public int getTaskType() {
|
||||||
|
return getKey().startsWith("ftp") ? AbsTaskEntity.D_FTP_DIR : AbsTaskEntity.DG_HTTP;
|
||||||
|
}
|
||||||
|
|
||||||
public DownloadGroupEntity() {
|
public DownloadGroupEntity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -41,10 +41,10 @@ public class DownloadGroupTask extends AbsGroupTask<DownloadGroupTaskEntity> {
|
|||||||
mContext = AriaManager.APP;
|
mContext = AriaManager.APP;
|
||||||
mListener = new DownloadGroupListener(this, mOutHandler);
|
mListener = new DownloadGroupListener(this, mOutHandler);
|
||||||
switch (taskEntity.requestType) {
|
switch (taskEntity.requestType) {
|
||||||
case AbsTaskEntity.HTTP:
|
case AbsTaskEntity.D_HTTP:
|
||||||
mUtil = new DownloadGroupUtil(mListener, mTaskEntity);
|
mUtil = new DownloadGroupUtil(mListener, mTaskEntity);
|
||||||
break;
|
break;
|
||||||
case AbsTaskEntity.FTP_DIR:
|
case AbsTaskEntity.D_FTP_DIR:
|
||||||
mUtil = new FtpDirDownloadUtil(mListener, mTaskEntity);
|
mUtil = new FtpDirDownloadUtil(mListener, mTaskEntity);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -68,12 +68,7 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
* @param refreshInfo 是否刷新下载信息
|
* @param refreshInfo 是否刷新下载信息
|
||||||
*/
|
*/
|
||||||
public DownloadTarget load(DownloadEntity entity, boolean refreshInfo) {
|
public DownloadTarget load(DownloadEntity entity, boolean refreshInfo) {
|
||||||
CheckUtil.checkDownloadUrl(entity.getUrl());
|
CheckUtil.checkDownloadEntity(entity);
|
||||||
if (entity.getUrl().startsWith("ftp")) {
|
|
||||||
ALog.w(TAG,
|
|
||||||
"使用实体启动FTP下载,如果你的FTP服务器需要登录,那么你需要调用登录的接口,如:Aria.download(this).load(url).login(user, pw).start()");
|
|
||||||
return new FtpDownloadTarget(entity, targetName, refreshInfo);
|
|
||||||
}
|
|
||||||
return new DownloadTarget(entity, targetName, refreshInfo);
|
return new DownloadTarget(entity, targetName, refreshInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +88,7 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
* @param refreshInfo 是否刷新下载信息
|
* @param refreshInfo 是否刷新下载信息
|
||||||
*/
|
*/
|
||||||
public DownloadTarget load(@NonNull String url, boolean refreshInfo) {
|
public DownloadTarget load(@NonNull String url, boolean refreshInfo) {
|
||||||
CheckUtil.checkDownloadUrl(url);
|
CheckUtil.checkUrl(url);
|
||||||
return new DownloadTarget(url, targetName, refreshInfo);
|
return new DownloadTarget(url, targetName, refreshInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +100,28 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
return new DownloadGroupTarget(urls, targetName);
|
return new DownloadGroupTarget(urls, targetName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用下载实体执行FTP下载操作
|
||||||
|
*
|
||||||
|
* @param entity 下载实体
|
||||||
|
*/
|
||||||
|
public FtpDownloadTarget loadFtp(DownloadEntity entity) {
|
||||||
|
return loadFtp(entity, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用下载实体执行下载操作
|
||||||
|
*
|
||||||
|
* @param refreshInfo 是否刷新下载信息
|
||||||
|
*/
|
||||||
|
public FtpDownloadTarget loadFtp(DownloadEntity entity, boolean refreshInfo) {
|
||||||
|
CheckUtil.checkDownloadEntity(entity);
|
||||||
|
if (!entity.getUrl().startsWith("ftp")) {
|
||||||
|
throw new IllegalArgumentException("非FTP请求不能使用该方法");
|
||||||
|
}
|
||||||
|
return new FtpDownloadTarget(entity, targetName, refreshInfo);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载ftp单任务下载地址
|
* 加载ftp单任务下载地址
|
||||||
*/
|
*/
|
||||||
@@ -118,7 +135,7 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
* @param refreshInfo 是否刷新下载信息
|
* @param refreshInfo 是否刷新下载信息
|
||||||
*/
|
*/
|
||||||
public FtpDownloadTarget loadFtp(@NonNull String url, boolean refreshInfo) {
|
public FtpDownloadTarget loadFtp(@NonNull String url, boolean refreshInfo) {
|
||||||
CheckUtil.checkDownloadUrl(url);
|
CheckUtil.checkUrl(url);
|
||||||
return new FtpDownloadTarget(url, targetName, refreshInfo);
|
return new FtpDownloadTarget(url, targetName, refreshInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +153,7 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
* 加载ftp文件夹下载地址
|
* 加载ftp文件夹下载地址
|
||||||
*/
|
*/
|
||||||
public FtpDirDownloadTarget loadFtpDir(@NonNull String dirUrl) {
|
public FtpDirDownloadTarget loadFtpDir(@NonNull String dirUrl) {
|
||||||
CheckUtil.checkDownloadUrl(dirUrl);
|
CheckUtil.checkUrl(dirUrl);
|
||||||
return new FtpDirDownloadTarget(dirUrl, targetName);
|
return new FtpDirDownloadTarget(dirUrl, targetName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +209,7 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
* 通过下载链接获取下载实体
|
* 通过下载链接获取下载实体
|
||||||
*/
|
*/
|
||||||
public DownloadEntity getDownloadEntity(String downloadUrl) {
|
public DownloadEntity getDownloadEntity(String downloadUrl) {
|
||||||
CheckUtil.checkDownloadUrl(downloadUrl);
|
CheckUtil.checkUrl(downloadUrl);
|
||||||
return DbEntity.findFirst(DownloadEntity.class, "url=? and isGroupChild='false'", downloadUrl);
|
return DbEntity.findFirst(DownloadEntity.class, "url=? and isGroupChild='false'", downloadUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,7 +217,7 @@ public class DownloadReceiver extends AbsReceiver {
|
|||||||
* 通过下载链接获取保存在数据库的下载任务实体
|
* 通过下载链接获取保存在数据库的下载任务实体
|
||||||
*/
|
*/
|
||||||
public DownloadTaskEntity getDownloadTask(String downloadUrl) {
|
public DownloadTaskEntity getDownloadTask(String downloadUrl) {
|
||||||
CheckUtil.checkDownloadUrl(downloadUrl);
|
CheckUtil.checkUrl(downloadUrl);
|
||||||
DownloadEntity entity = getDownloadEntity(downloadUrl);
|
DownloadEntity entity = getDownloadEntity(downloadUrl);
|
||||||
if (entity == null || TextUtils.isEmpty(entity.getDownloadPath())) return null;
|
if (entity == null || TextUtils.isEmpty(entity.getDownloadPath())) return null;
|
||||||
return DbEntity.findFirst(DownloadTaskEntity.class, "key=? and isGroupTask='false'",
|
return DbEntity.findFirst(DownloadTaskEntity.class, "key=? and isGroupTask='false'",
|
||||||
|
@@ -39,7 +39,7 @@ public class FtpDirDownloadTarget
|
|||||||
if (mTaskEntity == null) {
|
if (mTaskEntity == null) {
|
||||||
mTaskEntity = TEManager.getInstance().createTEntity(DownloadGroupTaskEntity.class, key);
|
mTaskEntity = TEManager.getInstance().createTEntity(DownloadGroupTaskEntity.class, key);
|
||||||
}
|
}
|
||||||
mTaskEntity.requestType = AbsTaskEntity.FTP_DIR;
|
mTaskEntity.requestType = AbsTaskEntity.D_FTP_DIR;
|
||||||
mEntity = mTaskEntity.entity;
|
mEntity = mTaskEntity.entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -48,7 +48,7 @@ public class FtpDownloadTarget extends DownloadTarget {
|
|||||||
mEntity.setFileName(url.substring(lastIndex + 1, url.length()));
|
mEntity.setFileName(url.substring(lastIndex + 1, url.length()));
|
||||||
mTaskEntity.urlEntity = CommonUtil.getFtpUrlInfo(url);
|
mTaskEntity.urlEntity = CommonUtil.getFtpUrlInfo(url);
|
||||||
mTaskEntity.refreshInfo = refreshInfo;
|
mTaskEntity.refreshInfo = refreshInfo;
|
||||||
mTaskEntity.requestType = AbsTaskEntity.FTP;
|
mTaskEntity.requestType = AbsTaskEntity.D_FTP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -91,10 +91,10 @@ class Downloader extends AbsFileer<DownloadEntity, DownloadTaskEntity> {
|
|||||||
|
|
||||||
@Override protected AbsThreadTask selectThreadTask(SubThreadConfig<DownloadTaskEntity> config) {
|
@Override protected AbsThreadTask selectThreadTask(SubThreadConfig<DownloadTaskEntity> config) {
|
||||||
switch (mTaskEntity.requestType) {
|
switch (mTaskEntity.requestType) {
|
||||||
case AbsTaskEntity.FTP:
|
case AbsTaskEntity.D_FTP:
|
||||||
case AbsTaskEntity.FTP_DIR:
|
case AbsTaskEntity.D_FTP_DIR:
|
||||||
return new FtpThreadTask(mConstance, (IDownloadListener) mListener, config);
|
return new FtpThreadTask(mConstance, (IDownloadListener) mListener, config);
|
||||||
case AbsTaskEntity.HTTP:
|
case AbsTaskEntity.D_HTTP:
|
||||||
return new HttpThreadTask(mConstance, (IDownloadListener) mListener, config);
|
return new HttpThreadTask(mConstance, (IDownloadListener) mListener, config);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@@ -55,7 +55,7 @@ public class FtpDirDownloadUtil extends AbsGroupUtil {
|
|||||||
|
|
||||||
@Override public void onFail(String url, String errorMsg, boolean needRetry) {
|
@Override public void onFail(String url, String errorMsg, boolean needRetry) {
|
||||||
mListener.onFail(needRetry);
|
mListener.onFail(needRetry);
|
||||||
ErrorHelp.saveError("FTP_DIR", mGTEntity.getEntity(), "", errorMsg);
|
ErrorHelp.saveError("D_FTP_DIR", mGTEntity.getEntity(), "", errorMsg);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
@@ -76,8 +76,9 @@ class FtpThreadTask extends AbsFtpThreadTask<DownloadEntity, DownloadTaskEntity>
|
|||||||
int len;
|
int len;
|
||||||
|
|
||||||
while ((len = is.read(buffer)) != -1) {
|
while ((len = is.read(buffer)) != -1) {
|
||||||
if (STATE.isCancel) break;
|
if (STATE.isCancel || STATE.isStop){
|
||||||
if (STATE.isStop) break;
|
break;
|
||||||
|
}
|
||||||
if (mSleepTime > 0) Thread.sleep(mSleepTime);
|
if (mSleepTime > 0) Thread.sleep(mSleepTime);
|
||||||
if (mChildCurrentLocation + len >= mConfig.END_LOCATION) {
|
if (mChildCurrentLocation + len >= mConfig.END_LOCATION) {
|
||||||
len = (int) (mConfig.END_LOCATION - mChildCurrentLocation);
|
len = (int) (mConfig.END_LOCATION - mChildCurrentLocation);
|
||||||
|
@@ -25,7 +25,7 @@ import com.arialyy.aria.util.ErrorHelp;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2015/8/25.
|
* Created by lyy on 2015/8/25.
|
||||||
* HTTP\FTP单任务下载工具
|
* D_HTTP\FTP单任务下载工具
|
||||||
*/
|
*/
|
||||||
public class SimpleDownloadUtil implements IUtil, Runnable {
|
public class SimpleDownloadUtil implements IUtil, Runnable {
|
||||||
private static final String TAG = "SimpleDownloadUtil";
|
private static final String TAG = "SimpleDownloadUtil";
|
||||||
@@ -92,7 +92,7 @@ public class SimpleDownloadUtil implements IUtil, Runnable {
|
|||||||
mListener.onPre();
|
mListener.onPre();
|
||||||
if (mTaskEntity.getEntity().getFileSize() <= 1
|
if (mTaskEntity.getEntity().getFileSize() <= 1
|
||||||
|| mTaskEntity.refreshInfo
|
|| mTaskEntity.refreshInfo
|
||||||
|| mTaskEntity.requestType == AbsTaskEntity.FTP) {
|
|| mTaskEntity.requestType == AbsTaskEntity.D_FTP) {
|
||||||
new Thread(createInfoThread()).start();
|
new Thread(createInfoThread()).start();
|
||||||
} else {
|
} else {
|
||||||
mDownloader.start();
|
mDownloader.start();
|
||||||
@@ -104,7 +104,7 @@ public class SimpleDownloadUtil implements IUtil, Runnable {
|
|||||||
*/
|
*/
|
||||||
private Runnable createInfoThread() {
|
private Runnable createInfoThread() {
|
||||||
switch (mTaskEntity.requestType) {
|
switch (mTaskEntity.requestType) {
|
||||||
case AbsTaskEntity.FTP:
|
case AbsTaskEntity.D_FTP:
|
||||||
return new FtpFileInfoThread(mTaskEntity, new OnFileInfoCallback() {
|
return new FtpFileInfoThread(mTaskEntity, new OnFileInfoCallback() {
|
||||||
@Override public void onComplete(String url, int code) {
|
@Override public void onComplete(String url, int code) {
|
||||||
mDownloader.start();
|
mDownloader.start();
|
||||||
@@ -114,7 +114,7 @@ public class SimpleDownloadUtil implements IUtil, Runnable {
|
|||||||
failDownload(errorMsg, needRetry);
|
failDownload(errorMsg, needRetry);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
case AbsTaskEntity.HTTP:
|
case AbsTaskEntity.D_HTTP:
|
||||||
return new HttpFileInfoThread(mTaskEntity, new OnFileInfoCallback() {
|
return new HttpFileInfoThread(mTaskEntity, new OnFileInfoCallback() {
|
||||||
@Override public void onComplete(String url, int code) {
|
@Override public void onComplete(String url, int code) {
|
||||||
mDownloader.start();
|
mDownloader.start();
|
||||||
|
@@ -19,8 +19,6 @@ import android.os.Parcel;
|
|||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import com.arialyy.aria.orm.DbEntity;
|
import com.arialyy.aria.orm.DbEntity;
|
||||||
import com.arialyy.aria.orm.Ignore;
|
import com.arialyy.aria.orm.Ignore;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by AriaL on 2017/6/29.
|
* Created by AriaL on 2017/6/29.
|
||||||
@@ -162,6 +160,14 @@ public abstract class AbsEntity extends DbEntity implements IEntity, Parcelable
|
|||||||
*/
|
*/
|
||||||
public abstract String getKey();
|
public abstract String getKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实体驱动的下载任务类型
|
||||||
|
*
|
||||||
|
* @return {@link AbsTaskEntity#D_FTP}、{@link AbsTaskEntity#D_FTP_DIR}、{@link
|
||||||
|
* AbsTaskEntity#U_HTTP}...
|
||||||
|
*/
|
||||||
|
public abstract int getTaskType();
|
||||||
|
|
||||||
public AbsEntity() {
|
public AbsEntity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,17 +29,30 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public abstract class AbsTaskEntity<ENTITY extends AbsEntity> extends DbEntity {
|
public abstract class AbsTaskEntity<ENTITY extends AbsEntity> extends DbEntity {
|
||||||
/**
|
/**
|
||||||
* HTTP下载
|
* HTTP单任务载
|
||||||
*/
|
*/
|
||||||
public static final int HTTP = 0x11;
|
public static final int D_HTTP = 0x11;
|
||||||
/**
|
/**
|
||||||
* FTP当文件下载
|
* HTTP任务组下载
|
||||||
*/
|
*/
|
||||||
public static final int FTP = 0x12;
|
public static final int DG_HTTP = 0x12;
|
||||||
|
/**
|
||||||
|
* HTTP单文件上传
|
||||||
|
*/
|
||||||
|
public static final int U_HTTP = 0xA1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FTP单文件下载
|
||||||
|
*/
|
||||||
|
public static final int D_FTP = 0x13;
|
||||||
/**
|
/**
|
||||||
* FTP文件夹下载,为避免登录过多,子任务由单线程进行处理
|
* FTP文件夹下载,为避免登录过多,子任务由单线程进行处理
|
||||||
*/
|
*/
|
||||||
public static final int FTP_DIR = 0x13;
|
public static final int D_FTP_DIR = 0x14;
|
||||||
|
/**
|
||||||
|
* FTP单文件上传
|
||||||
|
*/
|
||||||
|
public static final int U_FTP = 0xA2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task实体对应的key
|
* Task实体对应的key
|
||||||
@@ -68,9 +81,9 @@ public abstract class AbsTaskEntity<ENTITY extends AbsEntity> extends DbEntity {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求类型
|
* 请求类型
|
||||||
* {@link AbsTaskEntity#HTTP}、{@link AbsTaskEntity#FTP}、{@link AbsTaskEntity#FTP_DIR}
|
* {@link AbsTaskEntity#D_HTTP}、{@link AbsTaskEntity#D_FTP}、{@link AbsTaskEntity#D_FTP_DIR}。。。
|
||||||
*/
|
*/
|
||||||
public int requestType = HTTP;
|
public int requestType = D_HTTP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* http 请求头
|
* http 请求头
|
||||||
|
@@ -21,9 +21,6 @@ import com.arialyy.aria.core.upload.UploadEntity;
|
|||||||
import com.arialyy.aria.core.upload.UploadTask;
|
import com.arialyy.aria.core.upload.UploadTask;
|
||||||
import com.arialyy.aria.core.upload.UploadTaskEntity;
|
import com.arialyy.aria.core.upload.UploadTaskEntity;
|
||||||
import com.arialyy.aria.util.CheckUtil;
|
import com.arialyy.aria.util.CheckUtil;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
|
||||||
import com.arialyy.aria.util.Regular;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by AriaL on 2017/6/29.
|
* Created by AriaL on 2017/6/29.
|
||||||
@@ -38,7 +35,7 @@ public abstract class AbsUploadTarget<TARGET extends AbsUploadTarget, ENTITY ext
|
|||||||
* @param uploadUrl 上传路径
|
* @param uploadUrl 上传路径
|
||||||
*/
|
*/
|
||||||
public TARGET setUploadUrl(@NonNull String uploadUrl) {
|
public TARGET setUploadUrl(@NonNull String uploadUrl) {
|
||||||
CheckUtil.checkDownloadUrl(uploadUrl);
|
CheckUtil.checkUrl(uploadUrl);
|
||||||
if (mEntity.getUrl().equals(uploadUrl)) return (TARGET) this;
|
if (mEntity.getUrl().equals(uploadUrl)) return (TARGET) this;
|
||||||
mEntity.setUrl(uploadUrl);
|
mEntity.setUrl(uploadUrl);
|
||||||
mEntity.update();
|
mEntity.update();
|
||||||
|
@@ -47,7 +47,7 @@ public class FtpUploadTarget
|
|||||||
File file = new File(filePath);
|
File file = new File(filePath);
|
||||||
mEntity.setFileName(file.getName());
|
mEntity.setFileName(file.getName());
|
||||||
mEntity.setFileSize(file.length());
|
mEntity.setFileSize(file.length());
|
||||||
mTaskEntity.requestType = AbsTaskEntity.FTP;
|
mTaskEntity.requestType = AbsTaskEntity.U_FTP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,7 +56,7 @@ public class FtpUploadTarget
|
|||||||
* @param uploadUrl 上传路径
|
* @param uploadUrl 上传路径
|
||||||
*/
|
*/
|
||||||
public FtpUploadTarget setUploadUrl(@NonNull String uploadUrl) {
|
public FtpUploadTarget setUploadUrl(@NonNull String uploadUrl) {
|
||||||
CheckUtil.checkDownloadUrl(uploadUrl);
|
CheckUtil.checkUrl(uploadUrl);
|
||||||
mTaskEntity.urlEntity = CommonUtil.getFtpUrlInfo(uploadUrl);
|
mTaskEntity.urlEntity = CommonUtil.getFtpUrlInfo(uploadUrl);
|
||||||
if (mEntity.getUrl().equals(uploadUrl)) return this;
|
if (mEntity.getUrl().equals(uploadUrl)) return this;
|
||||||
mEntity.setUrl(uploadUrl);
|
mEntity.setUrl(uploadUrl);
|
||||||
|
@@ -19,9 +19,8 @@ import android.os.Parcel;
|
|||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import com.arialyy.aria.core.inf.AbsNormalEntity;
|
import com.arialyy.aria.core.inf.AbsNormalEntity;
|
||||||
import com.arialyy.aria.orm.Foreign;
|
import com.arialyy.aria.orm.Foreign;
|
||||||
import com.arialyy.aria.orm.Ignore;
|
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
||||||
import com.arialyy.aria.orm.Primary;
|
import com.arialyy.aria.orm.Primary;
|
||||||
import com.arialyy.aria.orm.PrimaryAndForeign;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2017/2/9.
|
* Created by lyy on 2017/2/9.
|
||||||
@@ -42,6 +41,10 @@ public class UploadEntity extends AbsNormalEntity implements Parcelable {
|
|||||||
return filePath;
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public int getTaskType() {
|
||||||
|
return getUrl().startsWith("ftp") ? AbsTaskEntity.D_FTP : AbsTaskEntity.D_HTTP;
|
||||||
|
}
|
||||||
|
|
||||||
public UploadEntity() {
|
public UploadEntity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18,6 +18,7 @@ package com.arialyy.aria.core.upload;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import com.arialyy.aria.core.inf.AbsUploadTarget;
|
import com.arialyy.aria.core.inf.AbsUploadTarget;
|
||||||
import com.arialyy.aria.core.manager.TEManager;
|
import com.arialyy.aria.core.manager.TEManager;
|
||||||
|
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,6 +43,7 @@ public class UploadTarget extends AbsUploadTarget<UploadTarget, UploadEntity, Up
|
|||||||
mEntity.setFileSize(file.length());
|
mEntity.setFileSize(file.length());
|
||||||
//http暂时不支持断点上传
|
//http暂时不支持断点上传
|
||||||
mTaskEntity.isSupportBP = false;
|
mTaskEntity.isSupportBP = false;
|
||||||
|
mTaskEntity.requestType = AbsTaskEntity.U_HTTP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -101,10 +101,10 @@ class FtpThreadTask extends AbsFtpThreadTask<UploadEntity, UploadTaskEntity> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initPath() throws UnsupportedEncodingException {
|
private void initPath() throws UnsupportedEncodingException {
|
||||||
String url = mEntity.getUrl();
|
dir = new String(mTaskEntity.urlEntity.remotePath.getBytes(charSet), SERVER_CHARSET);
|
||||||
String temp = url.substring(url.indexOf(port) + port.length(), url.length());
|
remotePath = new String(
|
||||||
dir = new String(temp.getBytes(charSet), SERVER_CHARSET);
|
(mTaskEntity.urlEntity.remotePath + "/" + mEntity.getFileName()).getBytes(charSet),
|
||||||
remotePath = new String((temp + "/" + mEntity.getFileName()).getBytes(charSet), SERVER_CHARSET);
|
SERVER_CHARSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void upload(final FTPClient client, final BufferedRandomAccessFile bis)
|
private void upload(final FTPClient client, final BufferedRandomAccessFile bis)
|
||||||
|
@@ -72,10 +72,9 @@ class Uploader extends AbsFileer<UploadEntity, UploadTaskEntity> {
|
|||||||
|
|
||||||
@Override protected AbsThreadTask selectThreadTask(SubThreadConfig<UploadTaskEntity> config) {
|
@Override protected AbsThreadTask selectThreadTask(SubThreadConfig<UploadTaskEntity> config) {
|
||||||
switch (mTaskEntity.requestType) {
|
switch (mTaskEntity.requestType) {
|
||||||
case AbsTaskEntity.FTP:
|
case AbsTaskEntity.U_FTP:
|
||||||
case AbsTaskEntity.FTP_DIR:
|
|
||||||
return new FtpThreadTask(mConstance, mListener, config);
|
return new FtpThreadTask(mConstance, mListener, config);
|
||||||
case AbsTaskEntity.HTTP:
|
case AbsTaskEntity.U_HTTP:
|
||||||
return new HttpThreadTask(mConstance, (IUploadListener) mListener, config);
|
return new HttpThreadTask(mConstance, (IUploadListener) mListener, config);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@@ -71,19 +71,32 @@ public class CheckUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测下载链接是否为null
|
* 检查下载实体
|
||||||
*/
|
*/
|
||||||
public static void checkDownloadUrl(String downloadUrl) {
|
public static void checkDownloadEntity(DownloadEntity entity) {
|
||||||
if (TextUtils.isEmpty(downloadUrl)) throw new IllegalArgumentException("下载链接不能为null");
|
checkUrl(entity.getUrl());
|
||||||
|
checkPath(entity.getDownloadPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测下载链接是否为null
|
* 检测下载链接是否为null
|
||||||
*/
|
*/
|
||||||
public static void checkUploadUrl(String downloadUrl) {
|
public static void checkPath(String path) {
|
||||||
if (TextUtils.isEmpty(downloadUrl)) throw new IllegalArgumentException("上传地址不能为null");
|
if (TextUtils.isEmpty(path)) {
|
||||||
|
throw new IllegalArgumentException("保存路径不能为null");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测下载链接是否为null
|
||||||
|
*/
|
||||||
|
public static void checkUrl(String url) {
|
||||||
|
if (TextUtils.isEmpty(url)) {
|
||||||
|
throw new IllegalArgumentException("下载链接不能为null");
|
||||||
|
} else if (!url.startsWith("http") && !url.startsWith("ftp")) {
|
||||||
|
throw new IllegalArgumentException("url错误");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测下载链接组是否为null
|
* 检测下载链接组是否为null
|
||||||
@@ -107,9 +120,13 @@ public class CheckUtil {
|
|||||||
* 检测上传地址是否为null
|
* 检测上传地址是否为null
|
||||||
*/
|
*/
|
||||||
public static void checkUploadPath(String uploadPath) {
|
public static void checkUploadPath(String uploadPath) {
|
||||||
if (TextUtils.isEmpty(uploadPath)) throw new IllegalArgumentException("上传地址不能为null");
|
if (TextUtils.isEmpty(uploadPath)) {
|
||||||
|
throw new IllegalArgumentException("上传地址不能为null");
|
||||||
|
}
|
||||||
File file = new File(uploadPath);
|
File file = new File(uploadPath);
|
||||||
if (!file.exists()) throw new IllegalArgumentException("上传文件不存在");
|
if (!file.exists()) {
|
||||||
|
throw new IllegalArgumentException("上传文件不存在");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -28,9 +28,10 @@ Aria有以下特点:
|
|||||||
[](https://bintray.com/arialyy/maven/AriaApi/_latestVersion)
|
[](https://bintray.com/arialyy/maven/AriaApi/_latestVersion)
|
||||||
[](https://bintray.com/arialyy/maven/AriaCompiler/_latestVersion)
|
[](https://bintray.com/arialyy/maven/AriaCompiler/_latestVersion)
|
||||||
```java
|
```java
|
||||||
compile 'com.arialyy.aria:aria-core:3.3.5'
|
compile 'com.arialyy.aria:aria-core:3.3.6'
|
||||||
annotationProcessor 'com.arialyy.aria:aria-compiler:3.3.5'
|
annotationProcessor 'com.arialyy.aria:aria-compiler:3.3.6'
|
||||||
```
|
```
|
||||||
|
如果你使用的是kotlin,请使用kotlin官方提供的方法配置apt,[kotlin kapt官方配置传送门](https://www.kotlincn.net/docs/reference/kapt.html)
|
||||||
|
|
||||||
***
|
***
|
||||||
## 使用
|
## 使用
|
||||||
|
@@ -38,8 +38,8 @@ public class FtpDownloadActivity extends BaseActivity<ActivityFtpDownloadBinding
|
|||||||
//private final String URL = "ftp://192.168.1.9:21/下载/AriaPrj.zip";
|
//private final String URL = "ftp://192.168.1.9:21/下载/AriaPrj.zip";
|
||||||
//private final String URL = "ftp://192.168.1.9:21/下载/[电影天堂www.dy2018.com]赛车总动员3BD中英双字.mp4";
|
//private final String URL = "ftp://192.168.1.9:21/下载/[电影天堂www.dy2018.com]赛车总动员3BD中英双字.mp4";
|
||||||
//private final String URL = "ftp://h:h@tv.dl1234.com:2199/付岩洞复仇者们05.mkv";
|
//private final String URL = "ftp://h:h@tv.dl1234.com:2199/付岩洞复仇者们05.mkv";
|
||||||
//private final String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]xd联盟HD高清国粤双语中字.mkv";
|
private final String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]英格丽向西行BD中英双字.mp4";
|
||||||
private final String URL = "ftp://172.18.104.71:21/upload/AS.zip";
|
//private final String URL = "ftp://172.18.104.71:21/upload/AS.zip";
|
||||||
|
|
||||||
@Override protected void init(Bundle savedInstanceState) {
|
@Override protected void init(Bundle savedInstanceState) {
|
||||||
super.init(savedInstanceState);
|
super.init(savedInstanceState);
|
||||||
@@ -60,9 +60,8 @@ public class FtpDownloadActivity extends BaseActivity<ActivityFtpDownloadBinding
|
|||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
switch (view.getId()) {
|
switch (view.getId()) {
|
||||||
case R.id.start:
|
case R.id.start:
|
||||||
Aria.download(this).loadFtp(URL, true)
|
Aria.download(this).loadFtp(URL, true).charSet("gbk")
|
||||||
//.charSet("GBK")
|
//.login("lao", "123456")
|
||||||
.login("lao", "123456")
|
|
||||||
.setDownloadPath("/mnt/sdcard/").start();
|
.setDownloadPath("/mnt/sdcard/").start();
|
||||||
break;
|
break;
|
||||||
case R.id.stop:
|
case R.id.stop:
|
||||||
|
@@ -28,6 +28,7 @@ import com.arialyy.aria.core.Aria;
|
|||||||
import com.arialyy.aria.core.download.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.download.DownloadGroupEntity;
|
import com.arialyy.aria.core.download.DownloadGroupEntity;
|
||||||
import com.arialyy.aria.core.inf.AbsEntity;
|
import com.arialyy.aria.core.inf.AbsEntity;
|
||||||
|
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
||||||
import com.arialyy.aria.core.inf.IEntity;
|
import com.arialyy.aria.core.inf.IEntity;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
@@ -206,11 +207,7 @@ public class DownloadAdapter extends AbsRVAdapter<AbsEntity, DownloadAdapter.Sim
|
|||||||
@Override public void onClick(View v) {
|
@Override public void onClick(View v) {
|
||||||
mData.remove(entity);
|
mData.remove(entity);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
if (isSimpleDownload(entity)) {
|
cancel(entity);
|
||||||
Aria.download(getContext()).load((DownloadEntity) entity).cancel(true);
|
|
||||||
} else {
|
|
||||||
Aria.download(getContext()).load((DownloadGroupEntity) entity).cancel(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//if (holder instanceof GroupHolder){
|
//if (holder instanceof GroupHolder){
|
||||||
@@ -267,21 +264,58 @@ public class DownloadAdapter extends AbsRVAdapter<AbsEntity, DownloadAdapter.Sim
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void start(AbsEntity entity) {
|
private void cancel(AbsEntity entity) {
|
||||||
if (isSimpleDownload(entity)) {
|
switch (entity.getTaskType()) {
|
||||||
Aria.download(getContext()).load((DownloadEntity) entity).start();
|
case AbsTaskEntity.D_FTP:
|
||||||
} else {
|
Aria.download(getContext())
|
||||||
Aria.download(getContext()).load((DownloadGroupEntity) entity).start();
|
.loadFtp((DownloadEntity) entity)
|
||||||
}
|
//.login("lao", "123456")
|
||||||
|
.cancel(true);
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.D_FTP_DIR:
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.D_HTTP:
|
||||||
|
Aria.download(getContext()).load((DownloadEntity) entity).cancel(true);
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.DG_HTTP:
|
||||||
|
Aria.download(getContext()).load((DownloadGroupEntity) entity).cancel(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void stop(AbsEntity entity) {
|
private void start(AbsEntity entity) {
|
||||||
if (isSimpleDownload(entity)) {
|
switch (entity.getTaskType()) {
|
||||||
|
case AbsTaskEntity.D_FTP:
|
||||||
|
//Aria.download(getContext()).loadFtp((DownloadEntity) entity).login("lao", "123456").start();
|
||||||
|
Aria.download(getContext()).loadFtp((DownloadEntity) entity).charSet("GBK").start();
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.D_FTP_DIR:
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.D_HTTP:
|
||||||
|
Aria.download(getContext()).load((DownloadEntity) entity).start();
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.DG_HTTP:
|
||||||
|
Aria.download(getContext()).load((DownloadGroupEntity) entity).start();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stop(AbsEntity entity) {
|
||||||
|
switch (entity.getTaskType()) {
|
||||||
|
case AbsTaskEntity.D_FTP:
|
||||||
|
//Aria.download(getContext()).loadFtp((DownloadEntity) entity).login("lao", "123456").stop();
|
||||||
|
Aria.download(getContext()).loadFtp((DownloadEntity) entity).charSet("GBK").stop();
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.D_FTP_DIR:
|
||||||
|
break;
|
||||||
|
case AbsTaskEntity.D_HTTP:
|
||||||
Aria.download(getContext()).load((DownloadEntity) entity).stop();
|
Aria.download(getContext()).load((DownloadEntity) entity).stop();
|
||||||
} else {
|
break;
|
||||||
|
case AbsTaskEntity.DG_HTTP:
|
||||||
Aria.download(getContext()).load((DownloadGroupEntity) entity).stop();
|
Aria.download(getContext()).load((DownloadGroupEntity) entity).stop();
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -35,10 +35,10 @@ import com.arialyy.simple.databinding.ActivityFtpUploadBinding;
|
|||||||
*/
|
*/
|
||||||
public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
|
public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
|
||||||
private final String FILE_PATH = "/mnt/sdcard/Download/me.jpg";
|
private final String FILE_PATH = "/mnt/sdcard/Download/me.jpg";
|
||||||
private final String URL = "ftp://172.18.104.49:21/upload/测试";
|
private final String URL = "ftp://172.18.104.65:21/upload/测试";
|
||||||
|
|
||||||
@Override protected void init(Bundle savedInstanceState) {
|
@Override protected void init(Bundle savedInstanceState) {
|
||||||
setTile("FTP 文件上传");
|
setTile("D_FTP 文件上传");
|
||||||
super.init(savedInstanceState);
|
super.init(savedInstanceState);
|
||||||
Aria.upload(this).register();
|
Aria.upload(this).register();
|
||||||
UploadEntity entity = Aria.upload(this).getUploadEntity(FILE_PATH);
|
UploadEntity entity = Aria.upload(this).getUploadEntity(FILE_PATH);
|
||||||
|
@@ -42,7 +42,7 @@ public class HttpUploadActivity extends BaseActivity<ActivityUploadBinding> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void init(Bundle savedInstanceState) {
|
@Override protected void init(Bundle savedInstanceState) {
|
||||||
setTile("HTTP 上传");
|
setTile("D_HTTP 上传");
|
||||||
super.init(savedInstanceState);
|
super.init(savedInstanceState);
|
||||||
Aria.upload(this).register();
|
Aria.upload(this).register();
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,7 @@ task clean(type: Delete) {
|
|||||||
ext {
|
ext {
|
||||||
userOrg = 'arialyy'
|
userOrg = 'arialyy'
|
||||||
groupId = 'com.arialyy.aria'
|
groupId = 'com.arialyy.aria'
|
||||||
publishVersion = '3.3.6_dev_2'
|
publishVersion = '3.3.6'
|
||||||
// publishVersion = '1.0.3' //FTP插件
|
// publishVersion = '1.0.3' //FTP插件
|
||||||
repoName='maven'
|
repoName='maven'
|
||||||
desc = 'android 下载框架'
|
desc = 'android 下载框架'
|
||||||
|
Reference in New Issue
Block a user