diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9edc6ce..13473fd 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -12,30 +12,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
-
+
@@ -44,8 +33,7 @@
-
-
+
@@ -56,17 +44,29 @@
-
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -75,67 +75,62 @@
-
-
+
+
-
+
-
-
+
+
-
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
+
+
@@ -143,8 +138,8 @@
-
-
+
+
@@ -152,15 +147,6 @@
-
-
-
-
-
-
-
-
-
@@ -173,8 +159,16 @@
paramsMap
+ CheckBean
+ T
+
+
+
+
+
+
@@ -182,23 +176,28 @@
-
+
@@ -211,9 +210,6 @@
-
-
-
@@ -226,6 +222,12 @@
+
+
+
+
+
+
@@ -256,6 +258,14 @@
+
+
+
+
+
+
+
+
@@ -291,6 +301,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -322,6 +342,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -336,14 +368,20 @@
+
+
+
-
+
+
+
+
-
+
@@ -436,50 +474,51 @@
1589961055490
+
+ 1589967108571
+
+
+
+ 1589967108572
+
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- file://$PROJECT_DIR$/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java
- 44
-
-
-
-
-
+
+
+
@@ -510,13 +549,6 @@
-
-
-
-
-
-
-
@@ -531,13 +563,6 @@
-
-
-
-
-
-
-
@@ -556,13 +581,6 @@
-
-
-
-
-
-
-
@@ -577,32 +595,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -634,24 +626,20 @@
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
@@ -663,51 +651,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
-
-
+
+
+
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/README.md b/README.md
index 13f311c..4085125 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ allprojects {
然后把 ZDloader 写上:
[](https://jitpack.io/#LillteZheng/AppUpdate)
```
-implementation 'com.github.LillteZheng:AppUpdate:v1.3'
+implementation 'com.github.LillteZheng:AppUpdate:v1.4'
```
**由于使用了 retrofit 和rxjava 等框架,所以,还需要在您的工程中添加以下关联,不然报错**
@@ -109,6 +109,12 @@ ZDown.with(MainActivity.this)
```
+## 二、混淆
+内部已混淆,但如果使用 CheckListener 传入 bean 类,bean类需要自己混淆,eg:
+```
+-keep class com.zhengsr.appupdate.bean.** { *; }
+```
+
ZDown 为程序入口,它提供以下方法:
- pause() 暂停任务
diff --git a/app/build.gradle b/app/build.gradle
index d606bb2..c00b057 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,9 +13,16 @@ android {
}
buildTypes {
release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ //开启混淆
+ minifyEnabled true
+
+ // 移除无用的resource文件
+ shrinkResources true
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'update-proguard-rules.pro'
}
+
+
+
}
}
@@ -37,5 +44,4 @@ dependencies {
implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'com.daimajia.numberprogressbar:library:1.4@aar'
-
}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index f1b4245..d467765 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -19,3 +19,54 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
+
+
+# 保留所有的本地native方法不被混淆
+-keepclasseswithmembernames class * {
+ native ;
+}
+
+# 保留了继承自Activity、Application这些类的子类
+# 因为这些子类有可能被外部调用
+# 比如第一行就保证了所有Activity的子类不要被混淆
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+
+# 如果有引用android-support-v4.jar包,可以添加下面这行
+-keep public class com.null.test.ui.fragment.** {*;}
+
+# 保留Activity中的方法参数是view的方法,
+# 从而我们在layout里面编写onClick就不会影响
+-keepclassmembers class * extends android.app.Activity {
+ public void * (android.view.View);
+}
+
+# 枚举类不能被混淆
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+
+
+
+
+-keepattributes Signature
+
+
+
+
+# Application classes that will be serialized/deserialized over Gson
+-keep class com.zhengsr.appupdate.bean.** { *; }
+
+
+
+
+
diff --git a/app/release/app-release.apk b/app/release/app-release.apk
new file mode 100644
index 0000000..3e8966e
Binary files /dev/null and b/app/release/app-release.apk differ
diff --git a/app/release/output.json b/app/release/output.json
new file mode 100644
index 0000000..c429e31
--- /dev/null
+++ b/app/release/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
diff --git a/app/src/main/java/com/zhengsr/appupdate/MainActivity.java b/app/src/main/java/com/zhengsr/appupdate/MainActivity.java
index 7d98c8b..3ac2609 100644
--- a/app/src/main/java/com/zhengsr/appupdate/MainActivity.java
+++ b/app/src/main/java/com/zhengsr/appupdate/MainActivity.java
@@ -5,15 +5,12 @@
import android.os.Bundle;
import android.util.Log;
import android.view.View;
-import android.widget.Button;
-import com.daimajia.numberprogressbar.NumberProgressBar;
+import com.alibaba.fastjson.JSON;
+import com.zhengsr.appupdate.bean.CheckBean;
import com.zhengsr.zdwon_lib.ZDown;
-import com.zhengsr.zdwon_lib.bean.ZBean;
import com.zhengsr.zdwon_lib.callback.CheckListener;
-import com.zhengsr.zdwon_lib.callback.TaskListener;
-import com.zhengsr.zdwon_lib.utils.ZCommontUitls;
public class MainActivity extends AppCompatActivity {
@@ -44,9 +41,30 @@ protected void onCreate(Bundle savedInstanceState) {
public void check(View view) {
+ ZDown.checkWith(this)
+ .url("http://app.huake-tek.com/api/v1/channelInfo.co")
+ .get()
+ .params("devpkg", "com.hk.hkwelcome")
+ .listener(new CheckListener() {
+ @Override
+ public void onCheck(String data) {
+ Log.d(TAG, "zsr onCheck: "+data);
- ZDown.checkWith(this)
+ CheckBean parse = JSON.parseObject(data, CheckBean.class);
+ Log.d(TAG, "zsr onCheck: "+parse);
+
+
+ }
+
+ @Override
+ public void onFail(String errorMsg) {
+ Log.d(TAG, "zsr onFail: "+errorMsg);
+ }
+ }).check();
+
+
+ /* ZDown.checkWith(this)
.url(jsonUrlTest)
.get()
.listener(new CheckListener() {
@@ -110,7 +128,7 @@ public void onFail(String errorMsg) {
public void onFail(String errorMsg) {
Log.d(TAG, "zsr onFail: " + errorMsg);
}
- }).check();
+ }).check();*/
}
diff --git a/app/src/main/java/com/zhengsr/appupdate/bean/CheckBean.java b/app/src/main/java/com/zhengsr/appupdate/bean/CheckBean.java
new file mode 100644
index 0000000..5bf4161
--- /dev/null
+++ b/app/src/main/java/com/zhengsr/appupdate/bean/CheckBean.java
@@ -0,0 +1,229 @@
+package com.zhengsr.appupdate.bean;
+
+/**
+ * @author by zhengshaorui on 2019/9/6
+ * Describe:
+ */
+public class CheckBean {
+
+
+ /**
+ * erroCode : 0
+ * message : null
+ * data :
+ */
+
+ private int erroCode;
+ private Object message;
+ private DataBean data;
+
+ public int getErroCode() {
+ return erroCode;
+ }
+
+ public void setErroCode(int erroCode) {
+ this.erroCode = erroCode;
+ }
+
+ public Object getMessage() {
+ return message;
+ }
+
+ public void setMessage(Object message) {
+ this.message = message;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "CheckBean{" +
+ "erroCode=" + erroCode +
+ ", message=" + message +
+ ", data=" + data +
+ '}';
+ }
+
+ public static class DataBean {
+ /**
+ * channelid : 10
+ * channelname : 欢迎词
+ * remark : 1、增加多人签名功能,效率更高、2、增加多种字体,满足会议需求
+ * packagename : com.hk.hkwelcome
+ * classname :
+ * img :
+ * apk :
+ * tag : null
+ * isdelete : null
+ * versioncode : 2
+ * versionname : 1.1.0.9
+ * uptime : 2020-05-20 15:27:33
+ * apksize : 42342500
+ * downtimes : 0
+ * isforce : 0
+ */
+
+ private int channelid;
+ private String channelname;
+ private String remark;
+ private String packagename;
+ private String classname;
+ private String img;
+ private String apk;
+ private Object tag;
+ private Object isdelete;
+ private String versioncode;
+ private String versionname;
+ private String uptime;
+ private int apksize;
+ private int downtimes;
+ private int isforce;
+
+ public int getChannelid() {
+ return channelid;
+ }
+
+ public void setChannelid(int channelid) {
+ this.channelid = channelid;
+ }
+
+ public String getChannelname() {
+ return channelname;
+ }
+
+ public void setChannelname(String channelname) {
+ this.channelname = channelname;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public String getPackagename() {
+ return packagename;
+ }
+
+ public void setPackagename(String packagename) {
+ this.packagename = packagename;
+ }
+
+ public String getClassname() {
+ return classname;
+ }
+
+ public void setClassname(String classname) {
+ this.classname = classname;
+ }
+
+ public String getImg() {
+ return img;
+ }
+
+ public void setImg(String img) {
+ this.img = img;
+ }
+
+ public String getApk() {
+ return apk;
+ }
+
+ public void setApk(String apk) {
+ this.apk = apk;
+ }
+
+ public Object getTag() {
+ return tag;
+ }
+
+ public void setTag(Object tag) {
+ this.tag = tag;
+ }
+
+ public Object getIsdelete() {
+ return isdelete;
+ }
+
+ public void setIsdelete(Object isdelete) {
+ this.isdelete = isdelete;
+ }
+
+ public String getVersioncode() {
+ return versioncode;
+ }
+
+ public void setVersioncode(String versioncode) {
+ this.versioncode = versioncode;
+ }
+
+ public String getVersionname() {
+ return versionname;
+ }
+
+ public void setVersionname(String versionname) {
+ this.versionname = versionname;
+ }
+
+ public String getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(String uptime) {
+ this.uptime = uptime;
+ }
+
+ public int getApksize() {
+ return apksize;
+ }
+
+ public void setApksize(int apksize) {
+ this.apksize = apksize;
+ }
+
+ public int getDowntimes() {
+ return downtimes;
+ }
+
+ public void setDowntimes(int downtimes) {
+ this.downtimes = downtimes;
+ }
+
+ public int getIsforce() {
+ return isforce;
+ }
+
+ public void setIsforce(int isforce) {
+ this.isforce = isforce;
+ }
+
+ @Override
+ public String toString() {
+ return "DataBean{" +
+ "channelid=" + channelid +
+ ", channelname='" + channelname + '\'' +
+ ", remark='" + remark + '\'' +
+ ", packagename='" + packagename + '\'' +
+ ", classname='" + classname + '\'' +
+ ", img='" + img + '\'' +
+ ", apk='" + apk + '\'' +
+ ", tag=" + tag +
+ ", isdelete=" + isdelete +
+ ", versioncode='" + versioncode + '\'' +
+ ", versionname='" + versionname + '\'' +
+ ", uptime='" + uptime + '\'' +
+ ", apksize=" + apksize +
+ ", downtimes=" + downtimes +
+ ", isforce=" + isforce +
+ '}';
+ }
+ }
+}
diff --git a/update-lib/build.gradle b/update-lib/build.gradle
index 8be87c0..b521e29 100644
--- a/update-lib/build.gradle
+++ b/update-lib/build.gradle
@@ -19,8 +19,10 @@ android {
buildTypes {
release {
minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'update-proguard-rules.pro'
}
+
+
}
}
diff --git a/update-lib/consumer-rules.pro b/update-lib/consumer-rules.pro
index e69de29..77d0526 100644
--- a/update-lib/consumer-rules.pro
+++ b/update-lib/consumer-rules.pro
@@ -0,0 +1,49 @@
+-dontwarn com.zhengsr.zdwon_lib.**
+-keep public class com.zhengsr.zdwon_lib.bean.*
+-keep public class com.zhengsr.zdwon_lib.callback.*
+
+
+
+#第三方类
+#okhttp3.x
+-dontwarn com.squareup.okhttp3.**
+-keep class com.squareup.okhttp3.** { *;}
+-dontwarn okio.**
+
+
+# Retrofit
+-dontnote retrofit2.Platform
+-dontnote retrofit2.Platform$IOS$MainThreadExecutor
+-dontwarn retrofit2.Platform$Java8
+-keepattributes Signature
+-keepattributes Exceptions
+
+
+#----------- rxjava rxandroid----------------
+-dontwarn sun.misc.**
+-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
+ long producerIndex;
+ long consumerIndex;
+}
+-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
+ rx.internal.util.atomic.LinkedQueueNode producerNode;
+}
+-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
+ rx.internal.util.atomic.LinkedQueueNode consumerNode;
+}
+-dontnote rx.internal.util.PlatformDependent
+
+
+
+
+-dontwarn android.net.http.**
+-keep class android.net.http.** { *;}
+
+
+#fastjson
+
+-keepattributes Signature
+-keepattributes *Annotation*
+-dontwarn com.alibaba.fastjson.**
+-keep class com.alibaba.fastjson.** { *; }
+
diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java
index ef0499b..da64ede 100644
--- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java
+++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java
@@ -69,4 +69,22 @@ public class ZTaskBean {
* 是否为 get 请求,默认为true
*/
public boolean isGet = true;
+
+ @Override
+ public String toString() {
+ return "ZTaskBean{" +
+ "context=" + context +
+ ", url='" + url + '\'' +
+ ", threadCount=" + threadCount +
+ ", reFreshTime=" + reFreshTime +
+ ", filePath='" + filePath + '\'' +
+ ", fileName='" + fileName + '\'' +
+ ", paramsMap=" + paramsMap +
+ ", allowBackDownload=" + allowBackDownload +
+ ", useBreakPoint=" + useBreakPoint +
+ ", fileLength=" + fileLength +
+ ", listener=" + listener +
+ ", isGet=" + isGet +
+ '}';
+ }
}
diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java
index 1c1bea7..69c40f5 100644
--- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java
+++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java
@@ -1,5 +1,7 @@
package com.zhengsr.zdwon_lib.callback;
+import android.util.Log;
+
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
@@ -8,7 +10,7 @@
* describe: 检查版本的listener
*/
public abstract class CheckListener implements BaseListener {
-
+ private static final String TAG = "CheckListener";
private Class classType;
public CheckListener() {
try {
@@ -20,10 +22,12 @@ public CheckListener() {
}
}
+
public Class getClassType() {
return classType;
}
+
public abstract void onCheck(T data);
}
diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java
index 2ef33e7..c734a64 100644
--- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java
+++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java
@@ -1,6 +1,7 @@
package com.zhengsr.zdwon_lib.entrance;
import android.content.Context;
+import android.util.Log;
import com.zhengsr.zdwon_lib.bean.ZTaskBean;
import com.zhengsr.zdwon_lib.callback.CheckListener;
@@ -13,7 +14,7 @@
* Describe:
*/
public class CheckRequest {
-
+ private static final String TAG = "CheckRequest";
private ZTaskBean mBean;
public static CheckRequest get(Context context) {
diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java
index 7da02aa..2166b13 100644
--- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java
+++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java
@@ -1,7 +1,10 @@
package com.zhengsr.zdwon_lib.entrance.imp.task;
+import android.util.Log;
+
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
import com.zhengsr.zdwon_lib.bean.ZTaskBean;
import com.zhengsr.zdwon_lib.callback.CheckListener;
import com.zhengsr.zdwon_lib.entrance.imp.net.ZHttpCreate;
@@ -42,12 +45,13 @@ public void onResponse(Call call, Response response) {
String json = response.body();
- Class> mclazz = listener.getClassType();
+ Class mclazz = listener.getClassType();
if (mclazz == null || mclazz == String.class){
listener.onCheck(json);
}else{
Object data = JSON.parseObject(json, mclazz);
+
listener.onCheck(data);
}
diff --git a/update-lib/src/main/res/values/strings.xml b/update-lib/src/main/res/values/strings.xml
index 6fc1d63..f11f745 100644
--- a/update-lib/src/main/res/values/strings.xml
+++ b/update-lib/src/main/res/values/strings.xml
@@ -1,3 +1,3 @@
- update-lib
+
diff --git a/update-lib/proguard-rules.pro b/update-lib/update-proguard-rules.pro
similarity index 99%
rename from update-lib/proguard-rules.pro
rename to update-lib/update-proguard-rules.pro
index f1b4245..4a06014 100644
--- a/update-lib/proguard-rules.pro
+++ b/update-lib/update-proguard-rules.pro
@@ -19,3 +19,5 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
+
+