package zeus.plugin;
import android.text.TextUtils;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 插件的配置,对应文件存放在插件apk下的assets/plugin.meta,这也是可配置的
* 之所以没有放在androidManifest.xml中是因为有些手机使用无法获取插件中对应的meta data数据。
* 其实还有一套完整强安全校验方案,想到绝大部分人用不到,就删掉了,想要的可以在单独联系。
*/
public class PluginManifest {
public static final String PLUG_NAME = "name";
public static final String PLUG_MIN_VERSION = "minVersion";
public static final String PLUG_MAX_VERSION = "maxVersion";
public static final String PLUG_VERSION = "version";
public static final String PLUG_MAINCLASS = "mainClass";
public static final String PLUG_OTHER_INFO = "otherInfo";
/**
* 插件显示的名称
*/
public String name = "";
/**
* 插件依赖的最低平台版本号
*/
public String minVersion = "";
/**
* 插件依赖的最大平台版本号
*/
public String maxVersion = "";
/**
* 插件版本号
*/
public String version = "";
/**
* 插件入口的类名
*/
public String mainClass = "";
/**
* 插件的其他信息,可扩展,可是其他json格式字符串
*/
public String otherInfo = "";
public PluginManifest(){}
public PluginManifest(String manifest) {
try {
JSONObject jsonObject = new JSONObject(manifest);
name = jsonObject.optString(PLUG_NAME);
minVersion = jsonObject.optString(PLUG_MIN_VERSION);
maxVersion = jsonObject.optString(PLUG_MAX_VERSION);
version = jsonObject.optString(PLUG_VERSION);
mainClass = jsonObject.optString(PLUG_MAINCLASS);
otherInfo = jsonObject.optString(PLUG_OTHER_INFO);
} catch (JSONException e) {
e.printStackTrace();
}
}
public int getVersion() {
if (!TextUtils.isEmpty(version)) {
try {
return Integer.valueOf(version);
} catch (Throwable e) {
return 0;
}
} else {
return 0;
}
}
@Override
public String toString() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put(PLUG_NAME, name);
jsonObject.put(PLUG_MIN_VERSION, minVersion);
jsonObject.put(PLUG_MAX_VERSION, maxVersion);
jsonObject.put(PLUG_VERSION, version);
jsonObject.put(PLUG_MAINCLASS, mainClass);
jsonObject.put(PLUG_OTHER_INFO, otherInfo);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject.toString();
}
}