diff --git a/app/build.gradle b/app/build.gradle index 02a1b52..1f0b243 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,7 +51,6 @@ android { JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. channel_value: "newly" ] - signingConfig signingConfigs.debug /*********************************极光推送end************************************/ buildConfigField "String", "ROOT_URL", '"http://name.jiaoguanyi.cn/api/"' buildConfigField "String", "WebsocketURL", '"ws://47.119.147.245:2345"' @@ -67,9 +66,8 @@ android { JPUSH_PKGNAME: "com.jiaoguanyi.appstore", JPUSH_APPKEY : "52d81643665bb2cadacf0e9e", //JPush上注册的包名对应的appkey. JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. - channel_value: "newly" + channel_value: "beta" ] - signingConfig signingConfigs.debug /*********************************极光推送end************************************/ buildConfigField "String", "ROOT_URL", '"http://name.uiuios.com/api/"' buildConfigField "String", "WebsocketURL", '"ws://39.108.116.195:2345"' @@ -87,7 +85,6 @@ android { JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. channel_value: "official", ] - signingConfig signingConfigs.debug /*********************************极光推送end************************************/ buildConfigField "String", "ROOT_URL", '"http://partner.jiaoguanyi.com/api/"' buildConfigField "String", "WebsocketURL", '"ws://47.107.133.19:1234"' @@ -105,7 +102,6 @@ android { JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. channel_value: "zhongyou" ] - signingConfig signingConfigs.debug /*********************************极光推送end************************************/ buildConfigField "String", "ROOT_URL", '"https://jgy.jundunxueyuan.com/api/"' buildConfigField "String", "WebsocketURL", '"ws://39.98.59.202:2345"' @@ -121,24 +117,52 @@ android { //签名 signingConfigs { + zhanxun { + storeFile file("keystore/zhanxun.keystore") + storePassword "123456" + keyAlias "zhanxun" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } + debug { - storeFile file("src/main/doc/xueshibaoos.jks") + storeFile file("keystore/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" - v2SigningEnabled false + v1SigningEnabled true + v2SigningEnabled true } release { - storeFile file("src/main/doc/xueshibaoos.jks") + storeFile file("keystore/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" + v1SigningEnabled true v2SigningEnabled false } + } buildTypes { + zhanxun { + debuggable true + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + zipAlignEnabled true + signingConfig signingConfigs.zhanxun + applicationVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null) { + def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" + output.outputFileName = fileName + } + } + } + } debug { // 不显示Log //buildConfigField "boolean", "LOG_DEBUG", "false" diff --git a/app/src/main/doc/xueshibaoos.jks b/app/keystore/xueshibaoos.jks similarity index 100% rename from app/src/main/doc/xueshibaoos.jks rename to app/keystore/xueshibaoos.jks diff --git a/app/keystore/zhanxun.keystore b/app/keystore/zhanxun.keystore new file mode 100644 index 0000000..7c46fbc Binary files /dev/null and b/app/keystore/zhanxun.keystore differ diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/DiscardActivity.java b/app/src/main/java/com/mjsheng/myappstore/activity/DiscardActivity.java index 2adffe8..49a967d 100644 --- a/app/src/main/java/com/mjsheng/myappstore/activity/DiscardActivity.java +++ b/app/src/main/java/com/mjsheng/myappstore/activity/DiscardActivity.java @@ -1279,7 +1279,7 @@ public class DiscardActivity extends AppCompatActivity { com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); jsonObject.put("app_name", app_name); jsonObject.put("app_package", app_package); - int app_version_code = forceDownloadData.getApp_version_code(); + long app_version_code = forceDownloadData.getApp_version_code(); Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code); if (data.get(i).getApp_package().equals("com.jiaoguanyi.appstore")) { continue;//为自身的跳过下载 diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java index 9743d09..45ea992 100644 --- a/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java +++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java @@ -25,6 +25,7 @@ import com.mjsheng.myappstore.bean.BaseResponse; import com.mjsheng.myappstore.bean.BrowserBookmarks; import com.mjsheng.myappstore.bean.BrowserData; import com.mjsheng.myappstore.bean.ForceDownloadBean; +import com.mjsheng.myappstore.bean.ForceDownloadData; import com.mjsheng.myappstore.bean.LogoImg; import com.mjsheng.myappstore.bean.NetAndLaunchBean; import com.mjsheng.myappstore.bean.NewAppground; @@ -568,6 +569,9 @@ public class MainPresenter implements MainContact.Presenter { } + /** + * 获取灰度测试更新 + */ @Override public void checkTestUpdate() { if (JGYUtils.isOfficialVersion()) { @@ -576,26 +580,24 @@ public class MainPresenter implements MainContact.Presenter { } NetInterfaceManager.getInstance() .getTestUpdateObservable() - .subscribe(new Observer() { + .subscribe(new Observer>>() { @Override - public void onSubscribe(@NonNull Disposable d) { + public void onSubscribe(Disposable d) { Log.e("checkTestUpdate", "onSubscribe: "); } @Override - public void onNext(@NonNull BaseResponse response) { - if (response.code == 200) { - JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject(); - JGYUtils.getInstance().installTestAPK(jsonObject); + public void onNext(BaseResponse> listBaseResponse) { + if (listBaseResponse.code == 200) { + List APPlist = listBaseResponse.data; + JGYUtils.getInstance().installTestAPK(APPlist); } else { - Log.e("checkTestUpdate", "onNext: " + response); + Log.e("checkTestUpdate", "onNext: " + listBaseResponse.msg); } - Log.e("checkTestUpdate", "onNext: "); - } @Override - public void onError(@NonNull Throwable e) { + public void onError(Throwable e) { Log.e("checkTestUpdate", "onError: " + e.getMessage()); onComplete(); } @@ -695,7 +697,7 @@ public class MainPresenter implements MainContact.Presenter { // if (null != batchList && batchList.size() > 1) { // Log.e("getDeviceBatch", "onNext: " + "deleteOtherApp"); // if (!BuildConfig.DEBUG) { - JGYUtils.getInstance().deleteOtherApp(packageList); + JGYUtils.getInstance().deleteOtherApp(packageList); // } // } else { // Log.e("getDeviceBatch", "批次为空"); @@ -1271,10 +1273,10 @@ public class MainPresenter implements MainContact.Presenter { @Override public void onNext(BaseResponse baseResponse) { - Log.e("getDeveloper", "onNext: "); if (baseResponse.code == 200) { JSONObject jsonObject = (JSONObject) JSON.toJSON(baseResponse.data); int is_developer = jsonObject.getInteger("is_developer"); + Log.e("getDeveloper", "onNext: " + is_developer); //后台1是0否 底层0是1否 JGYUtils.getInstance().setDeveloperOptions(is_developer == 0 ? 1 : 0); } else { diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/ForceDownloadData.java b/app/src/main/java/com/mjsheng/myappstore/bean/ForceDownloadData.java index 5020d35..57d84dd 100644 --- a/app/src/main/java/com/mjsheng/myappstore/bean/ForceDownloadData.java +++ b/app/src/main/java/com/mjsheng/myappstore/bean/ForceDownloadData.java @@ -15,8 +15,9 @@ public class ForceDownloadData implements Serializable { private String app_name; private String app_package; private String app_url; - private int app_version_code; private String app_id; + private String app_md5; + private long app_version_code; public String getApp_package() { return app_package; @@ -34,14 +35,6 @@ public class ForceDownloadData implements Serializable { this.app_url = app_url; } - public int getApp_version_code() { - return app_version_code; - } - - public void setApp_version_code(int app_version_code) { - this.app_version_code = app_version_code; - } - public String getApp_name() { return app_name; } @@ -58,6 +51,22 @@ public class ForceDownloadData implements Serializable { this.app_id = app_id; } + public long getApp_version_code() { + return app_version_code; + } + + public void setApp_version_code(long app_version_code) { + this.app_version_code = app_version_code; + } + + public String getApp_md5() { + return app_md5; + } + + public void setApp_md5(String app_md5) { + this.app_md5 = app_md5; + } + @Override public String toString() { return "ForceDownloadData{" + diff --git a/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java b/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java index 7b36b65..39833aa 100644 --- a/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java +++ b/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java @@ -9,6 +9,7 @@ import com.mjsheng.myappstore.bean.BaseResponse; import com.mjsheng.myappstore.bean.BrowserBookmarks; import com.mjsheng.myappstore.bean.BrowserData; import com.mjsheng.myappstore.bean.ForceDownloadBean; +import com.mjsheng.myappstore.bean.ForceDownloadData; import com.mjsheng.myappstore.bean.LogoImg; import com.mjsheng.myappstore.bean.NetAndLaunchBean; import com.mjsheng.myappstore.bean.NewAppground; @@ -258,7 +259,7 @@ public class NetInterfaceManager { } - public Observable getTestUpdateObservable() { + public Observable>> getTestUpdateObservable() { return mRetrofit .create(CheckTestUpdateApi.class) .getTestUpdate(Utils.getSerial()) diff --git a/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java b/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java index 6e2354d..ccca553 100644 --- a/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java +++ b/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java @@ -32,8 +32,10 @@ public class URLAddress { public static final String SET_APPINSIDEWEB = HTTP_TAG_HEAD_NEW + "Appground"; //浏览器黑白名单地址 public static final String SET_BROWSER_LIST = HTTP_TAG_HEAD_NEW + "browser"; + //强制安装应用 + public static final String GET_FORCE_INSTALL_LIST = "forceinstall/index"; //应用白名单 - public static final String SET_WHITE_PACKAGE_LIST = HTTP_TAG_HEAD_NEW + "firmware/index"; + public static final String SET_WHITE_PACKAGE_LIST = "firmware/index"; //获取隐藏桌面图标 public static final String GET_HIDE_DESKTOPICON = HTTP_TAG_HEAD_NEW + "Icon"; //获取应用升级自启 diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/AppLimitApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/AppLimitApi.java index 5cbcd7c..bb57846 100644 --- a/app/src/main/java/com/mjsheng/myappstore/network/api/AppLimitApi.java +++ b/app/src/main/java/com/mjsheng/myappstore/network/api/AppLimitApi.java @@ -1,5 +1,7 @@ package com.mjsheng.myappstore.network.api; +import com.mjsheng.myappstore.network.URLAddress; + import io.reactivex.Observable; import okhttp3.ResponseBody; import retrofit2.http.Field; @@ -15,7 +17,7 @@ import retrofit2.http.POST; public interface AppLimitApi { @FormUrlEncoded - @POST("firmware/index") + @POST(URLAddress.SET_WHITE_PACKAGE_LIST) Observable getAppLimitApi( @Field("key") String key, @Field("sn") String sn diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/ForceDownloadApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/ForceDownloadApi.java index 0d11d18..c49c347 100644 --- a/app/src/main/java/com/mjsheng/myappstore/network/api/ForceDownloadApi.java +++ b/app/src/main/java/com/mjsheng/myappstore/network/api/ForceDownloadApi.java @@ -1,6 +1,7 @@ package com.mjsheng.myappstore.network.api; import com.mjsheng.myappstore.bean.ForceDownloadBean; +import com.mjsheng.myappstore.network.URLAddress; import io.reactivex.Observable; import retrofit2.http.Field; @@ -16,7 +17,7 @@ import retrofit2.http.POST; public interface ForceDownloadApi { @FormUrlEncoded - @POST("forceinstall/index") + @POST(URLAddress.GET_FORCE_INSTALL_LIST) Observable getForceDownloadApi( @Field("key") String key, @Field("sn") String sn diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java index 70e02cb..2a80857 100644 --- a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java +++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java @@ -1,15 +1,18 @@ package com.mjsheng.myappstore.network.api.newapi; import com.mjsheng.myappstore.bean.BaseResponse; +import com.mjsheng.myappstore.bean.ForceDownloadData; import com.mjsheng.myappstore.network.URLAddress; +import java.util.List; + import io.reactivex.Observable; import retrofit2.http.GET; import retrofit2.http.Query; public interface CheckTestUpdateApi { @GET(URLAddress.GET_SN_APP_TEST) - Observable getTestUpdate( + Observable>> getTestUpdate( @Query("sn") String sn ); } diff --git a/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java b/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java index c48ae11..1a72a8d 100644 --- a/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java +++ b/app/src/main/java/com/mjsheng/myappstore/server/DiscardServer.java @@ -862,7 +862,7 @@ public class DiscardServer extends Service { JSONObject jsonObject = new JSONObject(); jsonObject.put("app_name", app_name); jsonObject.put("app_package", app_package); - int app_version_code = forceDownloadData.getApp_version_code(); + long app_version_code = forceDownloadData.getApp_version_code(); Log.e("forceDownload", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code); if (data.get(i).getApp_package().equals("com.jiaoguanyi.appstore")) { continue;//为自身的跳过下载 diff --git a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java index 1418b3c..6544dab 100644 --- a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java +++ b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java @@ -575,17 +575,17 @@ public class GuardService extends Service { } @Download.onTaskFail - void taskFail(DownloadTask task) { + void taskFail(DownloadTask task, Exception e) { try { final String filepath = task.getFilePath(); final String packageName = task.getExtendField(); JSONObject jsonObject = JSON.parseObject(task.getExtendField()); String app_name = jsonObject.getString("app_name"); String app_package = jsonObject.getString("app_package"); - Log.e("aria", "下载失败:" + packageName + "filepath" + filepath); + Log.e("aria", "下载失败: " + packageName + "filepath: " + filepath + "Exception: " + e.getMessage()); // ToastUtil.show(app_name + "\t:下载失败"); - } catch (Exception e) { - Log.e("aria", "taskFail"); + } catch (Exception e1) { + Log.e("aria", "taskFail: " + e1.getMessage()); } } } diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java index 7270abf..2f85acc 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java @@ -473,11 +473,13 @@ public class JGYUtils { String app_package = forceDownloadData.getApp_package(); String app_url = forceDownloadData.getApp_url(); String app_id = forceDownloadData.getApp_id(); + String app_md5 = forceDownloadData.getApp_md5(); JSONObject jsonObject = new JSONObject(); jsonObject.put("app_name", app_name); jsonObject.put("app_package", app_package); jsonObject.put("app_id", app_id); - int app_version_code = forceDownloadData.getApp_version_code(); + jsonObject.put("MD5", app_md5); + long app_version_code = forceDownloadData.getApp_version_code(); Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code); if (BuildConfig.APPLICATION_ID.equals(data.get(i).getApp_package())) { continue;//为自身的跳过下载 @@ -527,6 +529,10 @@ public class JGYUtils { SaveListUtils.sendForceAPP(mContext); } + /** + * 获取教管壹下载,没什么用了 + * @param forceDownloadDataList + */ private void getSelfDownload(List forceDownloadDataList) { for (ForceDownloadData forceDownloadData : forceDownloadDataList) { if ("com.jiaoguanyi.store".equals(forceDownloadData.getApp_package())) { @@ -576,6 +582,9 @@ public class JGYUtils { } } + /** + * @param jsonObject + */ public void installTestAPK(JsonObject jsonObject) { String url = jsonObject.get("app_url").getAsString(); int versionCode = jsonObject.get("app_version_code").getAsInt(); @@ -600,6 +609,37 @@ public class JGYUtils { } } + + /** + * 安装灰度测试app + * @param dataList + */ + public void installTestAPK(List dataList) { + for (ForceDownloadData data : dataList) { + String url = data.getApp_url(); + long versionCode = data.getApp_version_code(); + String packageName = data.getApp_package(); + String app_name = data.getApp_name(); +// String app_id = jsonObject.get("app_id").getAsString(); + JSONObject object = new JSONObject(); + object.put("app_name", app_name); + object.put("app_package", packageName); +// object.put("app_id", app_id); + PackageManager pm = mContext.getPackageManager(); + PackageInfo packageInfo = null; + try { + packageInfo = pm.getPackageInfo(packageName, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (packageInfo == null || packageInfo.versionCode < versionCode) { + Utils.ariaDownload(mContext, url, object); + } else { + Log.e("installTestAPK", "TestAPK: " + packageName + "\t无更新"); + } + } + } + public void installDesktop(JSONObject jsonObject) { String app_name = jsonObject.getString("app_name"); String app_url = jsonObject.getString("app_url"); diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java index d94f07c..1c9b73b 100644 --- a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java +++ b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java @@ -966,7 +966,7 @@ public class Utils { Log.e("ariaDownload", "filenameMD5=" + filenameMD5); Log.e("ariaDownload", "fileMD5=" + fileMD5); //后端还没有完成json字段的MD5,暂时用文件名获取 - if (fileMD5.equalsIgnoreCase(filenameMD5)) { + if (fileMD5.equalsIgnoreCase(urlMD5)) { ApkUtils.installApp(context, file.getAbsolutePath()); } else { Aria.download(context)