pull/330/head
laoyuyu 7 years ago
parent efccdcb0c2
commit ed8430e45c
  1. 42
      Aria/src/main/java/com/arialyy/aria/core/download/downloader/ConnectionHelp.java
  2. 2
      Aria/src/main/java/com/arialyy/aria/core/download/downloader/HttpFileInfoThread.java
  3. 4
      DEV_LOG.md
  4. 15
      README.md
  5. BIN
      app/libs/siteparser.aar
  6. 4
      app/src/main/AndroidManifest.xml
  7. 13
      app/src/main/java/com/arialyy/simple/base/BaseApplication.java
  8. 14
      app/src/main/java/com/arialyy/simple/common/ConnectionChangeReceiver.java
  9. 5
      app/src/main/java/com/arialyy/simple/test/AnyRunActivity.java
  10. 6
      app/src/main/java/com/arialyy/simple/test/AnyRunnModule.java
  11. 2
      build.gradle

@ -26,6 +26,8 @@ import java.net.HttpURLConnection;
import java.net.ProtocolException; import java.net.ProtocolException;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import java.util.zip.InflaterInputStream; import java.util.zip.InflaterInputStream;
@ -123,27 +125,27 @@ class ConnectionHelp {
} }
if (conn.getRequestProperty("Accept") == null) { if (conn.getRequestProperty("Accept") == null) {
StringBuilder accept = new StringBuilder(); StringBuilder accept = new StringBuilder();
accept.append("image/gif, ") //accept
.append("image/jpeg, ") //.append("image/gif, ")
.append("image/pjpeg, ") //.append("image/jpeg, ")
.append("image/webp, ") //.append("image/pjpeg, ")
.append("image/apng, ") //.append("image/webp, ")
.append("application/xml, ") //.append("image/apng, ")
.append("application/xaml+xml, ") //.append("application/xml, ")
.append("application/xhtml+xml, ") //.append("application/xaml+xml, ")
.append("application/x-shockwave-flash, ") //.append("application/xhtml+xml, ")
.append("application/x-ms-xbap, ") //.append("application/x-shockwave-flash, ")
.append("application/x-ms-application, ") //.append("application/x-ms-xbap, ")
.append("application/msword, ") //.append("application/x-ms-application, ")
.append("application/vnd.ms-excel, ") //.append("application/msword, ")
.append("application/vnd.ms-xpsdocument, ") //.append("application/vnd.ms-excel, ")
.append("application/vnd.ms-powerpoint, ") //.append("application/vnd.ms-xpsdocument, ")
.append("text/plain, ") //.append("application/vnd.ms-powerpoint, ")
.append("text/html, ") //.append("text/plain, ")
.append("*/*"); //.append("text/html, ")
conn.setRequestProperty("Accept", accept.toString()); //.append("*/*");
conn.setRequestProperty("Accept", "*/*");
} }
//302获取重定向地址 //302获取重定向地址
conn.setInstanceFollowRedirects(false); conn.setInstanceFollowRedirects(false);
return conn; return conn;

