feat: checks plugin version
This commit is contained in:
2
.idea/modules.xml
generated
2
.idea/modules.xml
generated
@@ -2,8 +2,8 @@
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/Auto.js.iml" filepath="$PROJECT_DIR$/Auto.js.iml" />
|
||||
<module fileurl="file://E:\YiBin\AndroidStudioProjects\NoRootScriptDroid\Auto.js.iml" filepath="E:\YiBin\AndroidStudioProjects\NoRootScriptDroid\Auto.js.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/NoRootScriptDroid.iml" filepath="$PROJECT_DIR$/NoRootScriptDroid.iml" />
|
||||
<module fileurl="file://C:\Users\Stardust\Documents\AndroidProjects\Auto.js\NoRootScriptDroid.iml" filepath="C:\Users\Stardust\Documents\AndroidProjects\Auto.js\NoRootScriptDroid.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/autojs/autojs.iml" filepath="$PROJECT_DIR$/autojs/autojs.iml" />
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.stardust.scriptdroid.build;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
|
||||
import com.stardust.BuildConfig;
|
||||
import com.stardust.pio.UncheckedIOException;
|
||||
import com.stardust.scriptdroid.BuildConfig;
|
||||
import com.stardust.scriptdroid.ui.build.BuildActivity;
|
||||
import com.stardust.util.DeveloperUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -20,7 +22,7 @@ public class ApkBuilderPluginHelper {
|
||||
private static final String PLUGIN_PACKAGE_NAME = "org.autojs.apkbuilderplugin";
|
||||
private static final String TEMPLATE_APK_PATH = "template.apk";
|
||||
|
||||
public static boolean checkPlugin(Context context) {
|
||||
public static boolean isPluginAvailable(Context context) {
|
||||
return DeveloperUtils.checkSignature(context, PLUGIN_PACKAGE_NAME);
|
||||
}
|
||||
|
||||
@@ -37,4 +39,17 @@ public class ApkBuilderPluginHelper {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getPluginVersion(Context context) {
|
||||
try {
|
||||
PackageInfo info = context.getPackageManager().getPackageInfo(PLUGIN_PACKAGE_NAME, 0);
|
||||
return info.versionCode;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static int getSuitablePluginVersion() {
|
||||
return BuildConfig.VERSION_CODE - 200;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,12 @@ import android.support.design.widget.TextInputEditText;
|
||||
import android.support.design.widget.TextInputLayout;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.stardust.autojs.project.ProjectConfig;
|
||||
import com.stardust.scriptdroid.BuildConfig;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.autojs.build.AutoJsApkBuilder;
|
||||
import com.stardust.scriptdroid.build.ApkBuilderPluginHelper;
|
||||
@@ -35,6 +35,7 @@ import org.androidannotations.annotations.ViewById;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
@@ -82,25 +83,41 @@ public class BuildActivity extends BaseActivity implements AutoJsApkBuilder.Prog
|
||||
if (sourcePath != null) {
|
||||
setupWithSourceFile(new ScriptFile(sourcePath));
|
||||
}
|
||||
showPluginDownloadDialogIfNeeded();
|
||||
checkApkBuilderPlugin();
|
||||
}
|
||||
|
||||
private void showPluginDownloadDialogIfNeeded() {
|
||||
if (ApkBuilderPluginHelper.checkPlugin(this)) {
|
||||
private void checkApkBuilderPlugin() {
|
||||
if (!ApkBuilderPluginHelper.isPluginAvailable(this)) {
|
||||
showPluginDownloadDialog(R.string.no_apk_builder_plugin, true);
|
||||
return;
|
||||
}
|
||||
int version = ApkBuilderPluginHelper.getPluginVersion(this);
|
||||
if (version < 0) {
|
||||
showPluginDownloadDialog(R.string.no_apk_builder_plugin, true);
|
||||
return;
|
||||
}
|
||||
if (version < ApkBuilderPluginHelper.getSuitablePluginVersion()) {
|
||||
showPluginDownloadDialog(R.string.apk_builder_plugin_version_too_low, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void showPluginDownloadDialog(int msgRes, boolean finishIfCanceled) {
|
||||
new ThemeColorMaterialDialogBuilder(this)
|
||||
.content(R.string.no_apk_builder_plugin)
|
||||
.content(msgRes)
|
||||
.positiveText(R.string.ok)
|
||||
.negativeText(R.string.text_exit)
|
||||
.onPositive((dialog, which) -> downloadPlugin())
|
||||
.onNegative((dialog, which) -> finish())
|
||||
.onNegative((dialog, which) -> {
|
||||
if (finishIfCanceled) finish();
|
||||
})
|
||||
.show();
|
||||
|
||||
}
|
||||
|
||||
private void downloadPlugin() {
|
||||
IntentUtil.browse(this, "https://www.autojs.org/assets/autojs/plugin.apk");
|
||||
IntentUtil.browse(this, String.format(Locale.getDefault(),
|
||||
"https://i.autojs.org/autojs/plugin/%d.apk", ApkBuilderPluginHelper.getSuitablePluginVersion()));
|
||||
}
|
||||
|
||||
private void setupWithSourceFile(ScriptFile file) {
|
||||
@@ -165,7 +182,7 @@ public class BuildActivity extends BaseActivity implements AutoJsApkBuilder.Prog
|
||||
|
||||
@Click(R.id.fab)
|
||||
void buildApk() {
|
||||
if (!ApkBuilderPluginHelper.checkPlugin(this)) {
|
||||
if (!ApkBuilderPluginHelper.isPluginAvailable(this)) {
|
||||
Toast.makeText(this, R.string.text_apk_builder_plugin_unavailable, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -350,4 +350,5 @@
|
||||
<string name="text_size_current_value" formatted="true">字体大小: %d</string>
|
||||
<string name="error_regex_find_prev">正则表达式不能向前查找</string>
|
||||
<string name="text_notification">通知</string>
|
||||
<string name="apk_builder_plugin_version_too_low">打包插件版本过低,打包的应用可能无法正常运行。是否立即下载对应版本的打包插件?</string>
|
||||
</resources>
|
||||
|
||||
@@ -25,14 +25,14 @@ import com.stardust.autojs.runtime.ScriptRuntime;
|
||||
|
||||
public class ScriptCanvas {
|
||||
|
||||
private android.graphics.Canvas mCanvas;
|
||||
private Canvas mCanvas;
|
||||
|
||||
public ScriptCanvas(android.graphics.Canvas canvas) {
|
||||
public ScriptCanvas(Canvas canvas) {
|
||||
mCanvas = canvas;
|
||||
}
|
||||
|
||||
public ScriptCanvas(@NonNull Bitmap bitmap) {
|
||||
mCanvas = new android.graphics.Canvas(bitmap);
|
||||
mCanvas = new Canvas(bitmap);
|
||||
}
|
||||
|
||||
public ScriptCanvas(@NonNull ImageWrapper image) {
|
||||
@@ -239,15 +239,15 @@ public class ScriptCanvas {
|
||||
mCanvas.setDrawFilter(filter);
|
||||
}
|
||||
|
||||
public boolean quickReject(@NonNull RectF rect, @NonNull android.graphics.Canvas.EdgeType type) {
|
||||
public boolean quickReject(@NonNull RectF rect, @NonNull Canvas.EdgeType type) {
|
||||
return mCanvas.quickReject(rect, type);
|
||||
}
|
||||
|
||||
public boolean quickReject(@NonNull Path path, @NonNull android.graphics.Canvas.EdgeType type) {
|
||||
public boolean quickReject(@NonNull Path path, @NonNull Canvas.EdgeType type) {
|
||||
return mCanvas.quickReject(path, type);
|
||||
}
|
||||
|
||||
public boolean quickReject(float left, float top, float right, float bottom, @NonNull android.graphics.Canvas.EdgeType type) {
|
||||
public boolean quickReject(float left, float top, float right, float bottom, @NonNull Canvas.EdgeType type) {
|
||||
return mCanvas.quickReject(left, top, right, bottom, type);
|
||||
}
|
||||
|
||||
@@ -382,7 +382,7 @@ public class ScriptCanvas {
|
||||
mCanvas.drawBitmapMesh(bitmap, meshWidth, meshHeight, verts, vertOffset, colors, colorOffset, paint);
|
||||
}
|
||||
|
||||
public void drawVertices(@NonNull android.graphics.Canvas.VertexMode mode, int vertexCount, @NonNull float[] verts, int vertOffset, @Nullable float[] texs, int texOffset, @Nullable int[] colors, int colorOffset, @Nullable short[] indices, int indexOffset, int indexCount, @NonNull Paint paint) {
|
||||
public void drawVertices(@NonNull Canvas.VertexMode mode, int vertexCount, @NonNull float[] verts, int vertOffset, @Nullable float[] texs, int texOffset, @Nullable int[] colors, int colorOffset, @Nullable short[] indices, int indexOffset, int indexCount, @NonNull Paint paint) {
|
||||
mCanvas.drawVertices(mode, vertexCount, verts, vertOffset, texs, texOffset, colors, colorOffset, indices, indexOffset, indexCount, paint);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user