Shrink snet APK, and prevent crashing
This commit is contained in:
parent
a747fdd27d
commit
b8eaff66fa
@ -39,7 +39,7 @@ public class Const {
|
|||||||
|
|
||||||
// Versions
|
// Versions
|
||||||
public static final int UPDATE_SERVICE_VER = 1;
|
public static final int UPDATE_SERVICE_VER = 1;
|
||||||
public static final int SNET_VER = 9;
|
public static final int SNET_VER = 10;
|
||||||
|
|
||||||
public static int MIN_MODULE_VER() {
|
public static int MIN_MODULE_VER() {
|
||||||
return MagiskManager.get().magiskVersionCode >= MAGISK_VER.REMOVE_LEGACY_LINK ? 1500 : 1400;
|
return MagiskManager.get().magiskVersionCode >= MAGISK_VER.REMOVE_LEGACY_LINK ? 1500 : 1400;
|
||||||
@ -81,7 +81,7 @@ public class Const {
|
|||||||
public static class Url {
|
public static class Url {
|
||||||
public static final String STABLE_URL = "https://raw.githubusercontent.com/topjohnwu/magisk_files/master/stable.json";
|
public static final String STABLE_URL = "https://raw.githubusercontent.com/topjohnwu/magisk_files/master/stable.json";
|
||||||
public static final String BETA_URL = "https://raw.githubusercontent.com/topjohnwu/magisk_files/master/beta.json";
|
public static final String BETA_URL = "https://raw.githubusercontent.com/topjohnwu/magisk_files/master/beta.json";
|
||||||
public static final String SNET_URL = "https://github.com/topjohnwu/magisk_files/raw/fc819e3974e96d0e4430a2957df4410971ebd6f3/snet.apk";
|
public static final String SNET_URL = "https://github.com/topjohnwu/magisk_files/raw/a300521162587da23e45010797bfd8c9a03594f6/snet.apk";
|
||||||
public static final String REPO_URL = "https://api.github.com/users/Magisk-Modules-Repo/repos?per_page=100&page=%d";
|
public static final String REPO_URL = "https://api.github.com/users/Magisk-Modules-Repo/repos?per_page=100&page=%d";
|
||||||
public static final String FILE_URL = "https://raw.githubusercontent.com/Magisk-Modules-Repo/%s/master/%s";
|
public static final String FILE_URL = "https://raw.githubusercontent.com/Magisk-Modules-Repo/%s/master/%s";
|
||||||
public static final String ZIP_URL = "https://github.com/Magisk-Modules-Repo/%s/archive/master.zip";
|
public static final String ZIP_URL = "https://github.com/Magisk-Modules-Repo/%s/archive/master.zip";
|
||||||
|
@ -16,12 +16,15 @@ android {
|
|||||||
release {
|
release {
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources true
|
shrinkResources true
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation 'com.google.android.gms:play-services-safetynet:7.0.0' /* The oldest version */
|
/* The oldest version */
|
||||||
|
implementation('com.google.android.gms:play-services-safetynet:7.0.0') {
|
||||||
|
exclude module: 'support-v4'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
3
snet/proguard-rules.pro
vendored
3
snet/proguard-rules.pro
vendored
@ -20,6 +20,7 @@
|
|||||||
# hide the original source file name.
|
# hide the original source file name.
|
||||||
#-renamesourcefileattribute SourceFile
|
#-renamesourcefileattribute SourceFile
|
||||||
|
|
||||||
-keep class com.topjohnwu.snet.* { *; }
|
-ignorewarnings
|
||||||
|
-keep class com.topjohnwu.snet.Snet { *; }
|
||||||
-dontwarn java.lang.invoke**
|
-dontwarn java.lang.invoke**
|
||||||
-dontwarn com.google.android.gms.common.GooglePlayServicesUtil**
|
-dontwarn com.google.android.gms.common.GooglePlayServicesUtil**
|
||||||
|
@ -5,13 +5,14 @@ import android.app.AlertDialog;
|
|||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.ContextWrapper;
|
import android.content.ContextWrapper;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.google.android.gms.common.GooglePlayServicesUtil;
|
import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||||
import com.google.android.gms.common.internal.zzg;
|
|
||||||
import com.google.android.gms.internal.zzlu;
|
import com.google.android.gms.internal.zzlu;
|
||||||
|
|
||||||
/* Decompiled and modified from GooglePlayServiceUtil.class */
|
/* Decompiled and modified from GooglePlayServiceUtil.class */
|
||||||
@ -20,7 +21,7 @@ public class ModdedGPSUtil {
|
|||||||
private static final String TAG = "GooglePlayServicesUtil";
|
private static final String TAG = "GooglePlayServicesUtil";
|
||||||
static String dexPath;
|
static String dexPath;
|
||||||
|
|
||||||
static Dialog getErrorDialog(int errCode, Activity activity, int requestCode) {
|
static Dialog getErrorDialog(int errCode, final Activity activity, final int requestCode) {
|
||||||
SwapResContext ctx = new SwapResContext(activity, dexPath);
|
SwapResContext ctx = new SwapResContext(activity, dexPath);
|
||||||
Resources res = ctx.getResources();
|
Resources res = ctx.getResources();
|
||||||
if (zzlu.zzQ(ctx) && errCode == 2) {
|
if (zzlu.zzQ(ctx) && errCode == 2) {
|
||||||
@ -33,8 +34,16 @@ public class ModdedGPSUtil {
|
|||||||
|
|
||||||
String btnMsg = GooglePlayServicesUtil.zzf(ctx, errCode);
|
String btnMsg = GooglePlayServicesUtil.zzf(ctx, errCode);
|
||||||
if (btnMsg != null) {
|
if (btnMsg != null) {
|
||||||
Intent intent = GooglePlayServicesUtil.zzan(errCode);
|
final Intent intent = GooglePlayServicesUtil.zzan(errCode);
|
||||||
builder.setPositiveButton(btnMsg, new zzg(activity, intent, requestCode));
|
builder.setPositiveButton(btnMsg, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int i) {
|
||||||
|
PackageManager pm = activity.getPackageManager();
|
||||||
|
if (intent != null && intent.resolveActivity(pm) != null)
|
||||||
|
activity.startActivityForResult(intent, requestCode);
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(errCode) {
|
switch(errCode) {
|
||||||
@ -116,20 +125,14 @@ public class ModdedGPSUtil {
|
|||||||
|
|
||||||
public SwapResContext(Context base, String apk) {
|
public SwapResContext(Context base, String apk) {
|
||||||
super(base);
|
super(base);
|
||||||
asset = getAssets(apk);
|
|
||||||
Resources res = base.getResources();
|
|
||||||
resources = new Resources(asset, res.getDisplayMetrics(), res.getConfiguration());
|
|
||||||
}
|
|
||||||
|
|
||||||
private AssetManager getAssets(String apk) {
|
|
||||||
try {
|
try {
|
||||||
AssetManager asset = AssetManager.class.newInstance();
|
asset = AssetManager.class.newInstance();
|
||||||
AssetManager.class.getMethod("addAssetPath", String.class).invoke(asset, apk);
|
AssetManager.class.getMethod("addAssetPath", String.class).invoke(asset, apk);
|
||||||
return asset;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
Resources res = base.getResources();
|
||||||
|
resources = new Resources(asset, res.getDisplayMetrics(), res.getConfiguration());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,8 +2,6 @@ package com.topjohnwu.snet;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
import com.google.android.gms.common.ConnectionResult;
|
import com.google.android.gms.common.ConnectionResult;
|
||||||
@ -31,7 +29,7 @@ public class SafetyNetHelper implements InvocationHandler, GoogleApiClient.Conne
|
|||||||
public static final int BASIC_PASS = 0x10;
|
public static final int BASIC_PASS = 0x10;
|
||||||
public static final int CTS_PASS = 0x20;
|
public static final int CTS_PASS = 0x20;
|
||||||
|
|
||||||
public static final int SNET_EXT_VER = 9;
|
public static final int SNET_EXT_VER = 10;
|
||||||
|
|
||||||
private GoogleApiClient mGoogleApiClient;
|
private GoogleApiClient mGoogleApiClient;
|
||||||
private Activity mActivity;
|
private Activity mActivity;
|
||||||
@ -81,14 +79,14 @@ public class SafetyNetHelper implements InvocationHandler, GoogleApiClient.Conne
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnectionFailed(@NonNull ConnectionResult result) {
|
public void onConnectionFailed(ConnectionResult result) {
|
||||||
if (GooglePlayServicesUtil.isUserRecoverableError(result.getErrorCode()))
|
if (GooglePlayServicesUtil.isUserRecoverableError(result.getErrorCode()))
|
||||||
ModdedGPSUtil.getErrorDialog(result.getErrorCode(), mActivity, 0).show();
|
ModdedGPSUtil.getErrorDialog(result.getErrorCode(), mActivity, 0).show();
|
||||||
invokeCallback(CONNECTION_FAIL);
|
invokeCallback(CONNECTION_FAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnected(@Nullable Bundle bundle) {
|
public void onConnected(Bundle bundle) {
|
||||||
// Create nonce
|
// Create nonce
|
||||||
byte[] nonce = new byte[24];
|
byte[] nonce = new byte[24];
|
||||||
new SecureRandom().nextBytes(nonce);
|
new SecureRandom().nextBytes(nonce);
|
||||||
|
Loading…
Reference in New Issue
Block a user