feat: checks plugin version

This commit is contained in:
hyb1996
2018-04-13 22:10:40 +08:00
parent 51fa9bde49
commit 2162bd5b28
5 changed files with 51 additions and 18 deletions

2
.idea/modules.xml generated
View File

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

View File

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

View File

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

View File

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

View File

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