version:2.0.6

update:更新展讯签名
fix:修复灰度测试只获取一个app
add:
This commit is contained in:
2021-05-15 18:18:02 +08:00
parent 9ad90393b7
commit 048bdda1aa
15 changed files with 126 additions and 42 deletions

View File

@@ -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"

Binary file not shown.

View File

@@ -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;//为自身的跳过下载

View File

@@ -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<BaseResponse>() {
.subscribe(new Observer<BaseResponse<List<ForceDownloadData>>>() {
@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<List<ForceDownloadData>> listBaseResponse) {
if (listBaseResponse.code == 200) {
List<ForceDownloadData> 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 {

View File

@@ -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{" +

View File

@@ -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<BaseResponse> getTestUpdateObservable() {
public Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdateObservable() {
return mRetrofit
.create(CheckTestUpdateApi.class)
.getTestUpdate(Utils.getSerial())

View File

@@ -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";
//获取应用升级自启

View File

@@ -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<ResponseBody> getAppLimitApi(
@Field("key") String key,
@Field("sn") String sn

View File

@@ -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<ForceDownloadBean> getForceDownloadApi(
@Field("key") String key,
@Field("sn") String sn

View File

@@ -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<BaseResponse> getTestUpdate(
Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdate(
@Query("sn") String sn
);
}

View File

@@ -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;//为自身的跳过下载

View File

@@ -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());
}
}
}

View File

@@ -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<ForceDownloadData> 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<ForceDownloadData> 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");

View File

@@ -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)