增加配置

master
humingxing 2 days ago
parent a8e9e2d862
commit 47e32b3449
  1. 16
      assets/script/sdk/config/DefaultConfig.ts
  2. 1
      bin/tt_slgjm1.0.2.bin
  3. 13
      extensions/tools/dist/MembershipSet.js
  4. 59
      extensions/tools/dist/build-hooks.js
  5. 170
      preview-template/workbench/js/device.js

@ -6,8 +6,8 @@ import { IConfigData } from "./IConfigData";
*/ */
export const DefaultConfig: IConfigData = { export const DefaultConfig: IConfigData = {
id: "", id: "",
name: "tt_wkbz", name: "tt_slgjm",
vsion: "1.2.4", vsion: "1.0.2",
chanId: "tt", chanId: "tt",
themeId: "1", themeId: "1",
useDoc: true, useDoc: true,
@ -17,17 +17,17 @@ export const DefaultConfig: IConfigData = {
showAddToDesk: true, showAddToDesk: true,
showSidebar: true, showSidebar: true,
platformConf: { platformConf: {
gameName: "悟空别走", gameName: "守了个寂寞",
appid: "tt78540ee9e6303e0002", appid: "tt485d3ee0d6390e0c02",
shareData: [ shareData: [
//示例 //示例
{ id: 1, type: 1, wx: "", tt: "", res: "", desc: "悟空别走" }, { id: 1, type: 1, wx: "", tt: "", res: "", desc: "守了个寂寞" },
// { id: 2, type: 1, wx: "", tt: "j5gfj8d1gc04g6tj3n", res: "share/share_1.jpg", desc: "他拿塔皮勾引我,我没去,因为我知道塔皮不能叠Q!" }, // { id: 2, type: 1, wx: "", tt: "j5gfj8d1gc04g6tj3n", res: "share/share_1.jpg", desc: "他拿塔皮勾引我,我没去,因为我知道塔皮不能叠Q!" },
], ],
video: ["1gmsn5axhqn5kfc1hj", 'en4kagkd7jkae8e70j', '6kn5ncen2da4gj70di'], video: ["1nf50adpmfg1g46iad", '34a232emjk8a3diien', '3628g1j03b97166i4h'],
interstitialAd: [], interstitialAd: [],
banner: [], banner: [],
contentIDs: ["CONTENT14918755074"], // 复访(体力恢复) contentIDs: [], // 复访(体力恢复)
acquireContentIDs: [], // 获客 acquireContentIDs: [], // 获客
subscribeTmpl: { subscribeTmpl: {
offlineEarnings: '', offlineEarnings: '',
@ -54,6 +54,6 @@ export const DefaultConfig: IConfigData = {
pointData: { pointData: {
gameName: "", gameName: "",
accessToken: "gw0MRpBbernhPztqHlulUYjLnwyAdvOm", accessToken: "gw0MRpBbernhPztqHlulUYjLnwyAdvOm",
gid: "tt_wkbz", gid: "tt_slgjm",
} }
} }

File diff suppressed because one or more lines are too long

@ -1,8 +1,13 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.membershipForEach = exports.membershipDedupeArray = exports.membershipToArray = exports.membershipFromArray = exports.membershipClear = exports.membershipDelete = exports.membershipHas = exports.membershipAdd = exports.createMembershipSet = void 0; exports.membershipForEach = exports.membershipDedupeArray = exports.membershipToArray = exports.membershipFromArray = exports.membershipClear = exports.membershipDelete = exports.membershipHas = exports.membershipAdd = exports.createMembershipSet = void 0;
function bindMembershipIterator(set) {
// Map 默认 for-of 迭代 [key,value];覆盖为仅 yield key(与 Set 一致)
set[Symbol.iterator] = () => set.keys();
return set;
}
function createMembershipSet() { function createMembershipSet() {
return new Map(); return bindMembershipIterator(new Map());
} }
exports.createMembershipSet = createMembershipSet; exports.createMembershipSet = createMembershipSet;
function membershipAdd(set, key) { function membershipAdd(set, key) {
@ -31,7 +36,7 @@ function membershipFromArray(items) {
} }
exports.membershipFromArray = membershipFromArray; exports.membershipFromArray = membershipFromArray;
function membershipToArray(set) { function membershipToArray(set) {
return [...set.keys()]; return [...set];
} }
exports.membershipToArray = membershipToArray; exports.membershipToArray = membershipToArray;
/** 去重数组(替代 Array.from(new Set(...)) / [...new Set(...)]) */ /** 去重数组(替代 Array.from(new Set(...)) / [...new Set(...)]) */
@ -40,9 +45,9 @@ function membershipDedupeArray(items) {
} }
exports.membershipDedupeArray = membershipDedupeArray; exports.membershipDedupeArray = membershipDedupeArray;
function membershipForEach(set, fn) { function membershipForEach(set, fn) {
for (const key of set.keys()) { for (const key of set) {
fn(key); fn(key);
} }
} }
exports.membershipForEach = membershipForEach; exports.membershipForEach = membershipForEach;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtYmVyc2hpcFNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9NZW1iZXJzaGlwU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLFNBQWdCLG1CQUFtQjtJQUMvQixPQUFPLElBQUksR0FBRyxFQUFXLENBQUM7QUFDOUIsQ0FBQztBQUZELGtEQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFJLEdBQXFCLEVBQUUsR0FBTTtJQUMxRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFIRCxzQ0FHQztBQUVELFNBQWdCLGFBQWEsQ0FBSSxHQUE2QixFQUFFLEdBQU07SUFDbEUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFGRCxzQ0FFQztBQUVELFNBQWdCLGdCQUFnQixDQUFJLEdBQXFCLEVBQUUsR0FBTTtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsZUFBZSxDQUFJLEdBQXFCO0lBQ3BELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNoQixDQUFDO0FBRkQsMENBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBSSxLQUFrQjtJQUNyRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsRUFBSyxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBTkQsa0RBTUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBSSxHQUE2QjtJQUM5RCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRkQsOENBRUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBZ0IscUJBQXFCLENBQUksS0FBa0I7SUFDdkQsT0FBTyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFGRCxzREFFQztBQUVELFNBQWdCLGlCQUFpQixDQUFJLEdBQTZCLEVBQUUsRUFBb0I7SUFDcEYsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDMUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7QUFDTCxDQUFDO0FBSkQsOENBSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog6aG555uu56aB55So5Y6f55SfIFNldO+8iOWwj+a4uOaIj+i/kOihjOaXtuWvuemDqOWIhiBTZXQg55So5rOV5LiN56iz5a6a77yJ44CCXHJcbiAqIOeUqCBNYXA8SywgdHJ1ZT4g6KGo56S65oiQ5ZGY6ZuG5ZCI77yMQVBJIOS4jiBTZXQg5a+56b2Q44CCXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBNZW1iZXJzaGlwU2V0PEs+ID0gTWFwPEssIHRydWU+O1xyXG5leHBvcnQgdHlwZSBSZWFkb25seU1lbWJlcnNoaXBTZXQ8Sz4gPSBSZWFkb25seU1hcDxLLCB0cnVlPjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1iZXJzaGlwU2V0PEs+KCk6IE1lbWJlcnNoaXBTZXQ8Sz4ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8SywgdHJ1ZT4oKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBBZGQ8Sz4oc2V0OiBNZW1iZXJzaGlwU2V0PEs+LCBrZXk6IEspOiBNZW1iZXJzaGlwU2V0PEs+IHtcclxuICAgIHNldC5zZXQoa2V5LCB0cnVlKTtcclxuICAgIHJldHVybiBzZXQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwSGFzPEs+KHNldDogUmVhZG9ubHlNZW1iZXJzaGlwU2V0PEs+LCBrZXk6IEspOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzZXQuaGFzKGtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwRGVsZXRlPEs+KHNldDogTWVtYmVyc2hpcFNldDxLPiwga2V5OiBLKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc2V0LmRlbGV0ZShrZXkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyc2hpcENsZWFyPEs+KHNldDogTWVtYmVyc2hpcFNldDxLPik6IHZvaWQge1xyXG4gICAgc2V0LmNsZWFyKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwRnJvbUFycmF5PEs+KGl0ZW1zOiBJdGVyYWJsZTxLPik6IE1lbWJlcnNoaXBTZXQ8Sz4ge1xyXG4gICAgY29uc3Qgc2V0ID0gY3JlYXRlTWVtYmVyc2hpcFNldDxLPigpO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgc2V0LnNldChpdGVtLCB0cnVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzZXQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwVG9BcnJheTxLPihzZXQ6IFJlYWRvbmx5TWVtYmVyc2hpcFNldDxLPik6IEtbXSB7XHJcbiAgICByZXR1cm4gWy4uLnNldC5rZXlzKCldO1xyXG59XHJcblxyXG4vKiog5Y676YeN5pWw57uE77yI5pu/5LujIEFycmF5LmZyb20obmV3IFNldCguLi4pKSAvIFsuLi5uZXcgU2V0KC4uLild77yJICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwRGVkdXBlQXJyYXk8Sz4oaXRlbXM6IEl0ZXJhYmxlPEs+KTogS1tdIHtcclxuICAgIHJldHVybiBtZW1iZXJzaGlwVG9BcnJheShtZW1iZXJzaGlwRnJvbUFycmF5KGl0ZW1zKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwRm9yRWFjaDxLPihzZXQ6IFJlYWRvbmx5TWVtYmVyc2hpcFNldDxLPiwgZm46IChrZXk6IEspID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIHNldC5rZXlzKCkpIHtcclxuICAgICAgICBmbihrZXkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtYmVyc2hpcFNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9NZW1iZXJzaGlwU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLFNBQVMsc0JBQXNCLENBQUksR0FBaUI7SUFDaEQsd0RBQXdEO0lBQ3ZELEdBQXlELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvRixPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixtQkFBbUI7SUFDL0IsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsRUFBVyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUZELGtEQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFJLEdBQXFCLEVBQUUsR0FBTTtJQUMxRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFIRCxzQ0FHQztBQUVELFNBQWdCLGFBQWEsQ0FBSSxHQUE2QixFQUFFLEdBQU07SUFDbEUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFGRCxzQ0FFQztBQUVELFNBQWdCLGdCQUFnQixDQUFJLEdBQXFCLEVBQUUsR0FBTTtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsZUFBZSxDQUFJLEdBQXFCO0lBQ3BELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNoQixDQUFDO0FBRkQsMENBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBSSxLQUFrQjtJQUNyRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsRUFBSyxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBTkQsa0RBTUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBSSxHQUE2QjtJQUM5RCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRkQsOENBRUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBZ0IscUJBQXFCLENBQUksS0FBa0I7SUFDdkQsT0FBTyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFGRCxzREFFQztBQUVELFNBQWdCLGlCQUFpQixDQUFJLEdBQTZCLEVBQUUsRUFBb0I7SUFDcEYsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7UUFDbkIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7QUFDTCxDQUFDO0FBSkQsOENBSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog6aG555uu56aB55So5Y6f55SfIFNldO+8iOWwj+a4uOaIj+i/kOihjOaXtuWvuemDqOWIhiBTZXQg55So5rOV5LiN56iz5a6a77yJ44CCXHJcbiAqIOeUqCBNYXA8SywgdHJ1ZT4g6KGo56S65oiQ5ZGY6ZuG5ZCI77yb6L+t5Luj5pe2IHlpZWxkIGtlee+8iOS4jiBTZXQg5LiA6Ie077yM6ICM6Z2eIE1hcCDnmoQgW2tleSwgdmFsdWVd77yJ44CCXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBNZW1iZXJzaGlwU2V0PEs+ID0gTWFwPEssIHRydWU+O1xyXG5leHBvcnQgdHlwZSBSZWFkb25seU1lbWJlcnNoaXBTZXQ8Sz4gPSBSZWFkb25seU1hcDxLLCB0cnVlPjtcclxuXHJcbmZ1bmN0aW9uIGJpbmRNZW1iZXJzaGlwSXRlcmF0b3I8Sz4oc2V0OiBNYXA8SywgdHJ1ZT4pOiBNZW1iZXJzaGlwU2V0PEs+IHtcclxuICAgIC8vIE1hcCDpu5jorqQgZm9yLW9mIOi/reS7oyBba2V5LHZhbHVlXe+8m+imhuebluS4uuS7hSB5aWVsZCBrZXnvvIjkuI4gU2V0IOS4gOiHtO+8iVxyXG4gICAgKHNldCBhcyB7IFtTeW1ib2wuaXRlcmF0b3JdPzogKCkgPT4gSXRlcmFibGVJdGVyYXRvcjxLPiB9KVtTeW1ib2wuaXRlcmF0b3JdID0gKCkgPT4gc2V0LmtleXMoKTtcclxuICAgIHJldHVybiBzZXQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1iZXJzaGlwU2V0PEs+KCk6IE1lbWJlcnNoaXBTZXQ8Sz4ge1xyXG4gICAgcmV0dXJuIGJpbmRNZW1iZXJzaGlwSXRlcmF0b3IobmV3IE1hcDxLLCB0cnVlPigpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBBZGQ8Sz4oc2V0OiBNZW1iZXJzaGlwU2V0PEs+LCBrZXk6IEspOiBNZW1iZXJzaGlwU2V0PEs+IHtcclxuICAgIHNldC5zZXQoa2V5LCB0cnVlKTtcclxuICAgIHJldHVybiBzZXQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwSGFzPEs+KHNldDogUmVhZG9ubHlNZW1iZXJzaGlwU2V0PEs+LCBrZXk6IEspOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzZXQuaGFzKGtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwRGVsZXRlPEs+KHNldDogTWVtYmVyc2hpcFNldDxLPiwga2V5OiBLKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc2V0LmRlbGV0ZShrZXkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyc2hpcENsZWFyPEs+KHNldDogTWVtYmVyc2hpcFNldDxLPik6IHZvaWQge1xyXG4gICAgc2V0LmNsZWFyKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwRnJvbUFycmF5PEs+KGl0ZW1zOiBJdGVyYWJsZTxLPik6IE1lbWJlcnNoaXBTZXQ8Sz4ge1xyXG4gICAgY29uc3Qgc2V0ID0gY3JlYXRlTWVtYmVyc2hpcFNldDxLPigpO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgc2V0LnNldChpdGVtLCB0cnVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzZXQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwVG9BcnJheTxLPihzZXQ6IFJlYWRvbmx5TWVtYmVyc2hpcFNldDxLPik6IEtbXSB7XHJcbiAgICByZXR1cm4gWy4uLnNldF07XHJcbn1cclxuXHJcbi8qKiDljrvph43mlbDnu4TvvIjmm7/ku6MgQXJyYXkuZnJvbShuZXcgU2V0KC4uLikpIC8gWy4uLm5ldyBTZXQoLi4uKV3vvIkgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBEZWR1cGVBcnJheTxLPihpdGVtczogSXRlcmFibGU8Sz4pOiBLW10ge1xyXG4gICAgcmV0dXJuIG1lbWJlcnNoaXBUb0FycmF5KG1lbWJlcnNoaXBGcm9tQXJyYXkoaXRlbXMpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBGb3JFYWNoPEs+KHNldDogUmVhZG9ubHlNZW1iZXJzaGlwU2V0PEs+LCBmbjogKGtleTogSykgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2V0KSB7XHJcbiAgICAgICAgZm4oa2V5KTtcclxuICAgIH1cclxufVxyXG4iXX0=

File diff suppressed because one or more lines are too long

@ -28,64 +28,126 @@
/** 主流厂商代表性 / 较新机型(逻辑分辨率) */ /** 主流厂商代表性 / 较新机型(逻辑分辨率) */
var DEVICES = [ var DEVICES = [
{ id: 'fit', name: '适应窗口', w: 0, h: 0, frame: false, shell: 'flat', brand: '—' }, { id: 'fit', name: '适应窗口', w: 0, h: 0, frame: false, shell: 'flat', brand: '通用' },
// —— Apple iPhone —— // —— Apple iPhone ——
{ id: 'iphone-se', name: 'iPhone SE 3', w: 375, h: 667, frame: true, shell: 'classic', brand: 'Apple' }, { id: 'iphone-se', name: 'Apple iPhone SE 3', w: 375, h: 667, frame: true, shell: 'classic', brand: 'Apple' },
{ id: 'iphone-8', name: 'iPhone 8', w: 375, h: 667, frame: true, shell: 'classic', brand: 'Apple' }, { id: 'iphone-8', name: 'Apple iPhone 8', w: 375, h: 667, frame: true, shell: 'classic', brand: 'Apple' },
{ id: 'iphone-x', name: 'iPhone X / XS', w: 375, h: 812, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-x', name: 'Apple iPhone X / XS', w: 375, h: 812, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-xr', name: 'iPhone XR / 11', w: 414, h: 896, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-xr', name: 'Apple iPhone XR / 11', w: 414, h: 896, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-12', name: 'iPhone 12 / 13', w: 390, h: 844, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-12', name: 'Apple iPhone 12 / 13', w: 390, h: 844, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-12p', name: 'iPhone 12 / 13 Pro', w: 390, h: 844, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-12p', name: 'Apple iPhone 12 / 13 Pro', w: 390, h: 844, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-12pm', name: 'iPhone 12 / 13 Pro Max', w: 428, h: 926, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-12pm', name: 'Apple iPhone 12 / 13 Pro Max', w: 428, h: 926, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-14', name: 'iPhone 14', w: 390, h: 844, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-14', name: 'Apple iPhone 14', w: 390, h: 844, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-14-plus', name: 'iPhone 14 Plus', w: 428, h: 926, frame: true, shell: 'notch', brand: 'Apple' }, { id: 'iphone-14-plus', name: 'Apple iPhone 14 Plus', w: 428, h: 926, frame: true, shell: 'notch', brand: 'Apple' },
{ id: 'iphone-14-pro', name: 'iPhone 14 Pro', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-14-pro', name: 'Apple iPhone 14 Pro', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-14-promax', name: 'iPhone 14 Pro Max', w: 430, h: 932, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-14-promax', name: 'Apple iPhone 14 Pro Max', w: 430, h: 932, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-15', name: 'iPhone 15 / 15 Plus', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-15', name: 'Apple iPhone 15 / 15 Plus', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-15-pro', name: 'iPhone 15 Pro', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-15-pro', name: 'Apple iPhone 15 Pro', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-15-promax', name: 'iPhone 15 Pro Max', w: 430, h: 932, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-15-promax', name: 'Apple iPhone 15 Pro Max', w: 430, h: 932, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-16', name: 'iPhone 16', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-16', name: 'Apple iPhone 16', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-16-pro', name: 'iPhone 16 Pro', w: 402, y: 0, h: 874, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-16-plus', name: 'Apple iPhone 16 Plus', w: 430, h: 932, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-16-promax', name: 'iPhone 16 Pro Max', w: 440, h: 956, frame: true, shell: 'island', brand: 'Apple' }, { id: 'iphone-16-pro', name: 'Apple iPhone 16 Pro', w: 402, h: 874, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-16-promax', name: 'Apple iPhone 16 Pro Max', w: 440, h: 956, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-17', name: 'Apple iPhone 17', w: 393, h: 852, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-17-pro', name: 'Apple iPhone 17 Pro', w: 402, h: 874, frame: true, shell: 'island', brand: 'Apple' },
{ id: 'iphone-air', name: 'Apple iPhone Air', w: 430, h: 932, frame: true, shell: 'island', brand: 'Apple' },
// —— Apple iPad —— // —— Apple iPad ——
{ id: 'ipad', name: 'iPad 10', w: 820, h: 1180, frame: true, shell: 'tabletCam', brand: 'Apple' }, { id: 'ipad', name: 'Apple iPad 10', w: 820, h: 1180, frame: true, shell: 'tabletCam', brand: 'Apple' },
{ id: 'ipad-9', name: 'iPad 9', w: 768, h: 1024, frame: true, shell: 'classic', brand: 'Apple' }, { id: 'ipad-9', name: 'Apple iPad 9', w: 768, h: 1024, frame: true, shell: 'classic', brand: 'Apple' },
{ id: 'ipad-air', name: 'iPad Air', w: 820, h: 1180, frame: true, shell: 'tabletCam', brand: 'Apple' }, { id: 'ipad-air', name: 'Apple iPad Air', w: 820, h: 1180, frame: true, shell: 'tabletCam', brand: 'Apple' },
{ id: 'ipad-pro', name: 'iPad Pro 11', w: 834, h: 1194, frame: true, shell: 'tabletCam', brand: 'Apple' }, { id: 'ipad-pro', name: 'Apple iPad Pro 11', w: 834, h: 1194, frame: true, shell: 'tabletCam', brand: 'Apple' },
{ id: 'ipad-pro13', name: 'iPad Pro 12.9', w: 1024, h: 1366, frame: true, shell: 'tabletCam', brand: 'Apple' }, { id: 'ipad-pro13', name: 'Apple iPad Pro 13', w: 1024, h: 1366, frame: true, shell: 'tabletCam', brand: 'Apple' },
// —— Samsung —— // —— Samsung 直板 ——
{ id: 'galaxy-s20', name: 'Galaxy S20', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' }, { id: 'galaxy-s20', name: 'Samsung Galaxy S20', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-s21', name: 'Galaxy S21 / S22', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' }, { id: 'galaxy-s21', name: 'Samsung Galaxy S21 / S22', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-s23', name: 'Galaxy S23 / S24', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' }, { id: 'galaxy-s23', name: 'Samsung Galaxy S23 / S24', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-s24u', name: 'Galaxy S24 Ultra', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Samsung' }, { id: 'galaxy-s25', name: 'Samsung Galaxy S25', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-note20', name: 'Galaxy Note 20', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Samsung' }, { id: 'galaxy-s25u', name: 'Samsung Galaxy S25 Ultra', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-a54', name: 'Galaxy A54', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' }, { id: 'galaxy-s24u', name: 'Samsung Galaxy S24 Ultra', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-note20', name: 'Samsung Galaxy Note 20', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Samsung' },
{ id: 'galaxy-a54', name: 'Samsung Galaxy A54', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Samsung' },
// —— Google —— // —— Google ——
{ id: 'pixel-5', name: 'Pixel 5', w: 393, h: 851, frame: true, shell: 'punch', brand: 'Google' }, { id: 'pixel-5', name: 'Google Pixel 5', w: 393, h: 851, frame: true, shell: 'punch', brand: 'Google' },
{ id: 'pixel-6', name: 'Pixel 6 / 7', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Google' }, { id: 'pixel-6', name: 'Google Pixel 6 / 7', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Google' },
{ id: 'pixel-8', name: 'Pixel 8 / 8 Pro', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Google' }, { id: 'pixel-8', name: 'Google Pixel 8 / 8 Pro', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Google' },
// —— 小米 / Redmi —— { id: 'pixel-9', name: 'Google Pixel 9 / 9 Pro', w: 412, h: 915, frame: true, shell: 'punch', brand: 'Google' },
{ id: 'mi-13', name: '小米 13 / 14', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Xiaomi' }, // —— Xiaomi / Redmi ——
{ id: 'mi-14-pro', name: '小米 14 Pro', w: 400, h: 882, frame: true, shell: 'punch', brand: 'Xiaomi' }, { id: 'mi-13', name: 'Xiaomi 小米 13 / 14', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Xiaomi' },
{ id: 'redmi-note12', name: 'Redmi Note 12 / 13', w: 360, h: 800, frame: true, shell: 'teardrop', brand: 'Xiaomi' }, { id: 'mi-14-pro', name: 'Xiaomi 小米 14 Pro', w: 400, h: 882, frame: true, shell: 'punch', brand: 'Xiaomi' },
{ id: 'redmi-k60', name: 'Redmi K60 / K70', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Xiaomi' }, { id: 'mi-15', name: 'Xiaomi 小米 15 / 15 Pro', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Xiaomi' },
// —— 华为 / 荣耀 —— { id: 'redmi-note12', name: 'Xiaomi Redmi Note 12 / 13', w: 360, h: 800, frame: true, shell: 'teardrop', brand: 'Xiaomi' },
{ id: 'huawei-mate60', name: 'Mate 60 Pro', w: 400, h: 880, frame: true, shell: 'punch', brand: 'Huawei' }, { id: 'redmi-k60', name: 'Xiaomi Redmi K60 / K70', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Xiaomi' },
{ id: 'huawei-p60', name: 'P60 / nova', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Huawei' }, { id: 'redmi-k80', name: 'Xiaomi Redmi K80', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Xiaomi' },
{ id: 'honor-magic6', name: '荣耀 Magic6', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Honor' }, // —— Huawei / Honor ——
// —— OPPO / 一加 / realme —— { id: 'huawei-mate60', name: 'Huawei Mate 60 Pro', w: 400, h: 880, frame: true, shell: 'punch', brand: 'Huawei' },
{ id: 'oppo-find', name: 'Find X6 / X7', w: 360, h: 800, frame: true, shell: 'punch', brand: 'OPPO' }, { id: 'huawei-p60', name: 'Huawei P60 / nova', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Huawei' },
{ id: 'oppo-reno', name: 'Reno 11', w: 360, h: 800, frame: true, shell: 'punch', brand: 'OPPO' }, { id: 'huawei-pura70', name: 'Huawei Pura 70', w: 400, h: 880, frame: true, shell: 'punch', brand: 'Huawei' },
{ id: 'oneplus-12', name: '一加 12', w: 450, h: 1000, frame: true, shell: 'punch', brand: 'OnePlus' }, { id: 'honor-magic6', name: 'Honor 荣耀 Magic6', w: 360, h: 800, frame: true, shell: 'punch', brand: 'Honor' },
// —— vivo / iQOO —— { id: 'honor-magic7', name: 'Honor 荣耀 Magic7', w: 393, h: 873, frame: true, shell: 'punch', brand: 'Honor' },
{ id: 'vivo-x100', name: 'vivo X100', w: 412, h: 915, frame: true, shell: 'punch', brand: 'vivo' }, // —— OPPO / OnePlus / vivo / iQOO ——
{ id: 'iqoo-12', name: 'iQOO 12', w: 393, h: 873, frame: true, shell: 'punch', brand: 'iQOO' }, { id: 'oppo-find', name: 'OPPO Find X6 / X7', w: 360, h: 800, frame: true, shell: 'punch', brand: 'OPPO' },
{ id: 'oppo-find-x8', name: 'OPPO Find X8', w: 412, h: 915, frame: true, shell: 'punch', brand: 'OPPO' },
{ id: 'oppo-reno', name: 'OPPO Reno 11 / 12', w: 360, h: 800, frame: true, shell: 'punch', brand: 'OPPO' },
{ id: 'oneplus-12', name: 'OnePlus 一加 12', w: 450, h: 1000, frame: true, shell: 'punch', brand: 'OnePlus' },
{ id: 'oneplus-13', name: 'OnePlus 一加 13', w: 450, h: 1000, frame: true, shell: 'punch', brand: 'OnePlus' },
{ id: 'vivo-x100', name: 'vivo X100 / X200', w: 412, h: 915, frame: true, shell: 'punch', brand: 'vivo' },
{ id: 'iqoo-12', name: 'iQOO 12 / 13', w: 393, h: 873, frame: true, shell: 'punch', brand: 'iQOO' },
// —— 折叠屏 · Samsung ——
{ id: 'zfold2-in', name: 'Samsung Galaxy Z Fold 2 内屏', w: 2208, h: 1768, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold3-in', name: 'Samsung Galaxy Z Fold 3 内屏', w: 2208, h: 1768, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold4-in', name: 'Samsung Galaxy Z Fold 4 内屏', w: 2176, h: 1812, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold5-in', name: 'Samsung Galaxy Z Fold 5 内屏', w: 2176, h: 1812, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold6-in', name: 'Samsung Galaxy Z Fold 6 内屏', w: 2160, h: 1856, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold7-in', name: 'Samsung Galaxy Z Fold 7 内屏', w: 2184, h: 1968, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold8-in', name: 'Samsung Galaxy Z Fold 8 内屏', w: 2184, h: 1968, frame: true, shell: 'tabletCam', brand: 'Samsung 折叠' },
{ id: 'zfold3-out', name: 'Samsung Galaxy Z Fold 3 外屏', w: 2260, h: 832, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
{ id: 'zfold5-out', name: 'Samsung Galaxy Z Fold 5 外屏', w: 2316, h: 904, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
{ id: 'zfold7-out', name: 'Samsung Galaxy Z Fold 7 外屏', w: 2376, h: 968, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
{ id: 'zflip3-in', name: 'Samsung Galaxy Z Flip 3 内屏', w: 2640, h: 1080, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
{ id: 'zflip5-in', name: 'Samsung Galaxy Z Flip 5 内屏', w: 2640, h: 1080, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
{ id: 'zflip6-in', name: 'Samsung Galaxy Z Flip 6 内屏', w: 2640, h: 1080, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
{ id: 'zflip7-in', name: 'Samsung Galaxy Z Flip 7 内屏', w: 2640, h: 1080, frame: true, shell: 'punch', brand: 'Samsung 折叠' },
// —— 折叠屏 · Huawei ——
{ id: 'mate-x2', name: 'Huawei Mate X2 内屏', w: 2480, h: 2200, frame: true, shell: 'tabletCam', brand: 'Huawei 折叠' },
{ id: 'mate-x3', name: 'Huawei Mate X3 / X5 内屏', w: 2496, h: 2224, frame: true, shell: 'tabletCam', brand: 'Huawei 折叠' },
{ id: 'mate-x6', name: 'Huawei Mate X6 内屏', w: 2440, h: 2240, frame: true, shell: 'tabletCam', brand: 'Huawei 折叠' },
{ id: 'mate-x7', name: 'Huawei Mate X7 / XT 内屏', w: 2440, h: 2240, frame: true, shell: 'tabletCam', brand: 'Huawei 折叠' },
{ id: 'mate-x3-out', name: 'Huawei Mate X3 外屏', w: 2504, h: 1080, frame: true, shell: 'punch', brand: 'Huawei 折叠' },
{ id: 'mate-x6-out', name: 'Huawei Mate X6 外屏', w: 2520, h: 1080, frame: true, shell: 'punch', brand: 'Huawei 折叠' },
{ id: 'pocket2', name: 'Huawei Pocket 2 内屏', w: 2700, h: 1188, frame: true, shell: 'teardrop', brand: 'Huawei 折叠' },
{ id: 'pocket3', name: 'Huawei Pocket 3 内屏', w: 2700, h: 1188, frame: true, shell: 'teardrop', brand: 'Huawei 折叠' },
// —— 折叠屏 · Xiaomi ——
{ id: 'mix-fold2', name: 'Xiaomi MIX Fold 2 内屏', w: 2160, h: 1914, frame: true, shell: 'tabletCam', brand: 'Xiaomi 折叠' },
{ id: 'mix-fold3', name: 'Xiaomi MIX Fold 3 内屏', w: 2160, h: 1916, frame: true, shell: 'tabletCam', brand: 'Xiaomi 折叠' },
{ id: 'mix-fold4', name: 'Xiaomi MIX Fold 4 内屏', w: 2488, h: 2224, frame: true, shell: 'tabletCam', brand: 'Xiaomi 折叠' },
{ id: 'mix-fold5', name: 'Xiaomi MIX Fold 5 内屏', w: 2488, h: 2224, frame: true, shell: 'tabletCam', brand: 'Xiaomi 折叠' },
{ id: 'mix-flip', name: 'Xiaomi MIX Flip / Flip 2 内屏', w: 2912, h: 1388, frame: true, shell: 'punch', brand: 'Xiaomi 折叠' },
// —— 折叠屏 · OPPO / OnePlus ——
{ id: 'find-n', name: 'OPPO Find N / N2 内屏', w: 1920, h: 1792, frame: true, shell: 'tabletCam', brand: 'OPPO 折叠' },
{ id: 'find-n3', name: 'OPPO Find N3 内屏', w: 2344, h: 2156, frame: true, shell: 'tabletCam', brand: 'OPPO 折叠' },
{ id: 'find-n5', name: 'OPPO Find N5 内屏', w: 2248, h: 2480, frame: true, shell: 'tabletCam', brand: 'OPPO 折叠' },
{ id: 'find-n6', name: 'OPPO Find N6 内屏', w: 2248, h: 2480, frame: true, shell: 'tabletCam', brand: 'OPPO 折叠' },
{ id: 'oneplus-open', name: 'OnePlus Open / Open 2 内屏', w: 2344, h: 2156, frame: true, shell: 'tabletCam', brand: 'OnePlus 折叠' },
// —— 折叠屏 · vivo ——
{ id: 'xfold', name: 'vivo X Fold 内屏', w: 2160, h: 1916, frame: true, shell: 'tabletCam', brand: 'vivo 折叠' },
{ id: 'xfold3', name: 'vivo X Fold3 内屏', w: 2480, h: 2200, frame: true, shell: 'tabletCam', brand: 'vivo 折叠' },
{ id: 'xfold5', name: 'vivo X Fold5 内屏', w: 2480, h: 2200, frame: true, shell: 'tabletCam', brand: 'vivo 折叠' },
{ id: 'xfold-n5', name: 'vivo X Fold N5 内屏', w: 2248, h: 2480, frame: true, shell: 'tabletCam', brand: 'vivo 折叠' },
{ id: 'xflip', name: 'vivo X Flip 内屏', w: 2520, h: 1080, frame: true, shell: 'punch', brand: 'vivo 折叠' },
// —— 折叠屏 · Honor / Google ——
{ id: 'magic-v', name: 'Honor Magic V 内屏', w: 2272, h: 1984, frame: true, shell: 'tabletCam', brand: 'Honor 折叠' },
{ id: 'magic-v3', name: 'Honor Magic V3 内屏', w: 2344, h: 2156, frame: true, shell: 'tabletCam', brand: 'Honor 折叠' },
{ id: 'magic-v4', name: 'Honor Magic V4 内屏', w: 2344, h: 2156, frame: true, shell: 'tabletCam', brand: 'Honor 折叠' },
{ id: 'magic-v-flip', name: 'Honor Magic V Flip 内屏', w: 2320, h: 1080, frame: true, shell: 'punch', brand: 'Honor 折叠' },
{ id: 'pixel-fold', name: 'Google Pixel Fold 内屏', w: 2208, h: 1840, frame: true, shell: 'tabletCam', brand: 'Google 折叠' },
{ id: 'pixel-9-fold', name: 'Google Pixel 9 Pro Fold 内屏', w: 2076, h: 2152, frame: true, shell: 'tabletCam', brand: 'Google 折叠' },
{ id: 'pixel-10-fold', name: 'Google Pixel 10 Pro Fold 内屏', w: 2076, h: 2152, frame: true, shell: 'tabletCam', brand: 'Google 折叠' },
// —— 其它常见分辨率 —— // —— 其它常见分辨率 ——
{ id: 'android-360', name: 'Android 360×800', w: 360, h: 800, frame: true, shell: 'punch', brand: '通用' }, { id: 'android-360', name: '通用 Android 360×800', w: 360, h: 800, frame: true, shell: 'punch', brand: '通用' },
{ id: 'android-412', name: 'Android 412×915', w: 412, h: 915, frame: true, shell: 'punch', brand: '通用' }, { id: 'android-412', name: '通用 Android 412×915', w: 412, h: 915, frame: true, shell: 'punch', brand: '通用' },
{ id: 'android-720', name: '720×1280', w: 720, h: 1280, frame: true, shell: 'flat', brand: '通用' }, { id: 'android-720', name: '通用 720×1280', w: 720, h: 1280, frame: true, shell: 'flat', brand: '通用' },
{ id: 'android-1080', name: '1080×1920', w: 1080, h: 1920, frame: true, shell: 'flat', brand: '通用' }, { id: 'android-1080', name: '通用 1080×1920', w: 1080, h: 1920, frame: true, shell: 'flat', brand: '通用' },
{ id: 'design', name: '设计分辨率', w: 750, h: 1600, frame: true, shell: 'island', brand: '通用' }, { id: 'design', name: '通用 设计分辨率', w: 750, h: 1600, frame: true, shell: 'island', brand: '通用' },
]; ];
/** /**

Loading…
Cancel
Save