@ -56,7 +56,7 @@ class HttpFileInfoThread implements Runnable {
URL url = new URL(CommonUtil.convertUrl(mEntity.getUrl())); URL url = new URL(CommonUtil.convertUrl(mEntity.getUrl()));
conn = ConnectionHelp.handleConnection(url, mTaskEntity); conn = ConnectionHelp.handleConnection(url, mTaskEntity);
conn = ConnectionHelp.setConnectParam(mTaskEntity, conn); conn = ConnectionHelp.setConnectParam(mTaskEntity, conn);
conn.setRequestProperty("Range", "bytes=" + 0 + "-"); //conn.setRequestProperty("Range", "bytes=" + 0 + "-");
conn.setConnectTimeout(mConnectTimeOut); conn.setConnectTimeout(mConnectTimeOut);
//conn.setChunkedStreamingMode(0); //conn.setChunkedStreamingMode(0);
conn.connect(); conn.connect();

@ -1,4 +1,8 @@
## 开发日志 ## 开发日志
+ v_3.4.4
- 实现[多线程分块下载](https://aria.laoyuyu.me/aria_doc/start/config.html)
- 修复`stopAll()`和`resumeAll()`导致的进度为0问题
- 修复任务组添加header无效的问题
+ v_3.4.3 + v_3.4.3
- 修复在activity 的onStop中取消注册导致的内存泄露问题 - 修复在activity 的onStop中取消注册导致的内存泄露问题
- fix bug https://github.com/AriaLyy/Aria/issues/258 - fix bug https://github.com/AriaLyy/Aria/issues/258

@ -13,6 +13,7 @@ Aria有以下特点:
- 支持文件FTP断点续传上传 - 支持文件FTP断点续传上传
+ 支持https地址下载 + 支持https地址下载
- 在配置文件中很容易就可以设置CA证书的信息 - 在配置文件中很容易就可以设置CA证书的信息
+ 支持[多线程分块下载](https://aria.laoyuyu.me/aria_doc/start/config.html),能更有效的发挥机器IO性能
+ 支持300、301、302重定向下载链接下载 + 支持300、301、302重定向下载链接下载
+ 下载支持文件长度动态增加,文件下载初始化时将不再占用过多的内存空间,见[动态长度配置](https://aria.laoyuyu.me/aria_doc/start/config.html#%E4%B8%8B%E8%BD%BD%E5%8A%A8%E6%80%81%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E) + 下载支持文件长度动态增加,文件下载初始化时将不再占用过多的内存空间,见[动态长度配置](https://aria.laoyuyu.me/aria_doc/start/config.html#%E4%B8%8B%E8%BD%BD%E5%8A%A8%E6%80%81%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E)
@ -30,8 +31,8 @@ Aria有以下特点:
[![Download](https://api.bintray.com/packages/arialyy/maven/AriaApi/images/download.svg)](https://bintray.com/arialyy/maven/AriaApi/_latestVersion) [![Download](https://api.bintray.com/packages/arialyy/maven/AriaApi/images/download.svg)](https://bintray.com/arialyy/maven/AriaApi/_latestVersion)
[![Download](https://api.bintray.com/packages/arialyy/maven/AriaCompiler/images/download.svg)](https://bintray.com/arialyy/maven/AriaCompiler/_latestVersion) [![Download](https://api.bintray.com/packages/arialyy/maven/AriaCompiler/images/download.svg)](https://bintray.com/arialyy/maven/AriaCompiler/_latestVersion)
```java ```java
compile 'com.arialyy.aria:aria-core:3.4.3' compile 'com.arialyy.aria:aria-core:3.4.4'
annotationProcessor 'com.arialyy.aria:aria-compiler:3.4.3' annotationProcessor 'com.arialyy.aria:aria-compiler:3.4.4'
``` ```
如果出现android support,请将 `compile 'com.arialyy.aria:aria-core:<last-version>'`替换为 如果出现android support,请将 `compile 'com.arialyy.aria:aria-core:<last-version>'`替换为
``` ```
@ -99,10 +100,10 @@ protected void onCreate(Bundle savedInstanceState) {
### 版本日志 ### 版本日志
+ v_3.4.3 + v_3.4.4
- 修复在activity 的onStop中取消注册导致的内存泄露问题 - 实现[多线程分块下载](https://aria.laoyuyu.me/aria_doc/start/config.html)
- fix bug https://github.com/AriaLyy/Aria/issues/258 - 修复`stopAll()`和`resumeAll()`导致的进度为0问题
- fix bug https://github.com/AriaLyy/Aria/issues/259 - 修复任务组添加header无效的问题
[更多版本记录](https://github.com/AriaLyy/Aria/blob/master/DEV_LOG.md) [更多版本记录](https://github.com/AriaLyy/Aria/blob/master/DEV_LOG.md)
@ -124,6 +125,8 @@ protected void onCreate(Bundle savedInstanceState) {
## 其他 ## 其他
有任何问题,可以在[issues](https://github.com/AriaLyy/Aria/issues)给我留言反馈。</br> 有任何问题,可以在[issues](https://github.com/AriaLyy/Aria/issues)给我留言反馈。</br>
在提交问题前,希望你已经查看过[wiki](https://aria.laoyuyu.me/aria_doc/)或搜索过[issues](https://github.com/AriaLyy/Aria/issues)。</br> 在提交问题前,希望你已经查看过[wiki](https://aria.laoyuyu.me/aria_doc/)或搜索过[issues](https://github.com/AriaLyy/Aria/issues)。</br>
交流群:524329160
*** ***
License License

Binary file not shown.

@ -7,7 +7,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application <application
android:name=".base.BaseApplication" android:name="com.arialyy.simple.base.BaseApplication"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
@ -19,7 +19,7 @@
<!--android:name=".test.TestGroupActivity"--> <!--android:name=".test.TestGroupActivity"-->
<!--android:name=".MainActivity"--> <!--android:name=".MainActivity"-->
<activity <activity
android:name=".test.AnyRunActivity" android:name="com.arialyy.simple.test.AnyRunActivity"
android:label="@string/app_name"> android:label="@string/app_name">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>

@ -30,8 +30,12 @@ import com.arialyy.simple.common.ConnectionChangeReceiver;
* Created by Lyy on 2016/9/27. * Created by Lyy on 2016/9/27.
*/ */
public class BaseApplication extends Application { public class BaseApplication extends Application {
private static BaseApplication INSTANCE;
@Override public void onCreate() { @Override public void onCreate() {
super.onCreate(); super.onCreate();
INSTANCE = this;
AbsFrame.init(this); AbsFrame.init(this);
Aria.init(this); Aria.init(this);
if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
@ -43,4 +47,13 @@ public class BaseApplication extends Application {
registerReceiver(new ConnectionChangeReceiver(), registerReceiver(new ConnectionChangeReceiver(),
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
} }
public static BaseApplication getApp() {
return INSTANCE;
}
@Override
public void onTerminate() {
super.onTerminate();
}
} }

@ -21,13 +21,13 @@ public class ConnectionChangeReceiver extends BroadcastReceiver {
NetworkInfo.State state = NetworkInfo.State state =
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (NetworkInfo.State.CONNECTED == state) { //if (NetworkInfo.State.CONNECTED == state) {
Aria.download(this).resumeAllTask(); // Aria.download(this).resumeAllTask();
Log.w(TAG, "恢复所有任务"); // Log.w(TAG, "恢复所有任务");
return; // return;
} //}
//
Aria.download(this).stopAllTask(); //Aria.download(this).stopAllTask();
//Log.w(TAG, "停止所有任务"); //Log.w(TAG, "停止所有任务");
//state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); //state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
//if (NetworkInfo.State.CONNECTED == state) { //if (NetworkInfo.State.CONNECTED == state) {

@ -4,8 +4,8 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTaskEntity; import com.arialyy.aria.core.download.DownloadTaskEntity;
import com.arialyy.aria.util.ALog;
import com.arialyy.simple.R; import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity; import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityTestBinding; import com.arialyy.simple.databinding.ActivityTestBinding;
@ -18,7 +18,7 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
AnyRunnModule module; AnyRunnModule module;
String[] urls; String[] urls;
int index = 0; int index = 0;
String URL = "http://static.gaoshouyou.com/d/12/0d/7f120f50c80d2e7b8c4ba24ece4f9cdd.apk"; //String URL = "http://static.gaoshouyou.com/d/12/0d/7f120f50c80d2e7b8c4ba24ece4f9cdd.apk";
//String URL = "http://58.213.157.242:8081/sims_file/rest/v1/file/mshd_touchscreen_ms/guideFile/41c33556-dc4a-4d78-bb76-b9f627f94448.mp4/%E5%85%AB%E5%8D%A6%E6%B4%B2%E5%8D%97%E4%BA%AC%E5%86%9C%E4%B8%9A%E5%98%89%E5%B9%B4%E5%8D%8E0511.mp4"; //String URL = "http://58.213.157.242:8081/sims_file/rest/v1/file/mshd_touchscreen_ms/guideFile/41c33556-dc4a-4d78-bb76-b9f627f94448.mp4/%E5%85%AB%E5%8D%A6%E6%B4%B2%E5%8D%97%E4%BA%AC%E5%86%9C%E4%B8%9A%E5%98%89%E5%B9%B4%E5%8D%8E0511.mp4";
//String URL = "http://d1.showself.com/download/showself_android-s236279_release.apk"; //String URL = "http://d1.showself.com/download/showself_android-s236279_release.apk";
//String URL = "http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk"; //String URL = "http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk";
@ -26,6 +26,7 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
//String URL = "https://dl.genymotion.com/releases/genymotion-2.12.1/genymotion-2.12.1-vbox.exe"; //String URL = "https://dl.genymotion.com/releases/genymotion-2.12.1/genymotion-2.12.1-vbox.exe";
//String URL = "ftp://192.168.29.140:21/download/SDK_Demo-release.apk"; //String URL = "ftp://192.168.29.140:21/download/SDK_Demo-release.apk";
//String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]猩球崛起3:终极之战BD国英双语中英双字.mkv"; //String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]猩球崛起3:终极之战BD国英双语中英双字.mkv";
private String URL = "https://www.bilibili.com/bangumi/play/ep77693";
@Override protected int setLayoutId() { @Override protected int setLayoutId() {
return R.layout.activity_test; return R.layout.activity_test;

@ -65,7 +65,7 @@ public class AnyRunnModule {
void start(String url) { void start(String url) {
mUrl = url; mUrl = url;
String path = Environment.getExternalStorageDirectory().getPath() + "/abcds.apk"; String path = Environment.getExternalStorageDirectory().getPath() + "/aaa.apk";
//File file = new File(path); //File file = new File(path);
//if (file.exists()) { //if (file.exists()) {
// file.delete(); // file.delete();
@ -73,12 +73,12 @@ public class AnyRunnModule {
Aria.download(this) Aria.download(this)
.load(url) .load(url)
//.addHeader("Accept-Encoding", "gzip") //.addHeader("Accept-Encoding", "gzip")
.addHeader("headers", "Referer: http://www.bilibili.com/") .addHeader("Referer", "http://www.bilibili.com/")
.addHeader("user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36") .addHeader("user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
.setRequestMode(RequestEnum.GET) .setRequestMode(RequestEnum.GET)
//.setUrlProxy(Proxy.NO_PROXY) //.setUrlProxy(Proxy.NO_PROXY)
.setFilePath(path) .setFilePath(path)
//.resetState() .resetState()
.start(); .start();
//String[] urls = new String[] { //String[] urls = new String[] {
// "http://cdn-s1.touchfound.net/1526449199142_3617.png", // "http://cdn-s1.touchfound.net/1526449199142_3617.png",

@ -39,7 +39,7 @@ task clean(type: Delete) {
ext { ext {
userOrg = 'arialyy' userOrg = 'arialyy'
groupId = 'com.arialyy.aria' groupId = 'com.arialyy.aria'
publishVersion = '3.4.4_dev4' publishVersion = '3.4.4'
// publishVersion = '1.0.3' //FTP插件 // publishVersion = '1.0.3' //FTP插件
repoName='maven' repoName='maven'
desc = 'android 下载框架' desc = 'android 下载框架'

Loading…
Cancel
Save