From 1dae8485800afc14be0e69d4ea40520504e9fde4 Mon Sep 17 00:00:00 2001 From: zhaobozhen Date: Tue, 28 Nov 2023 05:44:47 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20LibCheck?= =?UTF-8?q?er/LibChecker-Docs@7d0dc358af3e6f838187b268a03692d973f2229d=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 6 ++-- article/index.html | 4 +-- .../js/{app.411fcbbe.js => app.f009f907.js} | 4 +-- ...8b677c37.js => page--516d26d3.815365dc.js} | 2 +- ...Home.ec4912b5.js => page-Home.acc27e19.js} | 2 +- ...0\247\345\210\206\346\236\220.08bd3c25.js" | 2 +- ...page-\345\277\253\347\205\247.a1f1c800.js" | 2 +- ...3\264\345\257\274\345\233\276.61f36d6b.js" | 2 +- ...6\260\346\227\245\345\277\227.4c338f50.js" | 2 +- ...page-\346\246\202\350\246\201.958a80fd.js" | 2 +- ...2\223\346\240\207\350\256\260.b7197f2b.js" | 2 +- category/index.html | 4 +-- changelog/index.html | 8 +++--- download/index.html | 6 ++-- encrypt/index.html | 4 +-- guide/Library-Reference-Statistics/index.html | 6 ++-- guide/Marked-Popular-Library/index.html | 6 ++-- guide/Mind-Mapping/index.html | 6 ++-- guide/PRIVACY/index.html | 6 ++-- guide/Package-Features-Analysis/index.html | 6 ++-- guide/Snapshot-Usage/index.html | 6 ++-- .../index.html | 6 ++-- guide/What-is-Registered-Component/index.html | 6 ++-- guide/index.html | 6 ++-- index.html | 4 +-- service-worker.js | 2 +- service-worker.js.map | 2 +- slide/index.html | 4 +-- star/index.html | 4 +-- tag/index.html | 4 +-- timeline/index.html | 28 +++++++++---------- 31 files changed, 77 insertions(+), 77 deletions(-) rename assets/js/{app.411fcbbe.js => app.f009f907.js} (77%) rename assets/js/{page--516d26d3.8b677c37.js => page--516d26d3.815365dc.js} (98%) rename assets/js/{page-Home.ec4912b5.js => page-Home.acc27e19.js} (77%) rename "assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.1e579bb1.js" => "assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.08bd3c25.js" (82%) rename "assets/js/page-\345\277\253\347\205\247.36246ca4.js" => "assets/js/page-\345\277\253\347\205\247.a1f1c800.js" (98%) rename "assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.8e3af491.js" => "assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.61f36d6b.js" (66%) rename "assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.9ea70cc4.js" => "assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.4c338f50.js" (99%) rename "assets/js/page-\346\246\202\350\246\201.da56f3af.js" => "assets/js/page-\346\246\202\350\246\201.958a80fd.js" (98%) rename "assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.47b9302b.js" => "assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.b7197f2b.js" (81%) diff --git a/404.html b/404.html index 13e7bd3..53c2843 100644 --- a/404.html +++ b/404.html @@ -17,7 +17,7 @@ - + @@ -52,10 +52,10 @@ 下载 Github - (opens new window)
How did we get here?
Take me home
- + diff --git a/assets/js/app.411fcbbe.js b/assets/js/app.f009f907.js similarity index 77% rename from assets/js/app.411fcbbe.js rename to assets/js/app.f009f907.js index b5ddbc6..0a1030d 100644 --- a/assets/js/app.411fcbbe.js +++ b/assets/js/app.f009f907.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],c=t[1],l=t[2],p=0,f=[];p=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(i.path||""),f=t&&t.path||"/",d=l.path?k(l.path,f,n||i.append):f,h=function(e,t,n){void 0===t&&(t={});var r,o=n||p;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(u):u(a)}return r}(l.query,i.query,r&&r.options.parseQuery),v=i.hash||l.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:d,query:h,hash:v}}var W,q=function(){},G={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),a=i.location,s=i.route,c=i.href,l={},u=n.options.linkActiveClass,p=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,v=null==p?"router-link-exact-active":p,m=null==this.activeClass?f:this.activeClass,g=null==this.exactActiveClass?v:this.exactActiveClass,y=s.redirectedFrom?h(null,V(s.redirectedFrom),null,n):s;l[g]=b(r,y,this.exactPath),l[m]=this.exact||this.exactPath?l[g]:function(e,t){return 0===e.path.replace(d,"/").indexOf(t.path.replace(d,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,y);var _=l[g]?this.ariaCurrentValue:null,w=function(e){K(e)&&(t.replace?n.replace(a,q):n.push(a,q))},x={click:K};Array.isArray(this.event)?this.event.forEach((function(e){x[e]=w})):x[this.event]=w;var C={class:l},k=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:w,isActive:l[m],isExactActive:l[g]});if(k){if(1===k.length)return k[0];if(k.length>1||!k.length)return 0===k.length?e():e("span",{},k)}if("a"===this.tag)C.on=x,C.attrs={href:c,"aria-current":_};else{var P=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[f]=n.params[f]);return s.path=H(u.path,s.params),c(u,s,a)}if(s.path){s.params={};for(var d=0;d-1}function Pe(e,t){return ke(e)&&e._isRouter&&(null==t||e.type===t)}function Se(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function $e(e){return function(t,n,r){var o=!1,i=0,a=null;Te(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var c,l=Ae((function(t){var o;((o=t).__esModule||Ee&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:W.extend(t),n.components[s]=t,--i<=0&&r()})),u=Ae((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=ke(e)?e:new Error(t),r(a))}));try{c=e(l,u)}catch(e){u(e)}if(c)if("function"==typeof c.then)c.then(l,u);else{var p=c.component;p&&"function"==typeof p.then&&p.then(l,u)}}})),o||r()}}function Te(e,t){return Oe(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Oe(e){return Array.prototype.concat.apply([],e)}var Ee="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ae(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var je=function(e,t){this.router=e,this.base=function(e){if(!e)if(Y){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Le(e,t,n,r){var o=Te(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=W.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return Oe(r?o.reverse():o)}function Ie(e,t){if(t)return function(){return e.apply(t,arguments)}}je.prototype.listen=function(e){this.cb=e},je.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},je.prototype.onError=function(e){this.errorCbs.push(e)},je.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(Pe(e,be.redirected)&&i===m||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},je.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!Pe(e)&&ke(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},c=e.matched.length-1,l=o.matched.length-1;if(b(e,o)&&c===l&&e.matched[c]===o.matched[l])return this.ensureURL(),e.hash&&se(this.router,o,e,!1),s(((a=xe(i=o,e,be.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=me&&n;r&&this.listeners.push(ae());var o=function(){var n=e.current,o=Re(e.base);e.current===m&&o===e._startLocation||e.transitionTo(o,(function(e){r&&se(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ge(P(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ye(P(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Re(this.base)!==this.current.fullPath){var t=P(this.base+this.current.fullPath);e?ge(t):ye(t)}},t.prototype.getCurrentLocation=function(){return Re(this.base)},t}(je);function Re(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(P(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Be=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Re(e);if(!/^\/#/.test(t))return window.location.replace(P(e+"/#"+t)),!0}(this.base)||Ne()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=me&&t;n&&this.listeners.push(ae());var r=function(){var t=e.current;Ne()&&e.transitionTo(De(),(function(r){n&&se(e.router,r,t,!0),me||Ue(r.fullPath)}))},o=me?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ze(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Ue(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;De()!==t&&(e?ze(t):Ue(t))},t.prototype.getCurrentLocation=function(){return De()},t}(je);function Ne(){var e=De();return"/"===e.charAt(0)||(Ue("/"+e),!1)}function De(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Fe(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ze(e){me?ge(Fe(e)):window.location.hash=e}function Ue(e){me?ye(Fe(e)):window.location.replace(Fe(e))}var He=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){Pe(e,be.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(je),Ve=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Z(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!me&&!1!==e.fallback,this.fallback&&(t="hash"),Y||(t="abstract"),this.mode=t,t){case"history":this.history=new Me(this,e.base);break;case"hash":this.history=new Be(this,e.base,this.fallback);break;case"abstract":this.history=new He(this,e.base);break;default:0}},We={currentRoute:{configurable:!0}};Ve.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},We.currentRoute.get=function(){return this.history&&this.history.current},Ve.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Me||n instanceof Be){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;me&&o&&"fullPath"in e&&se(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ve.prototype.beforeEach=function(e){return Ge(this.beforeHooks,e)},Ve.prototype.beforeResolve=function(e){return Ge(this.resolveHooks,e)},Ve.prototype.afterEach=function(e){return Ge(this.afterHooks,e)},Ve.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ve.prototype.onError=function(e){this.history.onError(e)},Ve.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ve.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ve.prototype.go=function(e){this.history.go(e)},Ve.prototype.back=function(){this.go(-1)},Ve.prototype.forward=function(){this.go(1)},Ve.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ve.prototype.resolve=function(e,t,n){var r=V(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?P(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ve.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ve.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Ve.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ve.prototype,We);var qe=Ve;function Ge(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ve.install=function e(t){if(!e.installed||W!==t){e.installed=!0,W=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",x),t.component("RouterLink",G);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ve.version="3.6.5",Ve.isNavigationFailure=Pe,Ve.NavigationFailureType=be,Ve.START_LOCATION=m,Y&&window.Vue&&window.Vue.use(Ve);var Ke={"components/Anchor":()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,271)),"components/Clipboard":()=>Promise.resolve().then(n.bind(null,63)),"components/Common":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(27)]).then(n.bind(null,307)),"components/Home":()=>Promise.all([n.e(0),n.e(28)]).then(n.bind(null,435)),"components/MediaLinks":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,242)),"components/MyTransition":()=>Promise.all([n.e(0),n.e(29)]).then(n.bind(null,185)),"components/Page":()=>Promise.all([n.e(0),n.e(3),n.e(109),n.e(36)]).then(n.bind(null,433)),"components/PageFooter":()=>Promise.all([n.e(0),n.e(1),n.e(37)]).then(n.bind(null,291)),"components/PageMeta":()=>Promise.all([n.e(0),n.e(38)]).then(n.bind(null,354)),"components/PageNav":()=>Promise.all([n.e(0),n.e(39)]).then(n.bind(null,355)),"components/Password":()=>Promise.all([n.e(0),n.e(40)]).then(n.bind(null,292)),"icons/ArticleIcon":()=>n.e(49).then(n.bind(null,310)),"icons/AutoIcon":()=>n.e(50).then(n.bind(null,207)),"icons/BookIcon":()=>n.e(51).then(n.bind(null,314)),"icons/DarkIcon":()=>n.e(52).then(n.bind(null,208)),"icons/EditIcon":()=>n.e(53).then(n.bind(null,311)),"icons/EmptyIcon":()=>Promise.all([n.e(0),n.e(54)]).then(n.bind(null,315)),"icons/I18nIcon":()=>n.e(55).then(n.bind(null,272)),"icons/LightIcon":()=>n.e(56).then(n.bind(null,209)),"icons/LinkIcon":()=>n.e(57).then(n.bind(null,316)),"icons/LockIcon":()=>n.e(58).then(n.bind(null,295)),"icons/NextIcon":()=>n.e(59).then(n.bind(null,312)),"icons/Page404Icon":()=>Promise.all([n.e(0),n.e(60)]).then(n.bind(null,467)),"icons/PresentationIcon":()=>n.e(61).then(n.bind(null,296)),"icons/PrevIcon":()=>n.e(62).then(n.bind(null,313)),"icons/ProjectIcon":()=>n.e(63).then(n.bind(null,317)),"icons/StickyIcon":()=>n.e(64).then(n.bind(null,297)),"layouts/404":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(7)]).then(n.bind(null,572)),"layouts/Blog":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(5)]).then(n.bind(null,573)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(6)]).then(n.bind(null,574)),"layouts/Slide":()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,575)),"components/AlgoliaSearch/Dropdown":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,576)),"components/AlgoliaSearch/Full":()=>Promise.all([n.e(0),n.e(107)]).then(n.bind(null,571)),"components/Blog/ArticleInfo":()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,294)),"components/Blog/ArticleItem":()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,309)),"components/Blog/ArticleList":()=>Promise.all([n.e(0),n.e(4),n.e(15)]).then(n.bind(null,308)),"components/Blog/ArticleType":()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,356)),"components/Blog/BlogHero":()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,358)),"components/Blog/BlogHome":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(4),n.e(18)]).then(n.bind(null,437)),"components/Blog/BlogInfo":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(19)]).then(n.bind(null,228)),"components/Blog/BlogInfoList":()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,304)),"components/Blog/BlogPage":()=>Promise.all([n.e(0),n.e(4),n.e(20)]).then(n.bind(null,436)),"components/Blog/BloggerInfo":()=>Promise.all([n.e(0),n.e(1),n.e(21)]).then(n.bind(null,205)),"components/Blog/CategoryList":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,347)),"components/Blog/ProjectList":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,359)),"components/Blog/TagList":()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,348)),"components/Blog/Timeline":()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,357)),"components/Blog/TimelineList":()=>Promise.all([n.e(0),n.e(26)]).then(n.bind(null,434)),"components/Navbar/DropdownLink":()=>Promise.all([n.e(0),n.e(30)]).then(n.bind(null,222)),"components/Navbar/NavLink":()=>Promise.all([n.e(0),n.e(31)]).then(n.bind(null,182)),"components/Navbar/NavLinks":()=>Promise.all([n.e(0),n.e(32)]).then(n.bind(null,269)),"components/Navbar/Navbar":()=>Promise.all([n.e(0),n.e(108),n.e(33)]).then(n.bind(null,290)),"components/Navbar/RepoLink":()=>Promise.all([n.e(0),n.e(34)]).then(n.bind(null,206)),"components/Navbar/SidebarButton":()=>Promise.all([n.e(0),n.e(35)]).then(n.bind(null,273)),"components/Sidebar/DropdownTransition":()=>Promise.all([n.e(0),n.e(41)]).then(n.bind(null,199)),"components/Sidebar/Sidebar":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(110),n.e(42)]).then(n.bind(null,293)),"components/Sidebar/SidebarDropdownLink":()=>Promise.all([n.e(0),n.e(43)]).then(n.bind(null,246)),"components/Sidebar/SidebarGroup":()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,266)),"components/Sidebar/SidebarLink":()=>Promise.all([n.e(0),n.e(44)]).then(n.bind(null,249)),"components/Sidebar/SidebarLinks":()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,224)),"components/Sidebar/SidebarNavLinks":()=>Promise.all([n.e(0),n.e(45)]).then(n.bind(null,270)),"components/Theme/DarkmodeSwitch":()=>Promise.all([n.e(0),n.e(46)]).then(n.bind(null,223)),"components/Theme/ThemeColor":()=>Promise.all([n.e(0),n.e(47)]).then(n.bind(null,245)),"components/Theme/ThemeOptions":()=>Promise.all([n.e(0),n.e(48)]).then(n.bind(null,236)),"icons/media/Baidu":()=>n.e(65).then(n.bind(null,438)),"icons/media/Bitbucket":()=>n.e(66).then(n.bind(null,439)),"icons/media/Dingding":()=>n.e(67).then(n.bind(null,440)),"icons/media/Discord":()=>n.e(68).then(n.bind(null,441)),"icons/media/Dribbble":()=>n.e(69).then(n.bind(null,442)),"icons/media/Email":()=>n.e(70).then(n.bind(null,443)),"icons/media/Evernote":()=>n.e(71).then(n.bind(null,444)),"icons/media/Facebook":()=>n.e(72).then(n.bind(null,445)),"icons/media/Flipboard":()=>n.e(73).then(n.bind(null,446)),"icons/media/Gitee":()=>n.e(74).then(n.bind(null,447)),"icons/media/Github":()=>n.e(75).then(n.bind(null,448)),"icons/media/Gitlab":()=>n.e(76).then(n.bind(null,449)),"icons/media/Gmail":()=>n.e(77).then(n.bind(null,450)),"icons/media/Instagram":()=>n.e(78).then(n.bind(null,451)),"icons/media/Lines":()=>n.e(79).then(n.bind(null,452)),"icons/media/Linkedin":()=>n.e(80).then(n.bind(null,453)),"icons/media/Pinterest":()=>n.e(81).then(n.bind(null,454)),"icons/media/Pocket":()=>n.e(82).then(n.bind(null,455)),"icons/media/QQ":()=>n.e(83).then(n.bind(null,456)),"icons/media/Qzone":()=>n.e(84).then(n.bind(null,457)),"icons/media/Reddit":()=>n.e(85).then(n.bind(null,458)),"icons/media/Rss":()=>n.e(86).then(n.bind(null,459)),"icons/media/Steam":()=>n.e(87).then(n.bind(null,460)),"icons/media/Twitter":()=>n.e(88).then(n.bind(null,461)),"icons/media/Wechat":()=>n.e(89).then(n.bind(null,462)),"icons/media/Weibo":()=>n.e(90).then(n.bind(null,463)),"icons/media/Whatsapp":()=>n.e(91).then(n.bind(null,464)),"icons/media/Youtube":()=>n.e(92).then(n.bind(null,465)),"icons/media/Zhihu":()=>n.e(93).then(n.bind(null,466)),NotFound:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(7)]).then(n.bind(null,572)),Blog:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(5)]).then(n.bind(null,573)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(6)]).then(n.bind(null,574)),Slide:()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,575))},Ye={"v-4107fbf3":()=>n.e(103).then(n.bind(null,577)),"v-4baedca8":()=>n.e(96).then(n.bind(null,578)),"v-b3f91be2":()=>n.e(95).then(n.bind(null,579)),"v-1d58b70b":()=>n.e(100).then(n.bind(null,580)),"v-247d6493":()=>n.e(102).then(n.bind(null,581)),"v-516d26d3":()=>n.e(94).then(n.bind(null,582)),"v-33a81633":()=>n.e(99).then(n.bind(null,583)),"v-0f7e23e4":()=>n.e(104).then(n.bind(null,584)),"v-1b01c46d":()=>n.e(105).then(n.bind(null,585)),"v-0b093b49":()=>n.e(101).then(n.bind(null,586)),"v-4c61bdb3":()=>n.e(97).then(n.bind(null,587)),"v-7d1a76a1":()=>n.e(98).then(n.bind(null,588))};function Je(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Qe=/-(\w)/g,Ze=Je(e=>e.replace(Qe,(e,t)=>t?t.toUpperCase():"")),Xe=/\B([A-Z])/g,et=Je(e=>e.replace(Xe,"-$1").toLowerCase()),tt=Je(e=>e.charAt(0).toUpperCase()+e.slice(1));function nt(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(tt(Ze(t))):e(tt(t))||e(et(t))}const rt=Object.assign({},Ke,Ye),ot=e=>rt[e],it=e=>Ye[e],at=e=>Ke[e],st=e=>r.a.component(e);function ct(e){return nt(it,e)}function lt(e){return nt(at,e)}function ut(e){return nt(ot,e)}function pt(e){return nt(st,e)}function ft(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!pt(e)&&ut(e)){const t=await ut(e)();r.a.component(e,t.default)}}))}function dt(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ht=n(60),vt=n.n(ht),mt=n(61),gt=n.n(mt),yt={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${gt()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=_t(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=wt(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return vt()([{name:"description",content:this.$description}],e,this.siteMeta,xt)},updateCanonicalLink(){bt(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",_t(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){wt(null,this.currentMetaTags),bt()}};function bt(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function _t(e=""){return e?``:""}function wt(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function xt(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Ct=n(16),kt=n.n(Ct),Pt={mounted(){kt.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||r.a.component(e.name)||kt.a.start(),n()}),this.$router.afterEach(()=>{kt.a.done(),this.isSidebarOpen=!1})}},St=n(10);let $t;var Tt=r.a.extend({mounted(){$t=Object(St.a)(()=>{this.setActiveHash()},300),window.addEventListener("scroll",$t)},beforeDestroy(){window.removeEventListener("scroll",$t)},methods:{setActiveHash(){const e=Array.from(document.querySelectorAll(".sidebar-link")),t=Array.from(document.querySelectorAll(".header-anchor")).filter(t=>0===e.length||e.some(e=>e.hash===t.hash)),n=document.querySelector(".theme-default-content").offsetTop,r=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),o=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),i=window.innerHeight+r,a=decodeURIComponent(this.$route.hash),s=(e,n)=>{if(i===o)for(let e=n+1;e{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})};if(r-n<0&&a)s("#",-1);else for(let e=0;e=o.parentElement.offsetTop+0&&(!i||r-n({isElement:!1}),created(){this.onCopy=e=>{const t=getSelection().getRangeAt(0);if(String(t).lengthe(Ot.default,{props:{html:n.innerHTML,lang:o}})}).$mount(),{innerHTML:a,innerText:s}=i.$el;e.clipboardData?(e.clipboardData.setData("text/html",a),e.clipboardData.setData("text/plain",s)):window.clipboardData&&window.clipboardData.setData("text",s)}},watch:{isElement(e){if(!e)return;let{copyright:t=!Et.disabled}=this.$frontmatter;if(!t)return;"object"!=typeof t&&(t={});const n=t.noSelect||Et.noSelect;this.minLength=t.minLength||Et.minLength,this.noCopy=t.noCopy||Et.noCopy,n?this.$el.style.userSelect="none":this.$el.addEventListener("copy",this.onCopy)}},updated(){this.isElement="#comment"!==this.$el.nodeName},beforeDestory(){this.$el.removeEventListener("copy",this.onCopy)}};n(161);class jt{constructor(){const e=document.getElementById("message-container");e?this.containerElement=e:(this.containerElement=document.createElement("div"),this.containerElement.id="message-container",document.body.appendChild(this.containerElement))}pop(e,t=2e3){const n=document.createElement("div");n.className="message move-in",n.innerHTML=e,this.containerElement.appendChild(n),t>0&&setTimeout(()=>{this.close(n)},t)}close(e){e.className=e.className.replace("move-in",""),e.className+="move-out",e.addEventListener("animationend",()=>{e.remove()})}}n(162),n(65);let Lt;const It={},Mt={"/":{copy:"Copied successfully",hint:"Copy code"}},Rt=()=>!!navigator&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/iu.test(navigator.userAgent);var Bt=[yt,Pt,Tt,At,r.a.extend({mounted(){Lt=new jt,Rt()&&!It.showInMobile||this.genCopyButton()},updated(){Rt()&&!It.showInMobile||this.genCopyButton()},methods:{genCopyButton(){const e=It.selector||'.theme-default-content div[class*="language-"] pre';setTimeout(()=>{"string"==typeof e?document.querySelectorAll(e).forEach(this.insertCopyButton.bind(this)):Array.isArray(e)&&e.forEach(e=>{document.querySelectorAll(e).forEach(this.insertCopyButton.bind(this))})},It.delay||500)},insertCopyButton(e){if(!e.hasAttribute("copy-code-registerd")){const t=document.createElement("button");It.pure?(t.className="copy-code-pure-button",t.innerHTML=''):(t.className="copy-code-button",t.innerHTML=''),t.addEventListener("click",()=>{this.copyToClipboard(e.innerText)}),t.setAttribute("aria-label",Mt[this.$localePath||"/"].hint),t.setAttribute("data-balloon-pos","left"),e.parentElement&&e.parentElement.insertBefore(t,e),e.setAttribute("copy-code-registerd","")}},copyToClipboard(e){const t=document.getSelection(),n=!!(t&&t.rangeCount>0)&&t.getRangeAt(0),r=document.createElement("textarea");r.value=e,r.setAttribute("readonly",""),r.style.position="absolute",r.style.top="-9999px",document.body.appendChild(r),r.select(),document.execCommand("copy"),It.pure||Lt.pop(`${Mt[this.$localePath||"/"].copy} 🎉`,It.duration),document.body.removeChild(r),n&&t&&(t.removeAllRanges(),t.addRange(n))}}})],Nt={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return dt("layout",e),r.a.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},Dt=n(1),Ft=Object(Dt.a)(Nt,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ft,"mixins",Bt);const zt=[{name:"v-4107fbf3",path:"/changelog/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-4107fbf3").then(n)}},{path:"/changelog/index.html",redirect:"/changelog/"},{path:"/changelog.html",redirect:"/changelog/"},{name:"v-4baedca8",path:"/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-4baedca8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-b3f91be2",path:"/download/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-b3f91be2").then(n)}},{path:"/download/index.html",redirect:"/download/"},{path:"/download.html",redirect:"/download/"},{name:"v-1d58b70b",path:"/guide/Library-Reference-Statistics/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-1d58b70b").then(n)}},{path:"/guide/Library-Reference-Statistics/index.html",redirect:"/guide/Library-Reference-Statistics/"},{path:"/guide/Library-Reference-Statistics.html",redirect:"/guide/Library-Reference-Statistics/"},{name:"v-247d6493",path:"/guide/Mind-Mapping/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-247d6493").then(n)}},{path:"/guide/Mind-Mapping/index.html",redirect:"/guide/Mind-Mapping/"},{path:"/guide/Mind-Mapping.html",redirect:"/guide/Mind-Mapping/"},{name:"v-516d26d3",path:"/guide/PRIVACY/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-516d26d3").then(n)}},{path:"/guide/PRIVACY/index.html",redirect:"/guide/PRIVACY/"},{path:"/guide/PRIVACY.html",redirect:"/guide/PRIVACY/"},{name:"v-33a81633",path:"/guide/Package-Features-Analysis/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-33a81633").then(n)}},{path:"/guide/Package-Features-Analysis/index.html",redirect:"/guide/Package-Features-Analysis/"},{path:"/guide/Package-Features-Analysis.html",redirect:"/guide/Package-Features-Analysis/"},{name:"v-0f7e23e4",path:"/guide/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-0f7e23e4").then(n)}},{path:"/guide/index.html",redirect:"/guide/"},{name:"v-1b01c46d",path:"/guide/Marked-Popular-Library/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-1b01c46d").then(n)}},{path:"/guide/Marked-Popular-Library/index.html",redirect:"/guide/Marked-Popular-Library/"},{path:"/guide/Marked-Popular-Library.html",redirect:"/guide/Marked-Popular-Library/"},{name:"v-0b093b49",path:"/guide/Snapshot-Usage/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-0b093b49").then(n)}},{path:"/guide/Snapshot-Usage/index.html",redirect:"/guide/Snapshot-Usage/"},{path:"/guide/Snapshot-Usage.html",redirect:"/guide/Snapshot-Usage/"},{name:"v-4c61bdb3",path:"/guide/What-is-Native-Library-Architecture/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-4c61bdb3").then(n)}},{path:"/guide/What-is-Native-Library-Architecture/index.html",redirect:"/guide/What-is-Native-Library-Architecture/"},{path:"/guide/What-is-Native-Library-Architecture.html",redirect:"/guide/What-is-Native-Library-Architecture/"},{name:"v-7d1a76a1",path:"/guide/What-is-Registered-Component/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-7d1a76a1").then(n)}},{path:"/guide/What-is-Registered-Component/index.html",redirect:"/guide/What-is-Registered-Component/"},{path:"/guide/What-is-Registered-Component.html",redirect:"/guide/What-is-Registered-Component/"},{name:"v-6453f364",path:"/article/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-6453f364").then(n)}},{path:"/article/index.html",redirect:"/article/"},{name:"v-4340f7e8",path:"/star/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-4340f7e8").then(n)}},{path:"/star/index.html",redirect:"/star/"},{name:"v-7d484ebf",path:"/encrypt/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-7d484ebf").then(n)}},{path:"/encrypt/index.html",redirect:"/encrypt/"},{name:"v-2470be33",path:"/slide/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-2470be33").then(n)}},{path:"/slide/index.html",redirect:"/slide/"},{name:"v-6319eb4e",path:"/timeline/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-6319eb4e").then(n)}},{path:"/timeline/index.html",redirect:"/timeline/"},{name:"v-b1564aac",path:"/tag/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-b1564aac").then(n)},meta:{pid:"tag",id:"tag"}},{path:"/tag/index.html",redirect:"/tag/"},{name:"v-28e6393c",path:"/category/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-28e6393c").then(n)},meta:{pid:"category",id:"category"}},{path:"/category/index.html",redirect:"/category/"},{path:"*",component:Ft}],Ut={title:"LibChecker",description:"",base:"/LibChecker-Docs/",headTags:[["link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css?family=Roboto:400,400i,500,500i,700,700i&display=swap"}],["link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css?family=Noto+Sans+SC:400,500,700&display=swap"}],["link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css?family=Noto+Sans+TC:400,500,700&display=swap"}],["link",{rel:"icon",type:"image/png",size:"192x192",href:"/LibChecker-Docs/icon/android-icon-192x192.png"}],["link",{rel:"icon",type:"image/png",size:"32x32",href:"/LibChecker-Docs/icon/favicon-32x32.png"}],["link",{rel:"icon",type:"image/png",size:"96x96",href:"/LibChecker-Docs/icon/favicon-96x96.png"}],["link",{rel:"icon",type:"image/png",size:"16x16",href:"/LibChecker-Docs/icon/favicon-16x16.png"}],["link",{rel:"manifest",href:"/LibChecker-Docs/manifest.webmanifest",crossorigin:"use-credentials"}],["meta",{name:"theme-color",content:"#46bd87"}],["meta",{name:"viewport",content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"}]],pages:[{title:"更新日志",frontmatter:{},regularPath:"/changelog.html",relativePath:"changelog.md",key:"v-4107fbf3",path:"/changelog/",readingTime:{minutes:10.22,words:3065},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"Home",frontmatter:{home:!0,heroImage:"/logo.png",action:[{text:"快速入门 →",link:"/guide/"}],features:[{title:"清晰快速",details:"有详情,也有统计,多种方式了解 App 的组成"},{title:"优雅美观",details:"遵循 Material Design,界面统一不凌乱,永远保持干净"},{title:"开放编纂",details:"主程序完全开源,并且开放在线规则库,任何人都可以参与贡献"}]},regularPath:"/",relativePath:"README.md",key:"v-4baedca8",path:"/",readingTime:{minutes:0,words:0},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"Download",frontmatter:{},regularPath:"/download.html",relativePath:"download.md",key:"v-b3f91be2",path:"/download/",readingTime:{minutes:.16,words:47},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"库引用统计",frontmatter:{},regularPath:"/guide/Library-Reference-Statistics.html",relativePath:"guide/Library-Reference-Statistics.md",key:"v-1d58b70b",path:"/guide/Library-Reference-Statistics/",headers:[{level:2,title:"使用方式",slug:"使用方式"}],readingTime:{minutes:.64,words:192},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"思维导图",frontmatter:{},regularPath:"/guide/Mind-Mapping.html",relativePath:"guide/Mind-Mapping.md",key:"v-247d6493",path:"/guide/Mind-Mapping/",headers:[{level:2,title:"思维导图",slug:"思维导图"}],readingTime:{minutes:.03,words:10},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{frontmatter:{},regularPath:"/guide/PRIVACY.html",relativePath:"guide/PRIVACY.md",key:"v-516d26d3",path:"/guide/PRIVACY/",readingTime:{minutes:2.73,words:818},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"包特性分析",frontmatter:{},regularPath:"/guide/Package-Features-Analysis.html",relativePath:"guide/Package-Features-Analysis.md",key:"v-33a81633",path:"/guide/Package-Features-Analysis/",headers:[{level:2,title:"Android App Bundles",slug:"android-app-bundles"},{level:2,title:"Kotlin",slug:"kotlin"}],readingTime:{minutes:.51,words:153},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"概要",frontmatter:{},regularPath:"/guide/",relativePath:"guide/README.md",key:"v-0f7e23e4",path:"/guide/",headers:[{level:2,title:"LibChecker 是什么?",slug:"libchecker-是什么"},{level:2,title:"LibChecker 能做什么?",slug:"libchecker-能做什么"},{level:2,title:"基础知识",slug:"基础知识"},{level:2,title:"使用方法",slug:"使用方法"},{level:2,title:"相关信息",slug:"相关信息"},{level:2,title:"LibChecker 将要做什么",slug:"libchecker-将要做什么"},{level:2,title:"思维导图",slug:"思维导图"}],readingTime:{minutes:2.15,words:646},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"知名库标记",frontmatter:{},regularPath:"/guide/Marked-Popular-Library.html",relativePath:"guide/Marked-Popular-Library.md",key:"v-1b01c46d",path:"/guide/Marked-Popular-Library/",headers:[{level:2,title:"简介",slug:"简介"}],readingTime:{minutes:1.06,words:318},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"快照",frontmatter:{},regularPath:"/guide/Snapshot-Usage.html",relativePath:"guide/Snapshot-Usage.md",key:"v-0b093b49",path:"/guide/Snapshot-Usage/",headers:[{level:2,title:"什么是快照?",slug:"什么是快照"},{level:2,title:"使用方法",slug:"使用方法"},{level:2,title:"仪表盘区功能",slug:"仪表盘区功能"},{level:3,title:"对比",slug:"对比"},{level:3,title:"管理",slug:"管理"},{level:3,title:"备份与恢复",slug:"备份与恢复"},{level:3,title:"追踪",slug:"追踪"}],readingTime:{minutes:2.09,words:628},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"什么是原生库架构?",frontmatter:{},regularPath:"/guide/What-is-Native-Library-Architecture.html",relativePath:"guide/What-is-Native-Library-Architecture.md",key:"v-4c61bdb3",path:"/guide/What-is-Native-Library-Architecture/",headers:[{level:2,title:"Android 中 ABI 的概念",slug:"android-中-abi-的概念"},{level:2,title:"ABI 和 CPU 的关系",slug:"abi-和-cpu-的关系"},{level:2,title:"为什么存在“无原生库”这一状态?",slug:"为什么存在-无原生库-这一状态"},{level:2,title:"为什么国内厂商对于升级 64 位不够积极?",slug:"为什么国内厂商对于升级-64-位不够积极"},{level:2,title:"我认为有以下几点原因:",slug:"我认为有以下几点原因"}],readingTime:{minutes:2.99,words:898},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"什么是注册组件?",frontmatter:{},regularPath:"/guide/What-is-Registered-Component.html",relativePath:"guide/What-is-Registered-Component.md",key:"v-7d1a76a1",path:"/guide/What-is-Registered-Component/",headers:[{level:2,title:"基础知识",slug:"基础知识"},{level:2,title:"为什么我的 App 中有这些奇怪的组件?",slug:"为什么我的-app-中有这些奇怪的组件"}],readingTime:{minutes:1.63,words:489},updateTime:"2023年8月14日 12:00",updateTimeStamp:1692014446e3,createTime:"2023年8月14日 12:00",createTimeStamp:1692014446e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{frontmatter:{layout:"Blog"},regularPath:"/article/",key:"v-6453f364",path:"/article/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/star/",key:"v-4340f7e8",path:"/star/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/encrypt/",key:"v-7d484ebf",path:"/encrypt/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/slide/",key:"v-2470be33",path:"/slide/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/timeline/",key:"v-6319eb4e",path:"/timeline/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",title:"Tag"},regularPath:"/tag/",key:"v-b1564aac",path:"/tag/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",title:"Category"},regularPath:"/category/",key:"v-28e6393c",path:"/category/",readingTime:{minutes:0,words:0}}],themeConfig:{locales:{"/":{selectText:"Language",label:"English",editLinkText:"在 GitHub 上编辑此页",serviceWorker:{updatePopup:{message:"发现新内容可用.",buttonText:"刷新"}},lastUpdated:"最后更新",lang:"en-US",ariaLabel:"Select language",meta:{contributor:"Contributors",editLink:"Edit this page",updateTime:"Last update"},themeColor:{themeColor:"Theme Color",themeMode:"Theme Mode"},encrypt:{title:"Please enter password",errorHint:"Please enter the correct password!"},error404:{hint:["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],back:"Go back",home:"Take me home"},blog:{article:"Articles",articleList:"Article List",category:"Category",tag:"Tags",timeline:"Timeline",timelineText:"Yesterday Once More!",allText:"All",intro:"Personal Intro",star:"Star",slides:"Slides",encrypt:"Encrypted"}}},author:"Absinthe",darkmode:"auto-switch",displayAllHeaders:!0,sidebarDepth:2,nav:[{text:"指南",link:"/guide/"},{text:"更新日志",link:"/changelog.html"},{text:"下载",link:"/download.html"}],serviceWorker:{updatePopup:!0},copyright:{status:"global"},mdEnhance:{align:!0},repo:"https://github.com/zhaobozhen/LibChecker-Docs",repoLabel:"Github",docsRepo:"https://github.com/zhaobozhen/LibChecker-Docs",docsDir:"docs",editLinks:!1,iconPrefix:"icon-",footer:{}},locales:{"/":{lang:"zh-Hans",description:"应用架构查看",path:"/"}}};n(163);var Ht=n(2),Vt=r.a.extend({name:"CommentService",components:{CommentProvider:Ht.a},data:()=>({options:{type:"disable"}}),computed:{pluginEnable(){return"disable"!==this.options.type&&(this.$frontmatter.comment||!1!==this.options.comment)}}}),Wt=Object(Dt.a)(Vt,(function(){var e=this._self._c;this._self._setupProxy;return e("div",{directives:[{name:"show",rawName:"v-show",value:this.pluginEnable,expression:"pluginEnable"}],staticClass:"comments-wrapper"},["vssue"===this.options.type?e("Vssue",{attrs:{title:this.$title}}):e("CommentProvider",{attrs:{config:this.options}})],1)}),[],!1,null,null,null).exports;var qt=({Vue:e})=>{e.component("CommentService",Wt)},Gt=n(26);let Kt;var Yt=r.a.extend({name:"BackToTop",data:()=>({scrollTop:0}),computed:{display(){return!1!==this.$page.frontmatter.backToTop&&this.scrollTop>300},hint(){return Gt.a[this.$localePath||"/"].backToTop}},mounted(){this.scrollTop=this.getScrollTop(),Kt=Object(St.a)(()=>{this.scrollTop=this.getScrollTop()},100),window.addEventListener("scroll",Kt)},beforeDestroy(){window.removeEventListener("scroll",Kt)},methods:{getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,scrollToTop(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0}}}),Jt=(n(164),Object(Dt.a)(Yt,(function(){var e=this._self._c;this._self._setupProxy;return e("transition",{attrs:{name:"fade"}},[this.display?e("button",{staticClass:"back-to-top",attrs:{"aria-label":this.hint,"data-balloon-pos":"left"},on:{click:this.scrollToTop}},[e("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M512 0C229.517 0 0 229.517 0 512s227.752 512 512 512c282.483 0 512-227.752 512-512C1024 229.517 794.483\n 0 512 0zM351.338 271.89h305.434c14.125 0 26.483 12.358 26.483 26.482s-12.358 26.483-26.483\n 26.483H351.338c-14.124 0-26.483-12.358-26.483-26.483 0-15.89 12.359-26.482 26.483-26.482z\n m331.917 303.669c-12.358 12.358-33.545 12.358-45.903 0L531.42 471.393v270.124c0 14.124-12.359\n 26.483-26.483 26.483s-26.483-12.359-26.483-26.483v-271.89l-105.93 104.166c-12.36 12.359-33.546 12.359-45.904\n 0-12.359-12.359-12.359-31.78 0-45.903l155.365-151.835c7.062-7.062 14.124-8.827 22.952-8.827s15.89 3.53 22.952\n 8.827L683.255 527.89c12.359 15.89 12.359 35.31 0 47.669z",fill:"currentColor"}})])]):this._e()])}),[],!1,null,null,null).exports),Qt=r.a.extend({name:"Badge",functional:!0,props:{type:{type:String,default:"tip"},text:{type:String,default:""},vertical:{type:String,default:"top"},color:{type:String,default:""}},render(e,{props:t,slots:n}){const r={class:["badge",t.type],style:{verticalAlign:t.vertical}};return t.color&&(r.class.push("diy"),r.style.backgroundColor=t.color,r["data-color"]=t.color),e("span",r,t.text||n().default)}}),Zt=(n(165),Object(Dt.a)(Qt,void 0,void 0,!1,null,"7b453e57",null).exports),Xt=r.a.extend({name:"BreadCrumb",props:{show:{type:Boolean,default:!0},icon:{type:Boolean,default:!0},iconPrefix:{type:String,default:""}},computed:{enable(){const e=this.$page.frontmatter.breadcrumb;return(this.show&&!1!==e||!0===e)&&this.config.length>1},displayIcon(){const e=this.$page.frontmatter.breadcrumbIcon;return this.enable&&(this.icon&&!1!==e||!0===e)},config(){const e=[],{pages:t}=this.$site,n=this.getLinks(this.$route);for(let r=1;r{o!==t.length-1?(r+=e+"/",n.push(r)):""!==e&&(r+=e,n.push(r))}),n}}}),en=(n(166),Object(Dt.a)(Xt,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("nav",{staticClass:"breadcrumb",class:{disable:!e.enable}},[e.enable?t("ol",{attrs:{vocab:"https://schema.org/",typeof:"BreadcrumbList"}},e._l(e.config,(function(n,r){return t("li",{key:n.url,class:{"is-active":e.config.length-1===r},attrs:{property:"itemListElement",typeof:"ListItem"}},[t("RouterLink",{attrs:{to:n.url,property:"item",typeof:"WebPage"}},[e.icon&&n.icon?t("i",{class:`iconfont ${e.iconPrefix}${n.icon}`}):e._e(),e._v(" "),t("span",{attrs:{property:"name"}},[e._v(e._s(n.title))])]),e._v(" "),t("meta",{attrs:{property:"position",content:r+1}})],1)})),0):e._e()])}),[],!1,null,null,null).exports),tn=r.a.extend({name:"Pagination",model:{prop:"currentPage",event:"change"},props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},data:()=>({input:""}),computed:{totalPages(){return Math.ceil(this.total/this.perPage)},enable(){return Boolean(this.totalPages)&&1!==this.totalPages},displayLeftEllipsis(){return!(this.totalPages<7)&&this.currentPage>4},displayRightEllipsis(){return!(this.totalPages<7)&&this.currentPage=7&&(e<=4&&e4&&e>=t-3?(r=t,n=t-4):t>7&&(n=e-2,r=e+2));for(let e=n;e<=r;e++)o.push(e);return o},locales(){return{"/":{prev:"Prev",next:"Next",navigate:"Jump to",button:"Go",errorText:"Please enter a number between 1 and $page !"}}[this.$localePath||"/"]}},mounted(){const{index:e}=this.$route.query;this.navigate(e?Number(e):1)},methods:{navigate(e){const t={...this.$route.query};t.page===e.toString()||1===e&&!t.page||(this.$emit("change",e),1===e?delete t.page:t.page=e.toString(),this.$router.push({path:this.$route.path,query:t}))},jumpPage(e){const t=parseInt(e);t<=this.totalPages&&t>0?this.navigate(t):alert(this.locales.errorText.replace(/\$page/g,this.totalPages.toString()))}}}),nn=(n(167),Object(Dt.a)(tn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"pagination-wrapper"},[e.enable?t("div",{staticClass:"pagination-list"},[t("div",{staticClass:"btn-group"},[e.currentPage>1?t("div",{staticClass:"prev",attrs:{role:"navigation",unselectable:"on"},on:{click:function(t){return e.navigate(e.currentPage-1)}}},[e._v("\n "+e._s(e.locales.prev)+"\n ")]):e._e(),e._v(" "),e.displayLeftEllipsis?t("div",{attrs:{role:"navigation"},on:{click:function(t){return e.navigate(1)}}},[e._v("\n 1\n ")]):e._e(),e._v(" "),e.displayLeftEllipsis?t("div",{staticClass:"ellipsis"},[e._v("...")]):e._e(),e._v(" "),e._l(e.indexs,(function(n){return t("div",{key:n,class:{active:e.currentPage===n},attrs:{role:"navigation"},on:{click:function(t){return e.navigate(n)}}},[e._v("\n "+e._s(n)+"\n ")])})),e._v(" "),e.displayRightEllipsis?t("div",{staticClass:"ellipsis"},[e._v("...")]):e._e(),e._v(" "),e.displayRightEllipsis?t("div",{attrs:{role:"navigation"},on:{click:function(t){return e.navigate(e.totalPages)}}},[e._v("\n "+e._s(e.totalPages)+"\n ")]):e._e(),e._v(" "),e.currentPage({canFullscreen:!1,isFullscreen:!1}),mounted(){this.canFullscreen=rn.isEnabled&&this.enable},methods:{click(){rn.isEnabled&&rn.toggle().then(()=>{this.isFullscreen=rn.isFullscreen})}}}),an=(n(168),Object(Dt.a)(on,(function(){var e=this._self._c;this._self._setupProxy;return this.canFullscreen?e("button",{class:this.isFullscreen?"cancel-full-screen":"full-screen",attrs:{"aria-pressed":this.isFullscreen},on:{click:this.click}},[e("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[this.isFullscreen?e("path",{attrs:{d:"M778.46755555 78.62044445H247.92177778c-102.51377778 0-186.02666667 83.51288889-186.02666667 186.02666666v530.432c0 102.51377778 83.51288889 186.02666667 186.02666667 186.02666667h530.432c102.51377778 0 186.70933333-83.51288889 186.02666667-186.02666667V264.64711111c0.11377778-102.62755555-83.39911111-186.02666667-185.9128889-186.02666666zM250.88 574.35022222h171.12177778c23.32444445 0 43.12177778 19.11466667 43.80444444 43.80444445v171.12177778c0 24.00711111-19.11466667 43.12177778-43.12177777 43.12177777-12.06044445 0-22.64177778-5.00622222-30.37866667-12.74311111s-12.74311111-19.11466667-12.74311111-30.37866666v-66.44622223L224.59733333 877.90933333c-16.95288889 16.95288889-44.60088889 16.95288889-61.55377778 0-16.95288889-16.95288889-16.95288889-44.60088889 0-61.55377778l154.96533334-154.96533333h-66.44622222c-24.00711111 0-43.12177778-19.11466667-43.12177778-43.12177777 0-24.12088889 18.432-43.91822222 42.43911111-43.91822223z m521.89866667-98.87288889H601.65688889c-23.32444445 0-43.12177778-19.11466667-43.80444444-43.80444444V260.55111111c0-24.00711111 19.11466667-43.12177778 43.12177777-43.12177778 12.06044445 0 22.64177778 5.00622222 30.37866667 12.74311112s12.74311111 19.11466667 12.74311111 30.37866666v66.44622222l154.96533333-154.96533333c16.95288889-16.95288889 44.60088889-16.95288889 61.55377778 0 16.95288889 16.95288889 16.95288889 44.60088889 0 61.55377778L705.536 388.55111111h66.44622222c24.00711111 0 43.12177778 19.11466667 43.12177778 43.12177778 0.11377778 24.00711111-18.31822222 43.80444445-42.32533333 43.80444444z"}}):e("path",{attrs:{d:"M762.77333333 90.24H265.49333333c-96.10666667 0-174.4 78.29333333-174.4 174.4v497.28c0 96.10666667 78.29333333 174.4 174.4 174.4h497.28c96.10666667 0 175.04-78.29333333 174.4-174.4V264.64c0-96.21333333-78.18666667-174.4-174.4-174.4z m-387.2 761.17333333H215.04c-21.86666667 0-40.42666667-17.92-41.06666667-41.06666666V649.92c0-22.50666667 17.92-40.42666667 40.42666667-40.42666667 11.30666667 0 21.22666667 4.69333333 28.48 11.94666667 7.25333333 7.25333333 11.94666667 17.92 11.94666667 28.48v62.29333333l145.28-145.28c15.89333333-15.89333333 41.81333333-15.89333333 57.70666666 0 15.89333333 15.89333333 15.89333333 41.81333333 0 57.70666667L312.53333333 769.92h62.29333334c22.50666667 0 40.42666667 17.92 40.42666666 40.42666667s-17.17333333 41.06666667-39.68 41.06666666z m274.66666667-685.65333333H810.66666667c21.86666667 0 40.42666667 17.92 41.06666666 41.06666667v160.42666666c0 22.50666667-17.92 40.42666667-40.42666666 40.42666667-11.30666667 0-21.22666667-4.69333333-28.48-11.94666667-7.25333333-7.25333333-11.94666667-17.92-11.94666667-28.48V305.06666667L625.6 450.34666667c-15.89333333 15.89333333-41.81333333 15.89333333-57.70666667 0-15.89333333-15.89333333-15.89333333-41.81333333 0-57.70666667l145.28-145.28h-62.29333333c-22.50666667 0-40.42666667-17.92-40.42666667-40.42666667s17.17333333-41.17333333 39.78666667-41.17333333z"}})])]):this._e()}),[],!1,null,null,null).exports);var sn=({Vue:e})=>{Jt.name&&e.component("BackToTop",Jt),Zt.name&&e.component("Badge",Zt),en.name&&e.component("BreadCrumb",en),nn.name&&e.component("Pagination",nn),an.name&&e.component("ScreenFull",an)},cn=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{staticClass:"icon icon-arrow-left",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M401.4 224h-214l83-79.4c11.9-12.5 11.9-32.7 0-45.2s-31.2-12.5-43.2 0L89 233.4c-6 5.8-9 13.7-9 22.4v.4c0 8.7 3 16.6 9 22.4l138.1 134c12 12.5 31.3 12.5 43.2 0 11.9-12.5 11.9-32.7 0-45.2l-83-79.4h214c16.9 0 30.6-14.3 30.6-32 .1-18-13.6-32-30.5-32z"}})])}),[],!1,null,null,null).exports,ln=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{staticClass:"icon icon-arrow-right",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M284.9 412.6l138.1-134c6-5.8 9-13.7 9-22.4v-.4c0-8.7-3-16.6-9-22.4l-138.1-134c-12-12.5-31.3-12.5-43.2 0-11.9 12.5-11.9 32.7 0 45.2l83 79.4h-214c-17 0-30.7 14.3-30.7 32 0 18 13.7 32 30.6 32h214l-83 79.4c-11.9 12.5-11.9 32.7 0 45.2 12 12.5 31.3 12.5 43.3 0z"}})])}),[],!1,null,null,null).exports,un=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{staticClass:"icon close-icon",attrs:{width:"23",height:"22",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M1.12.358a1.224 1.224 0 011.729 0l8.92 8.914L20.686.358a1.224 1.224 0 011.73 1.728L13.497 11l8.92 8.913a1.222 1.222 0 11-1.73 1.729l-8.919-8.913-8.92 8.913a1.224 1.224 0 01-1.729-1.729L10.04 11l-8.92-8.914a1.222 1.222 0 010-1.728z",fill:"currentColor"}})])}),[],!1,null,null,null).exports;const pn={"/":{install:"Install",iOSInstall:"Tap the share button and then 'Add to Homescreen'",cancel:"Cancel",close:"Close",prevImage:"Previous Image",nextImage:"Next Image",desc:"Description",feature:"Key Features",explain:"This app can be installed on your PC or mobile device. This will allow this web app to look and behave like any other installed app. You will find it in your app lists and be able to pin it to your home screen, start menus or task bars. This installed web app will also be able to safely interact with other apps and your operating system. ",hint:"New content found.",update:"New content is available."}};let fn,dn;var hn=r.a.extend({name:"PWAInstallModal",components:{ArrowLeftIcon:cn,ArrowRightIcon:ln,CloseIcon:un},props:{useHint:{type:Boolean,default:!1}},data:()=>({manifest:{},isIOS:!1,deferredprompt:null}),computed:{locales(){return pn[this.$localePath||"/"]}},mounted(){window.hasOwnProperty("BeforeInstallPromptEvent")&&(dn=e=>{this.deferredprompt=e,this.$emit("can-install",!0),e.preventDefault()},window.addEventListener("beforeinstallprompt",dn),this.getManifest(),fn=e=>{"Escape"===e.key&&this.$emit("toogle",!1)},document.addEventListener("keyup",fn))},beforeDestroy(){window.hasOwnProperty("BeforeInstallPromptEvent")&&document.removeEventListener("beforeinstallprompt",dn),document.removeEventListener("keyup",fn)},methods:{async getManifest(){const e=localStorage.getItem("manifest");if(e)this.manifest=JSON.parse(e);else try{const e=await fetch(this.$withBase("manifest.webmanifest")),t=await e.json();this.manifest=t,localStorage.setItem("manifest",JSON.stringify(t))}catch(e){console.error("Error getting manifest, check that you have a valid web manifest or network connection")}},scrollToLeft(){const e=document.querySelector(".screenshot");e&&e.scrollBy({left:-e.clientWidth,top:0,behavior:"smooth"})},scrollToRight(){const e=document.querySelector(".screenshot");e&&e.scrollBy({left:e.clientWidth,top:0,behavior:"smooth"})},async install(){if(this.deferredprompt){this.deferredprompt.prompt(),document.dispatchEvent(new CustomEvent("show"));if("accepted"===(await this.deferredprompt.userChoice).outcome)return console.info("PWA has been installed"),this.$emit("toogle",!1),this.$emit("can-install",!1),!0;console.info("You choose to not install PWA"),this.$emit("toogle",!1),this.$emit("can-install",!1)}return!1},hint(){console.info("You accepted the install hint"),this.$emit("hint")}}}),vn=(n(169),Object(Dt.a)(hn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{attrs:{id:"install-modal-wrapper"}},[t("div",{staticClass:"background",on:{click:function(t){return e.$emit("toogle",!1)}}}),e._v(" "),t("div",{staticClass:"install-modal"},[t("div",{staticClass:"header"},[t("button",{staticClass:"close-button",attrs:{"aria-label":e.locales.close},on:{click:function(t){return e.$emit("toogle",!1)}}},[t("CloseIcon")],1),e._v(" "),t("div",{staticClass:"logo"},[e.manifest.icons?t("img",{attrs:{src:e.manifest.icons[0].src,alt:"App Logo"}}):e._e(),e._v(" "),t("div",{staticClass:"title"},[t("h1",[e._v(e._s(e.manifest.short_name||e.manifest.name))]),e._v(" "),t("p",{staticClass:"desc"},[e._v(e._s(e.locales.explain))])])])]),e._v(" "),t("div",{staticClass:"content"},[t("div",{staticClass:"highlight"},[e.manifest.features?t("div",{staticClass:"feature-wrapper"},[t("h3",[e._v(e._s(e.locales.feature))]),e._v(" "),e.manifest.features?t("ul",e._l(e.manifest.features,(function(n){return t("li",{key:n,domProps:{textContent:e._s(n)}})})),0):e._e()]):e._e(),e._v(" "),e.manifest.screenshots?t("div",{staticClass:"screenshot-wrapper"},[t("button",{attrs:{"aria-label":e.locales.prevImage},on:{click:e.scrollToLeft}},[t("ArrowLeftIcon")],1),e._v(" "),t("section",{staticClass:"screenshot"},e._l(e.manifest.screenshots,(function(e){return t("div",{key:e.src},[t("img",{attrs:{alt:"App Screenshot",src:e.src}})])})),0),e._v(" "),t("button",{attrs:{"aria-label":e.locales.nextImage},on:{click:e.scrollToRight}},[t("ArrowRightIcon")],1)]):e._e()]),e._v(" "),t("div",{staticClass:"description"},[t("h3",{domProps:{textContent:e._s(e.locales.desc)}}),e._v(" "),t("p",{domProps:{textContent:e._s(e.manifest.description)}})])]),e._v(" "),e.useHint?t("div",{staticClass:"ios-text",on:{click:e.hint}},[t("p",[e._v(e._s(e.locales.iOSInstall))]),e._v(" "),t("button",{staticClass:"success"},[e._v("Got it!")])]):t("div",{staticClass:"button-wrapper"},[t("button",{staticClass:"install-button",on:{click:e.install}},[e._v("\n "+e._s(e.locales.install)+" "),t("span",[e._v(e._s(e.manifest.short_name))])]),e._v(" "),t("button",{staticClass:"cancel-button",on:{click:function(t){return e.$emit("toogle",!1)}}},[e._v("\n "+e._s(e.locales.cancel)+"\n ")])])])])}),[],!1,null,null,null).exports),mn=r.a.extend({name:"PWAInstall",components:{PWAInstallModal:vn},data:()=>({canInstall:!1,hasRelatedApps:!1,isOpen:!1,isIOS:!1,isSafari:!1,hinted:!1}),computed:{install(){return pn[this.$localePath||"/"].install},useHint(){return this.isIOS&&this.isSafari&&!1===this.hinted},showInstall(){return this.hasRelatedApps&&this.canInstall||this.useHint}},mounted(){if(this.getInstalledStatus()){const{userAgent:e}=navigator;this.isIOS=e.includes("iPhone")||e.includes("iPad")||Boolean(e.includes("Macintosh")&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2),this.isSafari=navigator.userAgent.includes("Safari")&&!e.includes("Chrome"),this.hinted=Boolean(localStorage.getItem("iOS-pwa-hint"))}"getInstalledRelatedApps"in navigator&&navigator.getInstalledRelatedApps().then(e=>{this.hasRelatedApps=e.length>0})},methods:{getInstalledStatus:()=>navigator.standalone?navigator.standalone:matchMedia("(display-mode: standalone)").matches,hint(){this.isOpen=!1,this.hinted=!0,localStorage.setItem("iOS-pwa-hint","hinted")}}}),gn=(n(170),Object(Dt.a)(mn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{attrs:{id:"pwa-install"}},[e.showInstall?t("button",{staticClass:"modal-button",attrs:{"use-hint":e.useHint},domProps:{textContent:e._s(e.install)},on:{click:function(t){e.isOpen=!0}}}):e._e(),e._v(" "),t("PWAInstallModal",{directives:[{name:"show",rawName:"v-show",value:e.isOpen,expression:"isOpen"}],on:{"can-install":function(t){e.canInstall=t},hint:e.hint,toogle:function(t){e.isOpen=t}}})],1)}),[],!1,null,null,null).exports),yn=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{attrs:{viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M949.948959 146.249899l0 255.82655c0 21.980617-13.988596 35.969213-35.969213 35.969213l-255.82655\n 0c-13.988596 0-25.982768-7.992021-33.972742-21.980617-5.997598-13.988596-4.001127-27.977191\n 7.990998-39.97034l79.941704-77.945233c-55.954383-51.973722-121.917724-77.955466-199.862957-77.955466-37.974893 0-75.949786 8.002254-113.924679 21.99085-37.974893 15.984043-67.947532 37.974893-91.933829\n 63.956637-25.981744 23.986297-47.972595 53.958936-63.956637 91.933829-29.982872 73.954339-29.982872\n 153.895019 0 227.849358 15.984043 37.975916 37.974893 67.947532 63.956637 91.933829 23.986297 25.982768\n 53.958936 47.973618 91.933829 63.956637 37.974893 13.988596 75.949786 21.99085 113.924679 21.99085\n 45.966914 0 87.941911-9.997702 127.913275-29.981848 41.97602-17.989723 75.950809-45.966914\n 101.930507-83.942831 7.993045-4.001127 11.994172-5.995551 13.988596-5.995551 5.997598 0 9.998725\n 1.994424 13.988596 5.995551l77.957513 77.945233c3.988848 4.001127 5.986341 7.993045 5.986341\n 11.994172 0 1.994424-1.99647 5.995551-3.990894 11.994172-43.972491 51.962465-93.940532\n 91.933829-151.898549 117.91455-53.958936 25.982768-115.921149 39.971363-185.874361\n 39.971363-61.96119 0-119.921253-11.983939-169.889295-33.972742C284.40084 889.74325 236.438479\n 857.764931 202.464713\n 821.785485c-35.979446-33.972742-67.957765-81.936127-93.939509-139.897214-45.966914-101.930507-45.966914-237.846036 0-339.777567 25.981744-57.960063 57.960063-105.922425 93.939509-139.89619\n 33.973766-35.979446 81.936127-67.957765 139.89619-93.939509 49.968042-21.99085\n 107.928105-33.973766 169.889295-33.973766 55.963593 0 109.923552 9.987468 161.886017\n 29.972639 53.969169 21.99085 101.932554 51.963489 139.907447 89.938382l73.954339-73.944106c9.987468-9.997702 23.987321-13.988596 39.971363-8.002254C941.956937 120.268154 949.948959 132.261303\n 949.948959 146.249899z"}})])}),[],!1,null,null,null).exports;const bn={all:_n=_n||new Map,on:function(e,t){var n=_n.get(e);n?n.push(t):_n.set(e,[t])},off:function(e,t){var n=_n.get(e);n&&(t?n.splice(n.indexOf(t)>>>0,1):_n.set(e,[]))},emit:function(e,t){var n=_n.get(e);n&&n.slice().map((function(e){e(t)})),(n=_n.get("*"))&&n.slice().map((function(n){n(e,t)}))}};var _n;var wn=r.a.extend({name:"SWHintPopup",components:{UpdateIcon:yn},data:()=>({enabled:!1}),computed:{message(){return pn[this.$localePath||"/"].hint}},mounted(){bn.on("updatefound",()=>{navigator.serviceWorker.getRegistration().then(e=>{e&&e.active&&(this.enabled=!0)})}),bn.on("updated",()=>{this.enabled=!1})},methods:{uninstall(){this.enabled&&(window.location.reload(!0),this.enabled=!1)}}}),xn=(n(171),Object(Dt.a)(wn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition",{attrs:{name:"sw-hint-popup"}},[e._t("default",(function(){return[e.enabled?t("div",{staticClass:"sw-hint-popup",attrs:{role:"button",tabindex:"0"},on:{click:e.uninstall}},[e._v("\n "+e._s(e.message)+"\n "),t("span",{staticClass:"icon-wrapper"},[t("UpdateIcon")],1)]):e._e()]}),{reload:e.reload,enabled:e.enabled,message:e.message})],2)}),[],!1,null,null,null).exports),Cn=r.a.extend({name:"SWUpdatePopup",components:{UpdateIcon:yn},data:()=>({registration:null}),computed:{enabled(){return Boolean(this.registration)},message(){return pn[this.$localePath||"/"].update}},mounted(){bn.on("updated",e=>{e&&(this.registration=e)})},methods:{reload(){this.registration&&((e=>{const t=e.waiting;if(!t)return;const n=new MessageChannel;t.postMessage({type:"SKIP_WAITING"},[n.port2])})(this.registration),this.registration=null)}}}),kn=(n(172),Object(Dt.a)(Cn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition",{attrs:{name:"sw-update-popup"}},[e._t("default",(function(){return[e.enabled?t("div",{staticClass:"sw-update-popup",attrs:{role:"button",tabindex:"0"},on:{click:e.reload}},[e._v("\n "+e._s(e.message)+"\n "),t("span",{staticClass:"icon-wrapper"},[t("UpdateIcon")],1)]):e._e()]}),{reload:e.reload,enabled:e.enabled,message:e.message})],2)}),[],!1,null,null,null).exports);var Pn=({Vue:e})=>{e.component("PWAInstall",gn),e.component("SWHintPopup",xn),e.component("SWUpdatePopup",kn)};n(173);const Sn=e=>{const t=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{x:n.left-t.left,y:n.top-t.top}};var $n=({Vue:e,router:t})=>{t.options.scrollBehavior=(t,n,r)=>{r?window.scrollTo({top:r.y,behavior:"smooth"}):t.hash?e.$vuepress.$get("disableScrollBehavior")||setTimeout(()=>{const e=decodeURI(t.hash.slice(1)),n=document.getElementById(e)||document.querySelector(`[name='${e}']`);n&&window.scrollTo({top:Sn(n).y,behavior:"smooth"})},500):window.scrollTo({top:0,behavior:"smooth"})}},Tn={tag:{},category:{}};class On{constructor(e,t){this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach(e=>{const{pageKeys:n}=this._metaMap[e];this._metaMap[e].pages=n.map(e=>function(e,t){for(let n=0;n{const{pages:n,path:r}=this._metaMap[t];e.push({name:t,pages:n,path:r})}),e}getItemByName(e){return this._metaMap[e]}}var En=n(62);const An=n.n(En)()("plugin-blog:pagination");class jn{constructor(e,t,n){An("pagination",e);const{pages:r,prevText:o,nextText:i}=e,{path:a}=n;this._prevText=o,this._nextText=i;for(let e=0,t=r.length;ee.filter(t,e.id,e.pid)).sort(e.sorter)}setIndexPage(e){this._indexPage=e}get length(){return this._paginationPages.length}get pages(){const[e,t]=this._currentPage.interval;return this._matchedPages.slice(e,t+1)}get hasPrev(){return 0!==this.paginationIndex}get prevLink(){return this.hasPrev?this.paginationIndex-1==0&&this._indexPage?this._indexPage:this._paginationPages[this.paginationIndex-1].path:null}get hasNext(){return this.paginationIndex!==this.length-1}get nextLink(){return this.hasNext?this._paginationPages[this.paginationIndex+1].path:null}get prevText(){return this._prevText}get nextText(){return this._nextText}getSpecificPageLink(e){return this._paginationPages[e].path}}const Ln=new class{constructor(e){this.paginations=e}get pages(){return r.a.$vuepress.$get("siteData").pages}getPagination(e,t,n){An("id",t),An("pid",e);const r=this.paginations.filter(n=>n.id===t&&n.pid===e)[0];return new jn(r,this.pages,n)}}([]);var In={comment:{enabled:!1,service:""},email:{enabled:!1},feed:{rss:!1,atom:!1,json:!1}};n(176);var Mn=({Vue:e})=>{Promise.all([n.e(0),n.e(112)]).then(n.t.bind(null,565,7)),Promise.all([n.e(0),n.e(113)]).then(n.t.bind(null,566,7)),Ht.a.name&&e.component("ChartJS",Ht.a),Ht.a.name&&e.component("CodeDemo",Ht.a),Ht.a.name&&e.component("CodeGroup",Ht.a),Ht.a.name&&e.component("CodeGroupItem",Ht.a),Ht.a.name&&e.component("FlowChart",Ht.a),Ht.a.name&&e.component("Mermaid",Ht.a),Ht.a.name&&e.component("Presentation",Ht.a)};const Rn=e=>({src:e.src,w:e.naturalWidth,h:e.naturalHeight,title:e.alt}),Bn={"/":{close:"Close",fullscreen:"Switch to full screen",share:"Share",zoom:"Zoom in/out",prev:"Prev (Arrow Left)",next:"Next (Arrow Right)",buttons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}]}};var Nn=r.a.extend({name:"PhotoSwipe",computed:{locales(){return Bn[this.$localePath||"/"]}},watch:{$route(){this.initPhotoSwipe()}},mounted(){this.initPhotoSwipe()},methods:{initPhotoSwipe(){const e=document.querySelector(".pswp");Promise.all([n.e(111).then(n.t.bind(null,567,7)),n.e(111).then(n.t.bind(null,568,7)),new Promise(e=>setTimeout(()=>e(),500))]).then(([t,n])=>{(e=>{const t=Array.from(document.querySelectorAll(e));return Promise.all(t.map(e=>new Promise((t,n)=>{e.complete?t(Rn(e)):(e.onload=()=>t(Rn(e)),e.onerror=e=>n(e))}))).then(e=>({elements:t,infos:e}))})(".theme-default-content :not(a) > img").then(({elements:r,infos:o})=>{r.forEach((r,i)=>{r.onclick=()=>{new t.default(e,n.default,o,{shareButtons:this.locales.buttons,index:i}).init()}})})})}}}),Dn=(n(177),Object(Dt.a)(Nn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"pswp",attrs:{tabindex:"-1",role:"dialog","aria-hidden":"true"}},[t("div",{staticClass:"pswp__bg"}),e._v(" "),t("div",{staticClass:"pswp__scroll-wrap"},[e._m(0),e._v(" "),t("div",{staticClass:"pswp__ui pswp__ui--hidden"},[t("div",{staticClass:"pswp__top-bar"},[t("div",{staticClass:"pswp__counter"}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--close",attrs:{title:e.locales.close,"aria-label":e.locales.close}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--share",attrs:{title:e.locales.share,"aria-label":e.locales.share}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--fs",attrs:{title:e.locales.fullscreen,"aria-label":e.locales.fullscreen}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--zoom",attrs:{title:e.locales.zoom,"aria-label":e.locales.zoom}}),e._v(" "),e._m(1)]),e._v(" "),e._m(2),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--arrow--left",attrs:{title:e.locales.prev,"aria-label":e.locales.prev}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--arrow--right",attrs:{title:e.locales.next,"aria-label":e.locales.next}}),e._v(" "),e._m(3)])])])}),[function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__container"},[e("div",{staticClass:"pswp__item"}),this._v(" "),e("div",{staticClass:"pswp__item"}),this._v(" "),e("div",{staticClass:"pswp__item"})])},function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__preloader"},[e("div",{staticClass:"pswp__preloader__icn"},[e("div",{staticClass:"pswp__preloader__cut"},[e("div",{staticClass:"pswp__preloader__donut"})])])])},function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__share-modal pswp__share-modal--hidden pswp__single-tap"},[e("div",{staticClass:"pswp__share-tooltip"})])},function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__caption"},[e("div",{staticClass:"pswp__caption__center"})])}],!1,null,null,null).exports);var Fn=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},qt,sn,Pn,$n,({Vue:e})=>{const t=Object.keys(Tn).map(e=>{const t=Tn[e],n="$"+e;return{[n](){const{pages:e}=this.$site;return new On(t,e)},["$current"+(e.charAt(0).toUpperCase()+e.slice(1))](){const e=this.$route.meta.id;return this[n].getItemByName(e)}}}).reduce((e,t)=>(Object.assign(e,t),e),{});t.$frontmatterKey=function(){const e=this["$"+this.$route.meta.id];return e||null},e.mixin({computed:t})},({Vue:e})=>{e.mixin({computed:{$pagination(){return this.$route.meta.pid&&this.$route.meta.id?this.$getPagination(this.$route.meta.pid,this.$route.meta.id):null}},methods:{$getPagination(e,t){return t=t||e,Ln.getPagination(e,t,this.$route)}}})},({Vue:e})=>{const t={$service:()=>In};e.mixin({computed:t})},{},Mn,({Vue:e})=>{e.component("PhotoSwipe",Dn)}],zn=["BackToTop","PWAInstall","SWUpdatePopup","PhotoSwipe"];class Un extends class{constructor(){this.store=new r.a({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){r.a.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Un.prototype,{getPageAsyncComponent:ct,getLayoutAsyncComponent:lt,getAsyncComponent:ut,getVueComponent:pt});var Hn={install(e){const t=new Un;e.$vuepress=t,e.prototype.$vuepress=t}};function Vn(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var Wn={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return dt("pageKey",t),r.a.component(t)||r.a.component(t,ct(t)),r.a.component(t)?e(t):e("")}},qn={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},Gn={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Kn=(n(178),n(179),Object(Dt.a)(Gn,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Yn={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(qe),r.a.use(Hn),r.a.mixin(function(e,t,n=r.a){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const o=new(e(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((e,t)=>(t.startsWith("$")&&(e[t]=i[t].get),e),a),{computed:a}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(Vn(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";Vn(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";Vn(e,o)?r(o):Vn(e,n)?r(n):r()}})}(n);const o={};try{await Promise.all(Fn.filter(e=>"function"==typeof e).map(t=>t({Vue:r.a,options:o,router:n,siteData:Ut,isServer:e})))}catch(e){console.error(e)}return{app:new r.a(Object.assign(o,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},zn.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file + */function o(e,t){for(var n in t)e[n]=t[n];return e}var i=/[!'()*]/g,a=function(e){return"%"+e.charCodeAt(0).toString(16)},s=/%2C/g,c=function(e){return encodeURIComponent(e).replace(i,a).replace(s,",")};function l(e){try{return decodeURIComponent(e)}catch(e){0}return e}var u=function(e){return null==e||"object"==typeof e?e:String(e)};function p(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=l(n.shift()),o=n.length>0?l(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]})),t):t}function f(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return c(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(c(t)):r.push(c(t)+"="+c(e)))})),r.join("&")}return c(t)+"="+c(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var d=/\/?$/;function h(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=v(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:y(t,o),matched:e?g(e):[]};return n&&(a.redirectedFrom=y(n,o)),Object.freeze(a)}function v(e){if(Array.isArray(e))return e.map(v);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=v(e[n]);return t}return e}var m=h(null,{path:"/"});function g(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function y(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||f)(r)+o}function b(e,t,n){return t===m?e===t:!!t&&(e.path&&t.path?e.path.replace(d,"")===t.path.replace(d,"")&&(n||e.hash===t.hash&&_(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&_(e.query,t.query)&&_(e.params,t.params))))}function _(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((function(n,o){var i=e[n];if(r[o]!==n)return!1;var a=t[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?_(i,a):String(i)===String(a)}))}function w(e){for(var t=0;t=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(i.path||""),f=t&&t.path||"/",d=l.path?k(l.path,f,n||i.append):f,h=function(e,t,n){void 0===t&&(t={});var r,o=n||p;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(u):u(a)}return r}(l.query,i.query,r&&r.options.parseQuery),v=i.hash||l.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:d,query:h,hash:v}}var W,q=function(){},G={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),a=i.location,s=i.route,c=i.href,l={},u=n.options.linkActiveClass,p=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,v=null==p?"router-link-exact-active":p,m=null==this.activeClass?f:this.activeClass,g=null==this.exactActiveClass?v:this.exactActiveClass,y=s.redirectedFrom?h(null,V(s.redirectedFrom),null,n):s;l[g]=b(r,y,this.exactPath),l[m]=this.exact||this.exactPath?l[g]:function(e,t){return 0===e.path.replace(d,"/").indexOf(t.path.replace(d,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,y);var _=l[g]?this.ariaCurrentValue:null,w=function(e){K(e)&&(t.replace?n.replace(a,q):n.push(a,q))},x={click:K};Array.isArray(this.event)?this.event.forEach((function(e){x[e]=w})):x[this.event]=w;var C={class:l},k=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:w,isActive:l[m],isExactActive:l[g]});if(k){if(1===k.length)return k[0];if(k.length>1||!k.length)return 0===k.length?e():e("span",{},k)}if("a"===this.tag)C.on=x,C.attrs={href:c,"aria-current":_};else{var P=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[f]=n.params[f]);return s.path=H(u.path,s.params),c(u,s,a)}if(s.path){s.params={};for(var d=0;d-1}function Pe(e,t){return ke(e)&&e._isRouter&&(null==t||e.type===t)}function Se(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function $e(e){return function(t,n,r){var o=!1,i=0,a=null;Te(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var c,l=Ae((function(t){var o;((o=t).__esModule||Ee&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:W.extend(t),n.components[s]=t,--i<=0&&r()})),u=Ae((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=ke(e)?e:new Error(t),r(a))}));try{c=e(l,u)}catch(e){u(e)}if(c)if("function"==typeof c.then)c.then(l,u);else{var p=c.component;p&&"function"==typeof p.then&&p.then(l,u)}}})),o||r()}}function Te(e,t){return Oe(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Oe(e){return Array.prototype.concat.apply([],e)}var Ee="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ae(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var je=function(e,t){this.router=e,this.base=function(e){if(!e)if(Y){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Le(e,t,n,r){var o=Te(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=W.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return Oe(r?o.reverse():o)}function Ie(e,t){if(t)return function(){return e.apply(t,arguments)}}je.prototype.listen=function(e){this.cb=e},je.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},je.prototype.onError=function(e){this.errorCbs.push(e)},je.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(Pe(e,be.redirected)&&i===m||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},je.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!Pe(e)&&ke(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},c=e.matched.length-1,l=o.matched.length-1;if(b(e,o)&&c===l&&e.matched[c]===o.matched[l])return this.ensureURL(),e.hash&&se(this.router,o,e,!1),s(((a=xe(i=o,e,be.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=me&&n;r&&this.listeners.push(ae());var o=function(){var n=e.current,o=Re(e.base);e.current===m&&o===e._startLocation||e.transitionTo(o,(function(e){r&&se(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ge(P(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ye(P(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Re(this.base)!==this.current.fullPath){var t=P(this.base+this.current.fullPath);e?ge(t):ye(t)}},t.prototype.getCurrentLocation=function(){return Re(this.base)},t}(je);function Re(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(P(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Be=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Re(e);if(!/^\/#/.test(t))return window.location.replace(P(e+"/#"+t)),!0}(this.base)||Ne()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=me&&t;n&&this.listeners.push(ae());var r=function(){var t=e.current;Ne()&&e.transitionTo(De(),(function(r){n&&se(e.router,r,t,!0),me||Ue(r.fullPath)}))},o=me?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ze(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Ue(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;De()!==t&&(e?ze(t):Ue(t))},t.prototype.getCurrentLocation=function(){return De()},t}(je);function Ne(){var e=De();return"/"===e.charAt(0)||(Ue("/"+e),!1)}function De(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Fe(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ze(e){me?ge(Fe(e)):window.location.hash=e}function Ue(e){me?ye(Fe(e)):window.location.replace(Fe(e))}var He=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){Pe(e,be.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(je),Ve=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Z(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!me&&!1!==e.fallback,this.fallback&&(t="hash"),Y||(t="abstract"),this.mode=t,t){case"history":this.history=new Me(this,e.base);break;case"hash":this.history=new Be(this,e.base,this.fallback);break;case"abstract":this.history=new He(this,e.base);break;default:0}},We={currentRoute:{configurable:!0}};Ve.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},We.currentRoute.get=function(){return this.history&&this.history.current},Ve.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Me||n instanceof Be){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;me&&o&&"fullPath"in e&&se(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ve.prototype.beforeEach=function(e){return Ge(this.beforeHooks,e)},Ve.prototype.beforeResolve=function(e){return Ge(this.resolveHooks,e)},Ve.prototype.afterEach=function(e){return Ge(this.afterHooks,e)},Ve.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ve.prototype.onError=function(e){this.history.onError(e)},Ve.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ve.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ve.prototype.go=function(e){this.history.go(e)},Ve.prototype.back=function(){this.go(-1)},Ve.prototype.forward=function(){this.go(1)},Ve.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ve.prototype.resolve=function(e,t,n){var r=V(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?P(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ve.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ve.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Ve.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ve.prototype,We);var qe=Ve;function Ge(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ve.install=function e(t){if(!e.installed||W!==t){e.installed=!0,W=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",x),t.component("RouterLink",G);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ve.version="3.6.5",Ve.isNavigationFailure=Pe,Ve.NavigationFailureType=be,Ve.START_LOCATION=m,Y&&window.Vue&&window.Vue.use(Ve);var Ke={"components/Anchor":()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,271)),"components/Clipboard":()=>Promise.resolve().then(n.bind(null,63)),"components/Common":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(27)]).then(n.bind(null,307)),"components/Home":()=>Promise.all([n.e(0),n.e(28)]).then(n.bind(null,435)),"components/MediaLinks":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,242)),"components/MyTransition":()=>Promise.all([n.e(0),n.e(29)]).then(n.bind(null,185)),"components/Page":()=>Promise.all([n.e(0),n.e(3),n.e(109),n.e(36)]).then(n.bind(null,433)),"components/PageFooter":()=>Promise.all([n.e(0),n.e(1),n.e(37)]).then(n.bind(null,291)),"components/PageMeta":()=>Promise.all([n.e(0),n.e(38)]).then(n.bind(null,354)),"components/PageNav":()=>Promise.all([n.e(0),n.e(39)]).then(n.bind(null,355)),"components/Password":()=>Promise.all([n.e(0),n.e(40)]).then(n.bind(null,292)),"icons/ArticleIcon":()=>n.e(49).then(n.bind(null,310)),"icons/AutoIcon":()=>n.e(50).then(n.bind(null,207)),"icons/BookIcon":()=>n.e(51).then(n.bind(null,314)),"icons/DarkIcon":()=>n.e(52).then(n.bind(null,208)),"icons/EditIcon":()=>n.e(53).then(n.bind(null,311)),"icons/EmptyIcon":()=>Promise.all([n.e(0),n.e(54)]).then(n.bind(null,315)),"icons/I18nIcon":()=>n.e(55).then(n.bind(null,272)),"icons/LightIcon":()=>n.e(56).then(n.bind(null,209)),"icons/LinkIcon":()=>n.e(57).then(n.bind(null,316)),"icons/LockIcon":()=>n.e(58).then(n.bind(null,295)),"icons/NextIcon":()=>n.e(59).then(n.bind(null,312)),"icons/Page404Icon":()=>Promise.all([n.e(0),n.e(60)]).then(n.bind(null,467)),"icons/PresentationIcon":()=>n.e(61).then(n.bind(null,296)),"icons/PrevIcon":()=>n.e(62).then(n.bind(null,313)),"icons/ProjectIcon":()=>n.e(63).then(n.bind(null,317)),"icons/StickyIcon":()=>n.e(64).then(n.bind(null,297)),"layouts/404":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(7)]).then(n.bind(null,572)),"layouts/Blog":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(5)]).then(n.bind(null,573)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(6)]).then(n.bind(null,574)),"layouts/Slide":()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,575)),"components/AlgoliaSearch/Dropdown":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,576)),"components/AlgoliaSearch/Full":()=>Promise.all([n.e(0),n.e(107)]).then(n.bind(null,571)),"components/Blog/ArticleInfo":()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,294)),"components/Blog/ArticleItem":()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,309)),"components/Blog/ArticleList":()=>Promise.all([n.e(0),n.e(4),n.e(15)]).then(n.bind(null,308)),"components/Blog/ArticleType":()=>Promise.all([n.e(0),n.e(16)]).then(n.bind(null,356)),"components/Blog/BlogHero":()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,358)),"components/Blog/BlogHome":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(4),n.e(18)]).then(n.bind(null,437)),"components/Blog/BlogInfo":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(19)]).then(n.bind(null,228)),"components/Blog/BlogInfoList":()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,304)),"components/Blog/BlogPage":()=>Promise.all([n.e(0),n.e(4),n.e(20)]).then(n.bind(null,436)),"components/Blog/BloggerInfo":()=>Promise.all([n.e(0),n.e(1),n.e(21)]).then(n.bind(null,205)),"components/Blog/CategoryList":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,347)),"components/Blog/ProjectList":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,359)),"components/Blog/TagList":()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,348)),"components/Blog/Timeline":()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,357)),"components/Blog/TimelineList":()=>Promise.all([n.e(0),n.e(26)]).then(n.bind(null,434)),"components/Navbar/DropdownLink":()=>Promise.all([n.e(0),n.e(30)]).then(n.bind(null,222)),"components/Navbar/NavLink":()=>Promise.all([n.e(0),n.e(31)]).then(n.bind(null,182)),"components/Navbar/NavLinks":()=>Promise.all([n.e(0),n.e(32)]).then(n.bind(null,269)),"components/Navbar/Navbar":()=>Promise.all([n.e(0),n.e(108),n.e(33)]).then(n.bind(null,290)),"components/Navbar/RepoLink":()=>Promise.all([n.e(0),n.e(34)]).then(n.bind(null,206)),"components/Navbar/SidebarButton":()=>Promise.all([n.e(0),n.e(35)]).then(n.bind(null,273)),"components/Sidebar/DropdownTransition":()=>Promise.all([n.e(0),n.e(41)]).then(n.bind(null,199)),"components/Sidebar/Sidebar":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(110),n.e(42)]).then(n.bind(null,293)),"components/Sidebar/SidebarDropdownLink":()=>Promise.all([n.e(0),n.e(43)]).then(n.bind(null,246)),"components/Sidebar/SidebarGroup":()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,266)),"components/Sidebar/SidebarLink":()=>Promise.all([n.e(0),n.e(44)]).then(n.bind(null,249)),"components/Sidebar/SidebarLinks":()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,224)),"components/Sidebar/SidebarNavLinks":()=>Promise.all([n.e(0),n.e(45)]).then(n.bind(null,270)),"components/Theme/DarkmodeSwitch":()=>Promise.all([n.e(0),n.e(46)]).then(n.bind(null,223)),"components/Theme/ThemeColor":()=>Promise.all([n.e(0),n.e(47)]).then(n.bind(null,245)),"components/Theme/ThemeOptions":()=>Promise.all([n.e(0),n.e(48)]).then(n.bind(null,236)),"icons/media/Baidu":()=>n.e(65).then(n.bind(null,438)),"icons/media/Bitbucket":()=>n.e(66).then(n.bind(null,439)),"icons/media/Dingding":()=>n.e(67).then(n.bind(null,440)),"icons/media/Discord":()=>n.e(68).then(n.bind(null,441)),"icons/media/Dribbble":()=>n.e(69).then(n.bind(null,442)),"icons/media/Email":()=>n.e(70).then(n.bind(null,443)),"icons/media/Evernote":()=>n.e(71).then(n.bind(null,444)),"icons/media/Facebook":()=>n.e(72).then(n.bind(null,445)),"icons/media/Flipboard":()=>n.e(73).then(n.bind(null,446)),"icons/media/Gitee":()=>n.e(74).then(n.bind(null,447)),"icons/media/Github":()=>n.e(75).then(n.bind(null,448)),"icons/media/Gitlab":()=>n.e(76).then(n.bind(null,449)),"icons/media/Gmail":()=>n.e(77).then(n.bind(null,450)),"icons/media/Instagram":()=>n.e(78).then(n.bind(null,451)),"icons/media/Lines":()=>n.e(79).then(n.bind(null,452)),"icons/media/Linkedin":()=>n.e(80).then(n.bind(null,453)),"icons/media/Pinterest":()=>n.e(81).then(n.bind(null,454)),"icons/media/Pocket":()=>n.e(82).then(n.bind(null,455)),"icons/media/QQ":()=>n.e(83).then(n.bind(null,456)),"icons/media/Qzone":()=>n.e(84).then(n.bind(null,457)),"icons/media/Reddit":()=>n.e(85).then(n.bind(null,458)),"icons/media/Rss":()=>n.e(86).then(n.bind(null,459)),"icons/media/Steam":()=>n.e(87).then(n.bind(null,460)),"icons/media/Twitter":()=>n.e(88).then(n.bind(null,461)),"icons/media/Wechat":()=>n.e(89).then(n.bind(null,462)),"icons/media/Weibo":()=>n.e(90).then(n.bind(null,463)),"icons/media/Whatsapp":()=>n.e(91).then(n.bind(null,464)),"icons/media/Youtube":()=>n.e(92).then(n.bind(null,465)),"icons/media/Zhihu":()=>n.e(93).then(n.bind(null,466)),NotFound:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(7)]).then(n.bind(null,572)),Blog:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(5)]).then(n.bind(null,573)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3),n.e(6)]).then(n.bind(null,574)),Slide:()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,575))},Ye={"v-4baedca8":()=>n.e(96).then(n.bind(null,577)),"v-4107fbf3":()=>n.e(103).then(n.bind(null,578)),"v-b3f91be2":()=>n.e(95).then(n.bind(null,579)),"v-1d58b70b":()=>n.e(100).then(n.bind(null,580)),"v-1b01c46d":()=>n.e(105).then(n.bind(null,581)),"v-247d6493":()=>n.e(102).then(n.bind(null,582)),"v-516d26d3":()=>n.e(94).then(n.bind(null,583)),"v-33a81633":()=>n.e(99).then(n.bind(null,584)),"v-0b093b49":()=>n.e(101).then(n.bind(null,585)),"v-0f7e23e4":()=>n.e(104).then(n.bind(null,586)),"v-4c61bdb3":()=>n.e(97).then(n.bind(null,587)),"v-7d1a76a1":()=>n.e(98).then(n.bind(null,588))};function Je(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Qe=/-(\w)/g,Ze=Je(e=>e.replace(Qe,(e,t)=>t?t.toUpperCase():"")),Xe=/\B([A-Z])/g,et=Je(e=>e.replace(Xe,"-$1").toLowerCase()),tt=Je(e=>e.charAt(0).toUpperCase()+e.slice(1));function nt(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(tt(Ze(t))):e(tt(t))||e(et(t))}const rt=Object.assign({},Ke,Ye),ot=e=>rt[e],it=e=>Ye[e],at=e=>Ke[e],st=e=>r.a.component(e);function ct(e){return nt(it,e)}function lt(e){return nt(at,e)}function ut(e){return nt(ot,e)}function pt(e){return nt(st,e)}function ft(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!pt(e)&&ut(e)){const t=await ut(e)();r.a.component(e,t.default)}}))}function dt(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ht=n(60),vt=n.n(ht),mt=n(61),gt=n.n(mt),yt={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${gt()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=_t(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=wt(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return vt()([{name:"description",content:this.$description}],e,this.siteMeta,xt)},updateCanonicalLink(){bt(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",_t(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){wt(null,this.currentMetaTags),bt()}};function bt(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function _t(e=""){return e?``:""}function wt(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function xt(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Ct=n(16),kt=n.n(Ct),Pt={mounted(){kt.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||r.a.component(e.name)||kt.a.start(),n()}),this.$router.afterEach(()=>{kt.a.done(),this.isSidebarOpen=!1})}},St=n(10);let $t;var Tt=r.a.extend({mounted(){$t=Object(St.a)(()=>{this.setActiveHash()},300),window.addEventListener("scroll",$t)},beforeDestroy(){window.removeEventListener("scroll",$t)},methods:{setActiveHash(){const e=Array.from(document.querySelectorAll(".sidebar-link")),t=Array.from(document.querySelectorAll(".header-anchor")).filter(t=>0===e.length||e.some(e=>e.hash===t.hash)),n=document.querySelector(".theme-default-content").offsetTop,r=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),o=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),i=window.innerHeight+r,a=decodeURIComponent(this.$route.hash),s=(e,n)=>{if(i===o)for(let e=n+1;e{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})};if(r-n<0&&a)s("#",-1);else for(let e=0;e=o.parentElement.offsetTop+0&&(!i||r-n({isElement:!1}),created(){this.onCopy=e=>{const t=getSelection().getRangeAt(0);if(String(t).lengthe(Ot.default,{props:{html:n.innerHTML,lang:o}})}).$mount(),{innerHTML:a,innerText:s}=i.$el;e.clipboardData?(e.clipboardData.setData("text/html",a),e.clipboardData.setData("text/plain",s)):window.clipboardData&&window.clipboardData.setData("text",s)}},watch:{isElement(e){if(!e)return;let{copyright:t=!Et.disabled}=this.$frontmatter;if(!t)return;"object"!=typeof t&&(t={});const n=t.noSelect||Et.noSelect;this.minLength=t.minLength||Et.minLength,this.noCopy=t.noCopy||Et.noCopy,n?this.$el.style.userSelect="none":this.$el.addEventListener("copy",this.onCopy)}},updated(){this.isElement="#comment"!==this.$el.nodeName},beforeDestory(){this.$el.removeEventListener("copy",this.onCopy)}};n(161);class jt{constructor(){const e=document.getElementById("message-container");e?this.containerElement=e:(this.containerElement=document.createElement("div"),this.containerElement.id="message-container",document.body.appendChild(this.containerElement))}pop(e,t=2e3){const n=document.createElement("div");n.className="message move-in",n.innerHTML=e,this.containerElement.appendChild(n),t>0&&setTimeout(()=>{this.close(n)},t)}close(e){e.className=e.className.replace("move-in",""),e.className+="move-out",e.addEventListener("animationend",()=>{e.remove()})}}n(162),n(65);let Lt;const It={},Mt={"/":{copy:"Copied successfully",hint:"Copy code"}},Rt=()=>!!navigator&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/iu.test(navigator.userAgent);var Bt=[yt,Pt,Tt,At,r.a.extend({mounted(){Lt=new jt,Rt()&&!It.showInMobile||this.genCopyButton()},updated(){Rt()&&!It.showInMobile||this.genCopyButton()},methods:{genCopyButton(){const e=It.selector||'.theme-default-content div[class*="language-"] pre';setTimeout(()=>{"string"==typeof e?document.querySelectorAll(e).forEach(this.insertCopyButton.bind(this)):Array.isArray(e)&&e.forEach(e=>{document.querySelectorAll(e).forEach(this.insertCopyButton.bind(this))})},It.delay||500)},insertCopyButton(e){if(!e.hasAttribute("copy-code-registerd")){const t=document.createElement("button");It.pure?(t.className="copy-code-pure-button",t.innerHTML=''):(t.className="copy-code-button",t.innerHTML=''),t.addEventListener("click",()=>{this.copyToClipboard(e.innerText)}),t.setAttribute("aria-label",Mt[this.$localePath||"/"].hint),t.setAttribute("data-balloon-pos","left"),e.parentElement&&e.parentElement.insertBefore(t,e),e.setAttribute("copy-code-registerd","")}},copyToClipboard(e){const t=document.getSelection(),n=!!(t&&t.rangeCount>0)&&t.getRangeAt(0),r=document.createElement("textarea");r.value=e,r.setAttribute("readonly",""),r.style.position="absolute",r.style.top="-9999px",document.body.appendChild(r),r.select(),document.execCommand("copy"),It.pure||Lt.pop(`${Mt[this.$localePath||"/"].copy} 🎉`,It.duration),document.body.removeChild(r),n&&t&&(t.removeAllRanges(),t.addRange(n))}}})],Nt={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return dt("layout",e),r.a.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},Dt=n(1),Ft=Object(Dt.a)(Nt,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ft,"mixins",Bt);const zt=[{name:"v-4baedca8",path:"/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-4baedca8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-4107fbf3",path:"/changelog/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-4107fbf3").then(n)}},{path:"/changelog/index.html",redirect:"/changelog/"},{path:"/changelog.html",redirect:"/changelog/"},{name:"v-b3f91be2",path:"/download/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-b3f91be2").then(n)}},{path:"/download/index.html",redirect:"/download/"},{path:"/download.html",redirect:"/download/"},{name:"v-1d58b70b",path:"/guide/Library-Reference-Statistics/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-1d58b70b").then(n)}},{path:"/guide/Library-Reference-Statistics/index.html",redirect:"/guide/Library-Reference-Statistics/"},{path:"/guide/Library-Reference-Statistics.html",redirect:"/guide/Library-Reference-Statistics/"},{name:"v-1b01c46d",path:"/guide/Marked-Popular-Library/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-1b01c46d").then(n)}},{path:"/guide/Marked-Popular-Library/index.html",redirect:"/guide/Marked-Popular-Library/"},{path:"/guide/Marked-Popular-Library.html",redirect:"/guide/Marked-Popular-Library/"},{name:"v-247d6493",path:"/guide/Mind-Mapping/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-247d6493").then(n)}},{path:"/guide/Mind-Mapping/index.html",redirect:"/guide/Mind-Mapping/"},{path:"/guide/Mind-Mapping.html",redirect:"/guide/Mind-Mapping/"},{name:"v-516d26d3",path:"/guide/PRIVACY/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-516d26d3").then(n)}},{path:"/guide/PRIVACY/index.html",redirect:"/guide/PRIVACY/"},{path:"/guide/PRIVACY.html",redirect:"/guide/PRIVACY/"},{name:"v-33a81633",path:"/guide/Package-Features-Analysis/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-33a81633").then(n)}},{path:"/guide/Package-Features-Analysis/index.html",redirect:"/guide/Package-Features-Analysis/"},{path:"/guide/Package-Features-Analysis.html",redirect:"/guide/Package-Features-Analysis/"},{name:"v-0b093b49",path:"/guide/Snapshot-Usage/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-0b093b49").then(n)}},{path:"/guide/Snapshot-Usage/index.html",redirect:"/guide/Snapshot-Usage/"},{path:"/guide/Snapshot-Usage.html",redirect:"/guide/Snapshot-Usage/"},{name:"v-0f7e23e4",path:"/guide/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-0f7e23e4").then(n)}},{path:"/guide/index.html",redirect:"/guide/"},{name:"v-4c61bdb3",path:"/guide/What-is-Native-Library-Architecture/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-4c61bdb3").then(n)}},{path:"/guide/What-is-Native-Library-Architecture/index.html",redirect:"/guide/What-is-Native-Library-Architecture/"},{path:"/guide/What-is-Native-Library-Architecture.html",redirect:"/guide/What-is-Native-Library-Architecture/"},{name:"v-7d1a76a1",path:"/guide/What-is-Registered-Component/",component:Ft,beforeEnter:(e,t,n)=>{ft("Layout","v-7d1a76a1").then(n)}},{path:"/guide/What-is-Registered-Component/index.html",redirect:"/guide/What-is-Registered-Component/"},{path:"/guide/What-is-Registered-Component.html",redirect:"/guide/What-is-Registered-Component/"},{name:"v-6453f364",path:"/article/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-6453f364").then(n)}},{path:"/article/index.html",redirect:"/article/"},{name:"v-4340f7e8",path:"/star/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-4340f7e8").then(n)}},{path:"/star/index.html",redirect:"/star/"},{name:"v-7d484ebf",path:"/encrypt/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-7d484ebf").then(n)}},{path:"/encrypt/index.html",redirect:"/encrypt/"},{name:"v-2470be33",path:"/slide/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-2470be33").then(n)}},{path:"/slide/index.html",redirect:"/slide/"},{name:"v-6319eb4e",path:"/timeline/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-6319eb4e").then(n)}},{path:"/timeline/index.html",redirect:"/timeline/"},{name:"v-b1564aac",path:"/tag/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-b1564aac").then(n)},meta:{pid:"tag",id:"tag"}},{path:"/tag/index.html",redirect:"/tag/"},{name:"v-28e6393c",path:"/category/",component:Ft,beforeEnter:(e,t,n)=>{ft("Blog","v-28e6393c").then(n)},meta:{pid:"category",id:"category"}},{path:"/category/index.html",redirect:"/category/"},{path:"*",component:Ft}],Ut={title:"LibChecker",description:"",base:"/LibChecker-Docs/",headTags:[["link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css?family=Roboto:400,400i,500,500i,700,700i&display=swap"}],["link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css?family=Noto+Sans+SC:400,500,700&display=swap"}],["link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css?family=Noto+Sans+TC:400,500,700&display=swap"}],["link",{rel:"icon",type:"image/png",size:"192x192",href:"/LibChecker-Docs/icon/android-icon-192x192.png"}],["link",{rel:"icon",type:"image/png",size:"32x32",href:"/LibChecker-Docs/icon/favicon-32x32.png"}],["link",{rel:"icon",type:"image/png",size:"96x96",href:"/LibChecker-Docs/icon/favicon-96x96.png"}],["link",{rel:"icon",type:"image/png",size:"16x16",href:"/LibChecker-Docs/icon/favicon-16x16.png"}],["link",{rel:"manifest",href:"/LibChecker-Docs/manifest.webmanifest",crossorigin:"use-credentials"}],["meta",{name:"theme-color",content:"#46bd87"}],["meta",{name:"viewport",content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"}]],pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/logo.png",action:[{text:"快速入门 →",link:"/guide/"}],features:[{title:"清晰快速",details:"有详情,也有统计,多种方式了解 App 的组成"},{title:"优雅美观",details:"遵循 Material Design,界面统一不凌乱,永远保持干净"},{title:"开放编纂",details:"主程序完全开源,并且开放在线规则库,任何人都可以参与贡献"}]},regularPath:"/",relativePath:"README.md",key:"v-4baedca8",path:"/",readingTime:{minutes:0,words:0},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"更新日志",frontmatter:{},regularPath:"/changelog.html",relativePath:"changelog.md",key:"v-4107fbf3",path:"/changelog/",readingTime:{minutes:10.22,words:3065},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"Download",frontmatter:{},regularPath:"/download.html",relativePath:"download.md",key:"v-b3f91be2",path:"/download/",readingTime:{minutes:.16,words:47},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"库引用统计",frontmatter:{},regularPath:"/guide/Library-Reference-Statistics.html",relativePath:"guide/Library-Reference-Statistics.md",key:"v-1d58b70b",path:"/guide/Library-Reference-Statistics/",headers:[{level:2,title:"使用方式",slug:"使用方式"}],readingTime:{minutes:.64,words:192},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"知名库标记",frontmatter:{},regularPath:"/guide/Marked-Popular-Library.html",relativePath:"guide/Marked-Popular-Library.md",key:"v-1b01c46d",path:"/guide/Marked-Popular-Library/",headers:[{level:2,title:"简介",slug:"简介"}],readingTime:{minutes:1.06,words:318},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"思维导图",frontmatter:{},regularPath:"/guide/Mind-Mapping.html",relativePath:"guide/Mind-Mapping.md",key:"v-247d6493",path:"/guide/Mind-Mapping/",headers:[{level:2,title:"思维导图",slug:"思维导图"}],readingTime:{minutes:.03,words:10},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{frontmatter:{},regularPath:"/guide/PRIVACY.html",relativePath:"guide/PRIVACY.md",key:"v-516d26d3",path:"/guide/PRIVACY/",readingTime:{minutes:2.73,words:818},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"包特性分析",frontmatter:{},regularPath:"/guide/Package-Features-Analysis.html",relativePath:"guide/Package-Features-Analysis.md",key:"v-33a81633",path:"/guide/Package-Features-Analysis/",headers:[{level:2,title:"Android App Bundles",slug:"android-app-bundles"},{level:2,title:"Kotlin",slug:"kotlin"}],readingTime:{minutes:.51,words:153},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"快照",frontmatter:{},regularPath:"/guide/Snapshot-Usage.html",relativePath:"guide/Snapshot-Usage.md",key:"v-0b093b49",path:"/guide/Snapshot-Usage/",headers:[{level:2,title:"什么是快照?",slug:"什么是快照"},{level:2,title:"使用方法",slug:"使用方法"},{level:2,title:"仪表盘区功能",slug:"仪表盘区功能"},{level:3,title:"对比",slug:"对比"},{level:3,title:"管理",slug:"管理"},{level:3,title:"备份与恢复",slug:"备份与恢复"},{level:3,title:"追踪",slug:"追踪"}],readingTime:{minutes:2.09,words:628},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"概要",frontmatter:{},regularPath:"/guide/",relativePath:"guide/README.md",key:"v-0f7e23e4",path:"/guide/",headers:[{level:2,title:"LibChecker 是什么?",slug:"libchecker-是什么"},{level:2,title:"LibChecker 能做什么?",slug:"libchecker-能做什么"},{level:2,title:"基础知识",slug:"基础知识"},{level:2,title:"使用方法",slug:"使用方法"},{level:2,title:"相关信息",slug:"相关信息"},{level:2,title:"LibChecker 将要做什么",slug:"libchecker-将要做什么"},{level:2,title:"思维导图",slug:"思维导图"}],readingTime:{minutes:2.15,words:646},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"什么是原生库架构?",frontmatter:{},regularPath:"/guide/What-is-Native-Library-Architecture.html",relativePath:"guide/What-is-Native-Library-Architecture.md",key:"v-4c61bdb3",path:"/guide/What-is-Native-Library-Architecture/",headers:[{level:2,title:"Android 中 ABI 的概念",slug:"android-中-abi-的概念"},{level:2,title:"ABI 和 CPU 的关系",slug:"abi-和-cpu-的关系"},{level:2,title:"为什么存在“无原生库”这一状态?",slug:"为什么存在-无原生库-这一状态"},{level:2,title:"为什么国内厂商对于升级 64 位不够积极?",slug:"为什么国内厂商对于升级-64-位不够积极"},{level:2,title:"我认为有以下几点原因:",slug:"我认为有以下几点原因"}],readingTime:{minutes:2.99,words:898},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{title:"什么是注册组件?",frontmatter:{},regularPath:"/guide/What-is-Registered-Component.html",relativePath:"guide/What-is-Registered-Component.md",key:"v-7d1a76a1",path:"/guide/What-is-Registered-Component/",headers:[{level:2,title:"基础知识",slug:"基础知识"},{level:2,title:"为什么我的 App 中有这些奇怪的组件?",slug:"为什么我的-app-中有这些奇怪的组件"}],readingTime:{minutes:1.63,words:489},updateTime:"2023年11月28日 05:43",updateTimeStamp:1701150222e3,createTime:"2023年11月28日 05:43",createTimeStamp:1701150222e3,contributors:[{name:"renovate[bot]",email:"29139614+renovate[bot]@users.noreply.github.com",commits:1}]},{frontmatter:{layout:"Blog"},regularPath:"/article/",key:"v-6453f364",path:"/article/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/star/",key:"v-4340f7e8",path:"/star/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/encrypt/",key:"v-7d484ebf",path:"/encrypt/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/slide/",key:"v-2470be33",path:"/slide/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog"},regularPath:"/timeline/",key:"v-6319eb4e",path:"/timeline/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",title:"Tag"},regularPath:"/tag/",key:"v-b1564aac",path:"/tag/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",title:"Category"},regularPath:"/category/",key:"v-28e6393c",path:"/category/",readingTime:{minutes:0,words:0}}],themeConfig:{locales:{"/":{selectText:"Language",label:"English",editLinkText:"在 GitHub 上编辑此页",serviceWorker:{updatePopup:{message:"发现新内容可用.",buttonText:"刷新"}},lastUpdated:"最后更新",lang:"en-US",ariaLabel:"Select language",meta:{contributor:"Contributors",editLink:"Edit this page",updateTime:"Last update"},themeColor:{themeColor:"Theme Color",themeMode:"Theme Mode"},encrypt:{title:"Please enter password",errorHint:"Please enter the correct password!"},error404:{hint:["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],back:"Go back",home:"Take me home"},blog:{article:"Articles",articleList:"Article List",category:"Category",tag:"Tags",timeline:"Timeline",timelineText:"Yesterday Once More!",allText:"All",intro:"Personal Intro",star:"Star",slides:"Slides",encrypt:"Encrypted"}}},author:"Absinthe",darkmode:"auto-switch",displayAllHeaders:!0,sidebarDepth:2,nav:[{text:"指南",link:"/guide/"},{text:"更新日志",link:"/changelog.html"},{text:"下载",link:"/download.html"}],serviceWorker:{updatePopup:!0},copyright:{status:"global"},mdEnhance:{align:!0},repo:"https://github.com/zhaobozhen/LibChecker-Docs",repoLabel:"Github",docsRepo:"https://github.com/zhaobozhen/LibChecker-Docs",docsDir:"docs",editLinks:!1,iconPrefix:"icon-",footer:{}},locales:{"/":{lang:"zh-Hans",description:"应用架构查看",path:"/"}}};n(163);var Ht=n(2),Vt=r.a.extend({name:"CommentService",components:{CommentProvider:Ht.a},data:()=>({options:{type:"disable"}}),computed:{pluginEnable(){return"disable"!==this.options.type&&(this.$frontmatter.comment||!1!==this.options.comment)}}}),Wt=Object(Dt.a)(Vt,(function(){var e=this._self._c;this._self._setupProxy;return e("div",{directives:[{name:"show",rawName:"v-show",value:this.pluginEnable,expression:"pluginEnable"}],staticClass:"comments-wrapper"},["vssue"===this.options.type?e("Vssue",{attrs:{title:this.$title}}):e("CommentProvider",{attrs:{config:this.options}})],1)}),[],!1,null,null,null).exports;var qt=({Vue:e})=>{e.component("CommentService",Wt)},Gt=n(26);let Kt;var Yt=r.a.extend({name:"BackToTop",data:()=>({scrollTop:0}),computed:{display(){return!1!==this.$page.frontmatter.backToTop&&this.scrollTop>300},hint(){return Gt.a[this.$localePath||"/"].backToTop}},mounted(){this.scrollTop=this.getScrollTop(),Kt=Object(St.a)(()=>{this.scrollTop=this.getScrollTop()},100),window.addEventListener("scroll",Kt)},beforeDestroy(){window.removeEventListener("scroll",Kt)},methods:{getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,scrollToTop(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0}}}),Jt=(n(164),Object(Dt.a)(Yt,(function(){var e=this._self._c;this._self._setupProxy;return e("transition",{attrs:{name:"fade"}},[this.display?e("button",{staticClass:"back-to-top",attrs:{"aria-label":this.hint,"data-balloon-pos":"left"},on:{click:this.scrollToTop}},[e("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M512 0C229.517 0 0 229.517 0 512s227.752 512 512 512c282.483 0 512-227.752 512-512C1024 229.517 794.483\n 0 512 0zM351.338 271.89h305.434c14.125 0 26.483 12.358 26.483 26.482s-12.358 26.483-26.483\n 26.483H351.338c-14.124 0-26.483-12.358-26.483-26.483 0-15.89 12.359-26.482 26.483-26.482z\n m331.917 303.669c-12.358 12.358-33.545 12.358-45.903 0L531.42 471.393v270.124c0 14.124-12.359\n 26.483-26.483 26.483s-26.483-12.359-26.483-26.483v-271.89l-105.93 104.166c-12.36 12.359-33.546 12.359-45.904\n 0-12.359-12.359-12.359-31.78 0-45.903l155.365-151.835c7.062-7.062 14.124-8.827 22.952-8.827s15.89 3.53 22.952\n 8.827L683.255 527.89c12.359 15.89 12.359 35.31 0 47.669z",fill:"currentColor"}})])]):this._e()])}),[],!1,null,null,null).exports),Qt=r.a.extend({name:"Badge",functional:!0,props:{type:{type:String,default:"tip"},text:{type:String,default:""},vertical:{type:String,default:"top"},color:{type:String,default:""}},render(e,{props:t,slots:n}){const r={class:["badge",t.type],style:{verticalAlign:t.vertical}};return t.color&&(r.class.push("diy"),r.style.backgroundColor=t.color,r["data-color"]=t.color),e("span",r,t.text||n().default)}}),Zt=(n(165),Object(Dt.a)(Qt,void 0,void 0,!1,null,"7b453e57",null).exports),Xt=r.a.extend({name:"BreadCrumb",props:{show:{type:Boolean,default:!0},icon:{type:Boolean,default:!0},iconPrefix:{type:String,default:""}},computed:{enable(){const e=this.$page.frontmatter.breadcrumb;return(this.show&&!1!==e||!0===e)&&this.config.length>1},displayIcon(){const e=this.$page.frontmatter.breadcrumbIcon;return this.enable&&(this.icon&&!1!==e||!0===e)},config(){const e=[],{pages:t}=this.$site,n=this.getLinks(this.$route);for(let r=1;r{o!==t.length-1?(r+=e+"/",n.push(r)):""!==e&&(r+=e,n.push(r))}),n}}}),en=(n(166),Object(Dt.a)(Xt,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("nav",{staticClass:"breadcrumb",class:{disable:!e.enable}},[e.enable?t("ol",{attrs:{vocab:"https://schema.org/",typeof:"BreadcrumbList"}},e._l(e.config,(function(n,r){return t("li",{key:n.url,class:{"is-active":e.config.length-1===r},attrs:{property:"itemListElement",typeof:"ListItem"}},[t("RouterLink",{attrs:{to:n.url,property:"item",typeof:"WebPage"}},[e.icon&&n.icon?t("i",{class:`iconfont ${e.iconPrefix}${n.icon}`}):e._e(),e._v(" "),t("span",{attrs:{property:"name"}},[e._v(e._s(n.title))])]),e._v(" "),t("meta",{attrs:{property:"position",content:r+1}})],1)})),0):e._e()])}),[],!1,null,null,null).exports),tn=r.a.extend({name:"Pagination",model:{prop:"currentPage",event:"change"},props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},data:()=>({input:""}),computed:{totalPages(){return Math.ceil(this.total/this.perPage)},enable(){return Boolean(this.totalPages)&&1!==this.totalPages},displayLeftEllipsis(){return!(this.totalPages<7)&&this.currentPage>4},displayRightEllipsis(){return!(this.totalPages<7)&&this.currentPage=7&&(e<=4&&e4&&e>=t-3?(r=t,n=t-4):t>7&&(n=e-2,r=e+2));for(let e=n;e<=r;e++)o.push(e);return o},locales(){return{"/":{prev:"Prev",next:"Next",navigate:"Jump to",button:"Go",errorText:"Please enter a number between 1 and $page !"}}[this.$localePath||"/"]}},mounted(){const{index:e}=this.$route.query;this.navigate(e?Number(e):1)},methods:{navigate(e){const t={...this.$route.query};t.page===e.toString()||1===e&&!t.page||(this.$emit("change",e),1===e?delete t.page:t.page=e.toString(),this.$router.push({path:this.$route.path,query:t}))},jumpPage(e){const t=parseInt(e);t<=this.totalPages&&t>0?this.navigate(t):alert(this.locales.errorText.replace(/\$page/g,this.totalPages.toString()))}}}),nn=(n(167),Object(Dt.a)(tn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"pagination-wrapper"},[e.enable?t("div",{staticClass:"pagination-list"},[t("div",{staticClass:"btn-group"},[e.currentPage>1?t("div",{staticClass:"prev",attrs:{role:"navigation",unselectable:"on"},on:{click:function(t){return e.navigate(e.currentPage-1)}}},[e._v("\n "+e._s(e.locales.prev)+"\n ")]):e._e(),e._v(" "),e.displayLeftEllipsis?t("div",{attrs:{role:"navigation"},on:{click:function(t){return e.navigate(1)}}},[e._v("\n 1\n ")]):e._e(),e._v(" "),e.displayLeftEllipsis?t("div",{staticClass:"ellipsis"},[e._v("...")]):e._e(),e._v(" "),e._l(e.indexs,(function(n){return t("div",{key:n,class:{active:e.currentPage===n},attrs:{role:"navigation"},on:{click:function(t){return e.navigate(n)}}},[e._v("\n "+e._s(n)+"\n ")])})),e._v(" "),e.displayRightEllipsis?t("div",{staticClass:"ellipsis"},[e._v("...")]):e._e(),e._v(" "),e.displayRightEllipsis?t("div",{attrs:{role:"navigation"},on:{click:function(t){return e.navigate(e.totalPages)}}},[e._v("\n "+e._s(e.totalPages)+"\n ")]):e._e(),e._v(" "),e.currentPage({canFullscreen:!1,isFullscreen:!1}),mounted(){this.canFullscreen=rn.isEnabled&&this.enable},methods:{click(){rn.isEnabled&&rn.toggle().then(()=>{this.isFullscreen=rn.isFullscreen})}}}),an=(n(168),Object(Dt.a)(on,(function(){var e=this._self._c;this._self._setupProxy;return this.canFullscreen?e("button",{class:this.isFullscreen?"cancel-full-screen":"full-screen",attrs:{"aria-pressed":this.isFullscreen},on:{click:this.click}},[e("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[this.isFullscreen?e("path",{attrs:{d:"M778.46755555 78.62044445H247.92177778c-102.51377778 0-186.02666667 83.51288889-186.02666667 186.02666666v530.432c0 102.51377778 83.51288889 186.02666667 186.02666667 186.02666667h530.432c102.51377778 0 186.70933333-83.51288889 186.02666667-186.02666667V264.64711111c0.11377778-102.62755555-83.39911111-186.02666667-185.9128889-186.02666666zM250.88 574.35022222h171.12177778c23.32444445 0 43.12177778 19.11466667 43.80444444 43.80444445v171.12177778c0 24.00711111-19.11466667 43.12177778-43.12177777 43.12177777-12.06044445 0-22.64177778-5.00622222-30.37866667-12.74311111s-12.74311111-19.11466667-12.74311111-30.37866666v-66.44622223L224.59733333 877.90933333c-16.95288889 16.95288889-44.60088889 16.95288889-61.55377778 0-16.95288889-16.95288889-16.95288889-44.60088889 0-61.55377778l154.96533334-154.96533333h-66.44622222c-24.00711111 0-43.12177778-19.11466667-43.12177778-43.12177777 0-24.12088889 18.432-43.91822222 42.43911111-43.91822223z m521.89866667-98.87288889H601.65688889c-23.32444445 0-43.12177778-19.11466667-43.80444444-43.80444444V260.55111111c0-24.00711111 19.11466667-43.12177778 43.12177777-43.12177778 12.06044445 0 22.64177778 5.00622222 30.37866667 12.74311112s12.74311111 19.11466667 12.74311111 30.37866666v66.44622222l154.96533333-154.96533333c16.95288889-16.95288889 44.60088889-16.95288889 61.55377778 0 16.95288889 16.95288889 16.95288889 44.60088889 0 61.55377778L705.536 388.55111111h66.44622222c24.00711111 0 43.12177778 19.11466667 43.12177778 43.12177778 0.11377778 24.00711111-18.31822222 43.80444445-42.32533333 43.80444444z"}}):e("path",{attrs:{d:"M762.77333333 90.24H265.49333333c-96.10666667 0-174.4 78.29333333-174.4 174.4v497.28c0 96.10666667 78.29333333 174.4 174.4 174.4h497.28c96.10666667 0 175.04-78.29333333 174.4-174.4V264.64c0-96.21333333-78.18666667-174.4-174.4-174.4z m-387.2 761.17333333H215.04c-21.86666667 0-40.42666667-17.92-41.06666667-41.06666666V649.92c0-22.50666667 17.92-40.42666667 40.42666667-40.42666667 11.30666667 0 21.22666667 4.69333333 28.48 11.94666667 7.25333333 7.25333333 11.94666667 17.92 11.94666667 28.48v62.29333333l145.28-145.28c15.89333333-15.89333333 41.81333333-15.89333333 57.70666666 0 15.89333333 15.89333333 15.89333333 41.81333333 0 57.70666667L312.53333333 769.92h62.29333334c22.50666667 0 40.42666667 17.92 40.42666666 40.42666667s-17.17333333 41.06666667-39.68 41.06666666z m274.66666667-685.65333333H810.66666667c21.86666667 0 40.42666667 17.92 41.06666666 41.06666667v160.42666666c0 22.50666667-17.92 40.42666667-40.42666666 40.42666667-11.30666667 0-21.22666667-4.69333333-28.48-11.94666667-7.25333333-7.25333333-11.94666667-17.92-11.94666667-28.48V305.06666667L625.6 450.34666667c-15.89333333 15.89333333-41.81333333 15.89333333-57.70666667 0-15.89333333-15.89333333-15.89333333-41.81333333 0-57.70666667l145.28-145.28h-62.29333333c-22.50666667 0-40.42666667-17.92-40.42666667-40.42666667s17.17333333-41.17333333 39.78666667-41.17333333z"}})])]):this._e()}),[],!1,null,null,null).exports);var sn=({Vue:e})=>{Jt.name&&e.component("BackToTop",Jt),Zt.name&&e.component("Badge",Zt),en.name&&e.component("BreadCrumb",en),nn.name&&e.component("Pagination",nn),an.name&&e.component("ScreenFull",an)},cn=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{staticClass:"icon icon-arrow-left",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M401.4 224h-214l83-79.4c11.9-12.5 11.9-32.7 0-45.2s-31.2-12.5-43.2 0L89 233.4c-6 5.8-9 13.7-9 22.4v.4c0 8.7 3 16.6 9 22.4l138.1 134c12 12.5 31.3 12.5 43.2 0 11.9-12.5 11.9-32.7 0-45.2l-83-79.4h214c16.9 0 30.6-14.3 30.6-32 .1-18-13.6-32-30.5-32z"}})])}),[],!1,null,null,null).exports,ln=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{staticClass:"icon icon-arrow-right",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[e("path",{attrs:{d:"M284.9 412.6l138.1-134c6-5.8 9-13.7 9-22.4v-.4c0-8.7-3-16.6-9-22.4l-138.1-134c-12-12.5-31.3-12.5-43.2 0-11.9 12.5-11.9 32.7 0 45.2l83 79.4h-214c-17 0-30.7 14.3-30.7 32 0 18 13.7 32 30.6 32h214l-83 79.4c-11.9 12.5-11.9 32.7 0 45.2 12 12.5 31.3 12.5 43.3 0z"}})])}),[],!1,null,null,null).exports,un=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{staticClass:"icon close-icon",attrs:{width:"23",height:"22",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M1.12.358a1.224 1.224 0 011.729 0l8.92 8.914L20.686.358a1.224 1.224 0 011.73 1.728L13.497 11l8.92 8.913a1.222 1.222 0 11-1.73 1.729l-8.919-8.913-8.92 8.913a1.224 1.224 0 01-1.729-1.729L10.04 11l-8.92-8.914a1.222 1.222 0 010-1.728z",fill:"currentColor"}})])}),[],!1,null,null,null).exports;const pn={"/":{install:"Install",iOSInstall:"Tap the share button and then 'Add to Homescreen'",cancel:"Cancel",close:"Close",prevImage:"Previous Image",nextImage:"Next Image",desc:"Description",feature:"Key Features",explain:"This app can be installed on your PC or mobile device. This will allow this web app to look and behave like any other installed app. You will find it in your app lists and be able to pin it to your home screen, start menus or task bars. This installed web app will also be able to safely interact with other apps and your operating system. ",hint:"New content found.",update:"New content is available."}};let fn,dn;var hn=r.a.extend({name:"PWAInstallModal",components:{ArrowLeftIcon:cn,ArrowRightIcon:ln,CloseIcon:un},props:{useHint:{type:Boolean,default:!1}},data:()=>({manifest:{},isIOS:!1,deferredprompt:null}),computed:{locales(){return pn[this.$localePath||"/"]}},mounted(){window.hasOwnProperty("BeforeInstallPromptEvent")&&(dn=e=>{this.deferredprompt=e,this.$emit("can-install",!0),e.preventDefault()},window.addEventListener("beforeinstallprompt",dn),this.getManifest(),fn=e=>{"Escape"===e.key&&this.$emit("toogle",!1)},document.addEventListener("keyup",fn))},beforeDestroy(){window.hasOwnProperty("BeforeInstallPromptEvent")&&document.removeEventListener("beforeinstallprompt",dn),document.removeEventListener("keyup",fn)},methods:{async getManifest(){const e=localStorage.getItem("manifest");if(e)this.manifest=JSON.parse(e);else try{const e=await fetch(this.$withBase("manifest.webmanifest")),t=await e.json();this.manifest=t,localStorage.setItem("manifest",JSON.stringify(t))}catch(e){console.error("Error getting manifest, check that you have a valid web manifest or network connection")}},scrollToLeft(){const e=document.querySelector(".screenshot");e&&e.scrollBy({left:-e.clientWidth,top:0,behavior:"smooth"})},scrollToRight(){const e=document.querySelector(".screenshot");e&&e.scrollBy({left:e.clientWidth,top:0,behavior:"smooth"})},async install(){if(this.deferredprompt){this.deferredprompt.prompt(),document.dispatchEvent(new CustomEvent("show"));if("accepted"===(await this.deferredprompt.userChoice).outcome)return console.info("PWA has been installed"),this.$emit("toogle",!1),this.$emit("can-install",!1),!0;console.info("You choose to not install PWA"),this.$emit("toogle",!1),this.$emit("can-install",!1)}return!1},hint(){console.info("You accepted the install hint"),this.$emit("hint")}}}),vn=(n(169),Object(Dt.a)(hn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{attrs:{id:"install-modal-wrapper"}},[t("div",{staticClass:"background",on:{click:function(t){return e.$emit("toogle",!1)}}}),e._v(" "),t("div",{staticClass:"install-modal"},[t("div",{staticClass:"header"},[t("button",{staticClass:"close-button",attrs:{"aria-label":e.locales.close},on:{click:function(t){return e.$emit("toogle",!1)}}},[t("CloseIcon")],1),e._v(" "),t("div",{staticClass:"logo"},[e.manifest.icons?t("img",{attrs:{src:e.manifest.icons[0].src,alt:"App Logo"}}):e._e(),e._v(" "),t("div",{staticClass:"title"},[t("h1",[e._v(e._s(e.manifest.short_name||e.manifest.name))]),e._v(" "),t("p",{staticClass:"desc"},[e._v(e._s(e.locales.explain))])])])]),e._v(" "),t("div",{staticClass:"content"},[t("div",{staticClass:"highlight"},[e.manifest.features?t("div",{staticClass:"feature-wrapper"},[t("h3",[e._v(e._s(e.locales.feature))]),e._v(" "),e.manifest.features?t("ul",e._l(e.manifest.features,(function(n){return t("li",{key:n,domProps:{textContent:e._s(n)}})})),0):e._e()]):e._e(),e._v(" "),e.manifest.screenshots?t("div",{staticClass:"screenshot-wrapper"},[t("button",{attrs:{"aria-label":e.locales.prevImage},on:{click:e.scrollToLeft}},[t("ArrowLeftIcon")],1),e._v(" "),t("section",{staticClass:"screenshot"},e._l(e.manifest.screenshots,(function(e){return t("div",{key:e.src},[t("img",{attrs:{alt:"App Screenshot",src:e.src}})])})),0),e._v(" "),t("button",{attrs:{"aria-label":e.locales.nextImage},on:{click:e.scrollToRight}},[t("ArrowRightIcon")],1)]):e._e()]),e._v(" "),t("div",{staticClass:"description"},[t("h3",{domProps:{textContent:e._s(e.locales.desc)}}),e._v(" "),t("p",{domProps:{textContent:e._s(e.manifest.description)}})])]),e._v(" "),e.useHint?t("div",{staticClass:"ios-text",on:{click:e.hint}},[t("p",[e._v(e._s(e.locales.iOSInstall))]),e._v(" "),t("button",{staticClass:"success"},[e._v("Got it!")])]):t("div",{staticClass:"button-wrapper"},[t("button",{staticClass:"install-button",on:{click:e.install}},[e._v("\n "+e._s(e.locales.install)+" "),t("span",[e._v(e._s(e.manifest.short_name))])]),e._v(" "),t("button",{staticClass:"cancel-button",on:{click:function(t){return e.$emit("toogle",!1)}}},[e._v("\n "+e._s(e.locales.cancel)+"\n ")])])])])}),[],!1,null,null,null).exports),mn=r.a.extend({name:"PWAInstall",components:{PWAInstallModal:vn},data:()=>({canInstall:!1,hasRelatedApps:!1,isOpen:!1,isIOS:!1,isSafari:!1,hinted:!1}),computed:{install(){return pn[this.$localePath||"/"].install},useHint(){return this.isIOS&&this.isSafari&&!1===this.hinted},showInstall(){return this.hasRelatedApps&&this.canInstall||this.useHint}},mounted(){if(this.getInstalledStatus()){const{userAgent:e}=navigator;this.isIOS=e.includes("iPhone")||e.includes("iPad")||Boolean(e.includes("Macintosh")&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2),this.isSafari=navigator.userAgent.includes("Safari")&&!e.includes("Chrome"),this.hinted=Boolean(localStorage.getItem("iOS-pwa-hint"))}"getInstalledRelatedApps"in navigator&&navigator.getInstalledRelatedApps().then(e=>{this.hasRelatedApps=e.length>0})},methods:{getInstalledStatus:()=>navigator.standalone?navigator.standalone:matchMedia("(display-mode: standalone)").matches,hint(){this.isOpen=!1,this.hinted=!0,localStorage.setItem("iOS-pwa-hint","hinted")}}}),gn=(n(170),Object(Dt.a)(mn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{attrs:{id:"pwa-install"}},[e.showInstall?t("button",{staticClass:"modal-button",attrs:{"use-hint":e.useHint},domProps:{textContent:e._s(e.install)},on:{click:function(t){e.isOpen=!0}}}):e._e(),e._v(" "),t("PWAInstallModal",{directives:[{name:"show",rawName:"v-show",value:e.isOpen,expression:"isOpen"}],on:{"can-install":function(t){e.canInstall=t},hint:e.hint,toogle:function(t){e.isOpen=t}}})],1)}),[],!1,null,null,null).exports),yn=Object(Dt.a)({},(function(){var e=this._self._c;return e("svg",{attrs:{viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M949.948959 146.249899l0 255.82655c0 21.980617-13.988596 35.969213-35.969213 35.969213l-255.82655\n 0c-13.988596 0-25.982768-7.992021-33.972742-21.980617-5.997598-13.988596-4.001127-27.977191\n 7.990998-39.97034l79.941704-77.945233c-55.954383-51.973722-121.917724-77.955466-199.862957-77.955466-37.974893 0-75.949786 8.002254-113.924679 21.99085-37.974893 15.984043-67.947532 37.974893-91.933829\n 63.956637-25.981744 23.986297-47.972595 53.958936-63.956637 91.933829-29.982872 73.954339-29.982872\n 153.895019 0 227.849358 15.984043 37.975916 37.974893 67.947532 63.956637 91.933829 23.986297 25.982768\n 53.958936 47.973618 91.933829 63.956637 37.974893 13.988596 75.949786 21.99085 113.924679 21.99085\n 45.966914 0 87.941911-9.997702 127.913275-29.981848 41.97602-17.989723 75.950809-45.966914\n 101.930507-83.942831 7.993045-4.001127 11.994172-5.995551 13.988596-5.995551 5.997598 0 9.998725\n 1.994424 13.988596 5.995551l77.957513 77.945233c3.988848 4.001127 5.986341 7.993045 5.986341\n 11.994172 0 1.994424-1.99647 5.995551-3.990894 11.994172-43.972491 51.962465-93.940532\n 91.933829-151.898549 117.91455-53.958936 25.982768-115.921149 39.971363-185.874361\n 39.971363-61.96119 0-119.921253-11.983939-169.889295-33.972742C284.40084 889.74325 236.438479\n 857.764931 202.464713\n 821.785485c-35.979446-33.972742-67.957765-81.936127-93.939509-139.897214-45.966914-101.930507-45.966914-237.846036 0-339.777567 25.981744-57.960063 57.960063-105.922425 93.939509-139.89619\n 33.973766-35.979446 81.936127-67.957765 139.89619-93.939509 49.968042-21.99085\n 107.928105-33.973766 169.889295-33.973766 55.963593 0 109.923552 9.987468 161.886017\n 29.972639 53.969169 21.99085 101.932554 51.963489 139.907447 89.938382l73.954339-73.944106c9.987468-9.997702 23.987321-13.988596 39.971363-8.002254C941.956937 120.268154 949.948959 132.261303\n 949.948959 146.249899z"}})])}),[],!1,null,null,null).exports;const bn={all:_n=_n||new Map,on:function(e,t){var n=_n.get(e);n?n.push(t):_n.set(e,[t])},off:function(e,t){var n=_n.get(e);n&&(t?n.splice(n.indexOf(t)>>>0,1):_n.set(e,[]))},emit:function(e,t){var n=_n.get(e);n&&n.slice().map((function(e){e(t)})),(n=_n.get("*"))&&n.slice().map((function(n){n(e,t)}))}};var _n;var wn=r.a.extend({name:"SWHintPopup",components:{UpdateIcon:yn},data:()=>({enabled:!1}),computed:{message(){return pn[this.$localePath||"/"].hint}},mounted(){bn.on("updatefound",()=>{navigator.serviceWorker.getRegistration().then(e=>{e&&e.active&&(this.enabled=!0)})}),bn.on("updated",()=>{this.enabled=!1})},methods:{uninstall(){this.enabled&&(window.location.reload(!0),this.enabled=!1)}}}),xn=(n(171),Object(Dt.a)(wn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition",{attrs:{name:"sw-hint-popup"}},[e._t("default",(function(){return[e.enabled?t("div",{staticClass:"sw-hint-popup",attrs:{role:"button",tabindex:"0"},on:{click:e.uninstall}},[e._v("\n "+e._s(e.message)+"\n "),t("span",{staticClass:"icon-wrapper"},[t("UpdateIcon")],1)]):e._e()]}),{reload:e.reload,enabled:e.enabled,message:e.message})],2)}),[],!1,null,null,null).exports),Cn=r.a.extend({name:"SWUpdatePopup",components:{UpdateIcon:yn},data:()=>({registration:null}),computed:{enabled(){return Boolean(this.registration)},message(){return pn[this.$localePath||"/"].update}},mounted(){bn.on("updated",e=>{e&&(this.registration=e)})},methods:{reload(){this.registration&&((e=>{const t=e.waiting;if(!t)return;const n=new MessageChannel;t.postMessage({type:"SKIP_WAITING"},[n.port2])})(this.registration),this.registration=null)}}}),kn=(n(172),Object(Dt.a)(Cn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition",{attrs:{name:"sw-update-popup"}},[e._t("default",(function(){return[e.enabled?t("div",{staticClass:"sw-update-popup",attrs:{role:"button",tabindex:"0"},on:{click:e.reload}},[e._v("\n "+e._s(e.message)+"\n "),t("span",{staticClass:"icon-wrapper"},[t("UpdateIcon")],1)]):e._e()]}),{reload:e.reload,enabled:e.enabled,message:e.message})],2)}),[],!1,null,null,null).exports);var Pn=({Vue:e})=>{e.component("PWAInstall",gn),e.component("SWHintPopup",xn),e.component("SWUpdatePopup",kn)};n(173);const Sn=e=>{const t=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{x:n.left-t.left,y:n.top-t.top}};var $n=({Vue:e,router:t})=>{t.options.scrollBehavior=(t,n,r)=>{r?window.scrollTo({top:r.y,behavior:"smooth"}):t.hash?e.$vuepress.$get("disableScrollBehavior")||setTimeout(()=>{const e=decodeURI(t.hash.slice(1)),n=document.getElementById(e)||document.querySelector(`[name='${e}']`);n&&window.scrollTo({top:Sn(n).y,behavior:"smooth"})},500):window.scrollTo({top:0,behavior:"smooth"})}},Tn={tag:{},category:{}};class On{constructor(e,t){this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach(e=>{const{pageKeys:n}=this._metaMap[e];this._metaMap[e].pages=n.map(e=>function(e,t){for(let n=0;n{const{pages:n,path:r}=this._metaMap[t];e.push({name:t,pages:n,path:r})}),e}getItemByName(e){return this._metaMap[e]}}var En=n(62);const An=n.n(En)()("plugin-blog:pagination");class jn{constructor(e,t,n){An("pagination",e);const{pages:r,prevText:o,nextText:i}=e,{path:a}=n;this._prevText=o,this._nextText=i;for(let e=0,t=r.length;ee.filter(t,e.id,e.pid)).sort(e.sorter)}setIndexPage(e){this._indexPage=e}get length(){return this._paginationPages.length}get pages(){const[e,t]=this._currentPage.interval;return this._matchedPages.slice(e,t+1)}get hasPrev(){return 0!==this.paginationIndex}get prevLink(){return this.hasPrev?this.paginationIndex-1==0&&this._indexPage?this._indexPage:this._paginationPages[this.paginationIndex-1].path:null}get hasNext(){return this.paginationIndex!==this.length-1}get nextLink(){return this.hasNext?this._paginationPages[this.paginationIndex+1].path:null}get prevText(){return this._prevText}get nextText(){return this._nextText}getSpecificPageLink(e){return this._paginationPages[e].path}}const Ln=new class{constructor(e){this.paginations=e}get pages(){return r.a.$vuepress.$get("siteData").pages}getPagination(e,t,n){An("id",t),An("pid",e);const r=this.paginations.filter(n=>n.id===t&&n.pid===e)[0];return new jn(r,this.pages,n)}}([]);var In={comment:{enabled:!1,service:""},email:{enabled:!1},feed:{rss:!1,atom:!1,json:!1}};n(176);var Mn=({Vue:e})=>{Promise.all([n.e(0),n.e(112)]).then(n.t.bind(null,565,7)),Promise.all([n.e(0),n.e(113)]).then(n.t.bind(null,566,7)),Ht.a.name&&e.component("ChartJS",Ht.a),Ht.a.name&&e.component("CodeDemo",Ht.a),Ht.a.name&&e.component("CodeGroup",Ht.a),Ht.a.name&&e.component("CodeGroupItem",Ht.a),Ht.a.name&&e.component("FlowChart",Ht.a),Ht.a.name&&e.component("Mermaid",Ht.a),Ht.a.name&&e.component("Presentation",Ht.a)};const Rn=e=>({src:e.src,w:e.naturalWidth,h:e.naturalHeight,title:e.alt}),Bn={"/":{close:"Close",fullscreen:"Switch to full screen",share:"Share",zoom:"Zoom in/out",prev:"Prev (Arrow Left)",next:"Next (Arrow Right)",buttons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}]}};var Nn=r.a.extend({name:"PhotoSwipe",computed:{locales(){return Bn[this.$localePath||"/"]}},watch:{$route(){this.initPhotoSwipe()}},mounted(){this.initPhotoSwipe()},methods:{initPhotoSwipe(){const e=document.querySelector(".pswp");Promise.all([n.e(111).then(n.t.bind(null,567,7)),n.e(111).then(n.t.bind(null,568,7)),new Promise(e=>setTimeout(()=>e(),500))]).then(([t,n])=>{(e=>{const t=Array.from(document.querySelectorAll(e));return Promise.all(t.map(e=>new Promise((t,n)=>{e.complete?t(Rn(e)):(e.onload=()=>t(Rn(e)),e.onerror=e=>n(e))}))).then(e=>({elements:t,infos:e}))})(".theme-default-content :not(a) > img").then(({elements:r,infos:o})=>{r.forEach((r,i)=>{r.onclick=()=>{new t.default(e,n.default,o,{shareButtons:this.locales.buttons,index:i}).init()}})})})}}}),Dn=(n(177),Object(Dt.a)(Nn,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"pswp",attrs:{tabindex:"-1",role:"dialog","aria-hidden":"true"}},[t("div",{staticClass:"pswp__bg"}),e._v(" "),t("div",{staticClass:"pswp__scroll-wrap"},[e._m(0),e._v(" "),t("div",{staticClass:"pswp__ui pswp__ui--hidden"},[t("div",{staticClass:"pswp__top-bar"},[t("div",{staticClass:"pswp__counter"}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--close",attrs:{title:e.locales.close,"aria-label":e.locales.close}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--share",attrs:{title:e.locales.share,"aria-label":e.locales.share}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--fs",attrs:{title:e.locales.fullscreen,"aria-label":e.locales.fullscreen}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--zoom",attrs:{title:e.locales.zoom,"aria-label":e.locales.zoom}}),e._v(" "),e._m(1)]),e._v(" "),e._m(2),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--arrow--left",attrs:{title:e.locales.prev,"aria-label":e.locales.prev}}),e._v(" "),t("button",{staticClass:"pswp__button pswp__button--arrow--right",attrs:{title:e.locales.next,"aria-label":e.locales.next}}),e._v(" "),e._m(3)])])])}),[function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__container"},[e("div",{staticClass:"pswp__item"}),this._v(" "),e("div",{staticClass:"pswp__item"}),this._v(" "),e("div",{staticClass:"pswp__item"})])},function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__preloader"},[e("div",{staticClass:"pswp__preloader__icn"},[e("div",{staticClass:"pswp__preloader__cut"},[e("div",{staticClass:"pswp__preloader__donut"})])])])},function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__share-modal pswp__share-modal--hidden pswp__single-tap"},[e("div",{staticClass:"pswp__share-tooltip"})])},function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"pswp__caption"},[e("div",{staticClass:"pswp__caption__center"})])}],!1,null,null,null).exports);var Fn=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},qt,sn,Pn,$n,({Vue:e})=>{const t=Object.keys(Tn).map(e=>{const t=Tn[e],n="$"+e;return{[n](){const{pages:e}=this.$site;return new On(t,e)},["$current"+(e.charAt(0).toUpperCase()+e.slice(1))](){const e=this.$route.meta.id;return this[n].getItemByName(e)}}}).reduce((e,t)=>(Object.assign(e,t),e),{});t.$frontmatterKey=function(){const e=this["$"+this.$route.meta.id];return e||null},e.mixin({computed:t})},({Vue:e})=>{e.mixin({computed:{$pagination(){return this.$route.meta.pid&&this.$route.meta.id?this.$getPagination(this.$route.meta.pid,this.$route.meta.id):null}},methods:{$getPagination(e,t){return t=t||e,Ln.getPagination(e,t,this.$route)}}})},({Vue:e})=>{const t={$service:()=>In};e.mixin({computed:t})},{},Mn,({Vue:e})=>{e.component("PhotoSwipe",Dn)}],zn=["BackToTop","PWAInstall","SWUpdatePopup","PhotoSwipe"];class Un extends class{constructor(){this.store=new r.a({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){r.a.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Un.prototype,{getPageAsyncComponent:ct,getLayoutAsyncComponent:lt,getAsyncComponent:ut,getVueComponent:pt});var Hn={install(e){const t=new Un;e.$vuepress=t,e.prototype.$vuepress=t}};function Vn(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var Wn={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return dt("pageKey",t),r.a.component(t)||r.a.component(t,ct(t)),r.a.component(t)?e(t):e("")}},qn={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},Gn={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Kn=(n(178),n(179),Object(Dt.a)(Gn,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Yn={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(qe),r.a.use(Hn),r.a.mixin(function(e,t,n=r.a){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const o=new(e(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((e,t)=>(t.startsWith("$")&&(e[t]=i[t].get),e),a),{computed:a}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(Vn(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";Vn(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";Vn(e,o)?r(o):Vn(e,n)?r(n):r()}})}(n);const o={};try{await Promise.all(Fn.filter(e=>"function"==typeof e).map(t=>t({Vue:r.a,options:o,router:n,siteData:Ut,isServer:e})))}catch(e){console.error(e)}return{app:new r.a(Object.assign(o,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},zn.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/assets/js/page--516d26d3.8b677c37.js b/assets/js/page--516d26d3.815365dc.js similarity index 98% rename from assets/js/page--516d26d3.8b677c37.js rename to assets/js/page--516d26d3.815365dc.js index 224c2e1..b97f79a 100644 --- a/assets/js/page--516d26d3.8b677c37.js +++ b/assets/js/page--516d26d3.815365dc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{582:function(e,o,t){"use strict";t.r(o);var i=t(1),r=Object(i.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("strong",[e._v("Privacy Policy")])]),e._v(" "),o("p",[e._v("Absinthe built the LibChecker app as an Open Source app. This SERVICE is provided by Absinthe at no cost and is intended for use as is.")]),e._v(" "),o("p",[e._v("This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.")]),e._v(" "),o("p",[e._v("If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.")]),e._v(" "),o("p",[e._v("The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at LibChecker unless otherwise defined in this Privacy Policy.")]),e._v(" "),o("p",[o("strong",[e._v("Information Collection and Use")])]),e._v(" "),o("p",[e._v("For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to Log data, Usage habit, Marked libraries. The information that I request will be retained on your device and is not collected by me in any way.")]),e._v(" "),o("p",[o("strong",[e._v("Log Data")])]),e._v(" "),o("p",[e._v("I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.")]),e._v(" "),o("p",[o("strong",[e._v("Cookies")])]),e._v(" "),o("p",[e._v("Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.")]),e._v(" "),o("p",[e._v("This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.")]),e._v(" "),o("p",[o("strong",[e._v("Service Providers")])]),e._v(" "),o("p",[e._v("I may employ third-party companies and individuals due to the following reasons:")]),e._v(" "),o("ul",[o("li",[e._v("To facilitate our Service;")]),e._v(" "),o("li",[e._v("To provide the Service on our behalf;")]),e._v(" "),o("li",[e._v("To perform Service-related services; or")]),e._v(" "),o("li",[e._v("To assist us in analyzing how our Service is used.")])]),e._v(" "),o("p",[e._v("I want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.")]),e._v(" "),o("p",[o("strong",[e._v("Security")])]),e._v(" "),o("p",[e._v("I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.")]),e._v(" "),o("p",[o("strong",[e._v("Links to Other Sites")])]),e._v(" "),o("p",[e._v("This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.")]),e._v(" "),o("p",[o("strong",[e._v("Children’s Privacy")])]),e._v(" "),o("p",[e._v("I do not knowingly collect personally identifiable information from children. I encourage all children to never submit any personally identifiable information through the Application and/or Services. I encourage parents and legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing their children never to provide personally identifiable information through the Application and/or Services without their permission. If you have reason to believe that a child has provided personally identifiable information to us through the Application and/or Services, please contact us. You must also be at least 16 years of age to consent to the processing of your personally identifiable information in your country (in some countries we may allow your parent or guardian to do so on your behalf).")]),e._v(" "),o("p",[o("strong",[e._v("Changes to This Privacy Policy")])]),e._v(" "),o("p",[e._v("I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.")]),e._v(" "),o("p",[e._v("This policy is effective as of 2022-08-22")]),e._v(" "),o("p",[o("strong",[e._v("Contact Us")])]),e._v(" "),o("p",[e._v("If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at zhaobozhen2025@gmail.com.")]),e._v(" "),o("p",[e._v("This privacy policy page was created at "),o("a",{attrs:{href:"https://privacypolicytemplate.net",target:"_blank",rel:"noopener noreferrer"}},[e._v("privacypolicytemplate.net"),o("OutboundLink")],1),e._v(" and modified/generated by "),o("a",{attrs:{href:"https://app-privacy-policy-generator.nisrulz.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("App Privacy Policy Generator"),o("OutboundLink")],1)])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{583:function(e,o,t){"use strict";t.r(o);var i=t(1),r=Object(i.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[o("strong",[e._v("Privacy Policy")])]),e._v(" "),o("p",[e._v("Absinthe built the LibChecker app as an Open Source app. This SERVICE is provided by Absinthe at no cost and is intended for use as is.")]),e._v(" "),o("p",[e._v("This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.")]),e._v(" "),o("p",[e._v("If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.")]),e._v(" "),o("p",[e._v("The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at LibChecker unless otherwise defined in this Privacy Policy.")]),e._v(" "),o("p",[o("strong",[e._v("Information Collection and Use")])]),e._v(" "),o("p",[e._v("For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to Log data, Usage habit, Marked libraries. The information that I request will be retained on your device and is not collected by me in any way.")]),e._v(" "),o("p",[o("strong",[e._v("Log Data")])]),e._v(" "),o("p",[e._v("I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.")]),e._v(" "),o("p",[o("strong",[e._v("Cookies")])]),e._v(" "),o("p",[e._v("Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.")]),e._v(" "),o("p",[e._v("This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.")]),e._v(" "),o("p",[o("strong",[e._v("Service Providers")])]),e._v(" "),o("p",[e._v("I may employ third-party companies and individuals due to the following reasons:")]),e._v(" "),o("ul",[o("li",[e._v("To facilitate our Service;")]),e._v(" "),o("li",[e._v("To provide the Service on our behalf;")]),e._v(" "),o("li",[e._v("To perform Service-related services; or")]),e._v(" "),o("li",[e._v("To assist us in analyzing how our Service is used.")])]),e._v(" "),o("p",[e._v("I want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.")]),e._v(" "),o("p",[o("strong",[e._v("Security")])]),e._v(" "),o("p",[e._v("I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.")]),e._v(" "),o("p",[o("strong",[e._v("Links to Other Sites")])]),e._v(" "),o("p",[e._v("This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.")]),e._v(" "),o("p",[o("strong",[e._v("Children’s Privacy")])]),e._v(" "),o("p",[e._v("I do not knowingly collect personally identifiable information from children. I encourage all children to never submit any personally identifiable information through the Application and/or Services. I encourage parents and legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing their children never to provide personally identifiable information through the Application and/or Services without their permission. If you have reason to believe that a child has provided personally identifiable information to us through the Application and/or Services, please contact us. You must also be at least 16 years of age to consent to the processing of your personally identifiable information in your country (in some countries we may allow your parent or guardian to do so on your behalf).")]),e._v(" "),o("p",[o("strong",[e._v("Changes to This Privacy Policy")])]),e._v(" "),o("p",[e._v("I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.")]),e._v(" "),o("p",[e._v("This policy is effective as of 2022-08-22")]),e._v(" "),o("p",[o("strong",[e._v("Contact Us")])]),e._v(" "),o("p",[e._v("If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at zhaobozhen2025@gmail.com.")]),e._v(" "),o("p",[e._v("This privacy policy page was created at "),o("a",{attrs:{href:"https://privacypolicytemplate.net",target:"_blank",rel:"noopener noreferrer"}},[e._v("privacypolicytemplate.net"),o("OutboundLink")],1),e._v(" and modified/generated by "),o("a",{attrs:{href:"https://app-privacy-policy-generator.nisrulz.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("App Privacy Policy Generator"),o("OutboundLink")],1)])])}),[],!1,null,null,null);o.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/page-Home.ec4912b5.js b/assets/js/page-Home.acc27e19.js similarity index 77% rename from assets/js/page-Home.ec4912b5.js rename to assets/js/page-Home.acc27e19.js index 8cb102d..81ade65 100644 --- a/assets/js/page-Home.ec4912b5.js +++ b/assets/js/page-Home.acc27e19.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{578:function(t,n,s){"use strict";s.r(n);var e=s(1),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{577:function(t,n,s){"use strict";s.r(n);var e=s(1),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file diff --git "a/assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.1e579bb1.js" "b/assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.08bd3c25.js" similarity index 82% rename from "assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.1e579bb1.js" rename to "assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.08bd3c25.js" index f564ec1..c6f937b 100644 --- "a/assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.1e579bb1.js" +++ "b/assets/js/page-\345\214\205\347\211\271\346\200\247\345\210\206\346\236\220.08bd3c25.js" @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{554:function(t,s,a){t.exports=a.p+"assets/img/android_app_bundles.e3d5569d.jpg"},555:function(t,s,a){t.exports=a.p+"assets/img/kotlin_used.429eadf6.jpg"},583:function(t,s,a){"use strict";a.r(s);var e=a(1),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"包特性分析"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#包特性分析"}},[t._v("#")]),t._v(" 包特性分析")]),t._v(" "),s("p",[t._v("嘿!Android 的安装包(APK)文件中存在着大量的文件,我们也许可以从中发现点什么。")]),t._v(" "),s("h2",{attrs:{id:"android-app-bundles"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#android-app-bundles"}},[t._v("#")]),t._v(" Android App Bundles")]),t._v(" "),s("p",[t._v("LibChecker 可以检测安装包是否为 Google Play 分发的 AAB 安装包,详情请参考 "),s("a",{attrs:{href:"https://developer.android.com/guide/app-bundle",target:"_blank",rel:"noopener noreferrer"}},[t._v("Android App Bundle 简介"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("img",{staticStyle:{zoom:"50%"},attrs:{src:a(554),alt:"split_apks"}}),t._v(" "),s("h2",{attrs:{id:"kotlin"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kotlin"}},[t._v("#")]),t._v(" Kotlin")]),t._v(" "),s("p",[t._v("LibChecker 可以检测 App 是否使用了 Kotlin 编程语言。")]),t._v(" "),s("img",{staticStyle:{zoom:"50%"},attrs:{src:a(555),alt:"kotlin_used"}}),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),s("p",[t._v("安装包包含 Kotlin 内容不完全意味着 App 使用了 Kotlin 编写,也有可能是 App 引入了使用 Kotlin 编写的三方库。")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{557:function(t,s,a){t.exports=a.p+"assets/img/android_app_bundles.e3d5569d.jpg"},558:function(t,s,a){t.exports=a.p+"assets/img/kotlin_used.429eadf6.jpg"},584:function(t,s,a){"use strict";a.r(s);var e=a(1),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"包特性分析"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#包特性分析"}},[t._v("#")]),t._v(" 包特性分析")]),t._v(" "),s("p",[t._v("嘿!Android 的安装包(APK)文件中存在着大量的文件,我们也许可以从中发现点什么。")]),t._v(" "),s("h2",{attrs:{id:"android-app-bundles"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#android-app-bundles"}},[t._v("#")]),t._v(" Android App Bundles")]),t._v(" "),s("p",[t._v("LibChecker 可以检测安装包是否为 Google Play 分发的 AAB 安装包,详情请参考 "),s("a",{attrs:{href:"https://developer.android.com/guide/app-bundle",target:"_blank",rel:"noopener noreferrer"}},[t._v("Android App Bundle 简介"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("img",{staticStyle:{zoom:"50%"},attrs:{src:a(557),alt:"split_apks"}}),t._v(" "),s("h2",{attrs:{id:"kotlin"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kotlin"}},[t._v("#")]),t._v(" Kotlin")]),t._v(" "),s("p",[t._v("LibChecker 可以检测 App 是否使用了 Kotlin 编程语言。")]),t._v(" "),s("img",{staticStyle:{zoom:"50%"},attrs:{src:a(558),alt:"kotlin_used"}}),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("注意")]),t._v(" "),s("p",[t._v("安装包包含 Kotlin 内容不完全意味着 App 使用了 Kotlin 编写,也有可能是 App 引入了使用 Kotlin 编写的三方库。")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git "a/assets/js/page-\345\277\253\347\205\247.36246ca4.js" "b/assets/js/page-\345\277\253\347\205\247.a1f1c800.js" similarity index 98% rename from "assets/js/page-\345\277\253\347\205\247.36246ca4.js" rename to "assets/js/page-\345\277\253\347\205\247.a1f1c800.js" index 5fb7318..150bd6d 100644 --- "a/assets/js/page-\345\277\253\347\205\247.36246ca4.js" +++ "b/assets/js/page-\345\277\253\347\205\247.a1f1c800.js" @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{559:function(t,s,a){t.exports=a.p+"assets/img/snapshot_create.73c4056c.jpg"},560:function(t,s,a){t.exports=a.p+"assets/img/snapshot_list.c1431ba5.jpg"},561:function(t,s,a){t.exports=a.p+"assets/img/snapshot_album.c3c0f739.jpg"},562:function(t,s,a){t.exports=a.p+"assets/img/snapshot_comparison.c2d8d040.jpg"},586:function(t,s,a){"use strict";a.r(s);var r=a(1),e=Object(r.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"快照"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#快照"}},[t._v("#")]),t._v(" 快照")]),t._v(" "),s("h2",{attrs:{id:"什么是快照"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#什么是快照"}},[t._v("#")]),t._v(" 什么是快照?")]),t._v(" "),s("p",[t._v("小时候我很喜欢看一部日本动画,主角收集到了各种各样的卡牌,其中有一张牌名为 "),s("strong",[t._v("時(タイム)")]),t._v(" ,它可以让时间暂停,让我印象很深刻,这也是快照功能的灵感来源。快照功能的思路来自 VCS(版本控制系统),您可以查看 App 更新前后的任意组件变化。")]),t._v(" "),s("h2",{attrs:{id:"使用方法"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用方法"}},[t._v("#")]),t._v(" 使用方法")]),t._v(" "),s("p",[t._v("第一次进入快照页面时列表是空白的,这时您可以点击主页右下角的 "),s("strong",[t._v("保存当前快照")]),t._v(" 按钮,随后等待一段时间。保存成功后在页面上方会显示当前快照的时间戳。此时列表仍然为空,不用疑惑,去更新应用吧!回来会看到惊喜。")]),t._v(" "),s("p",[s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(559),alt:"snapshot_create"}}),t._v(" "),s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(560),alt:"snapshot_list"}})]),t._v(" "),s("h2",{attrs:{id:"仪表盘区功能"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#仪表盘区功能"}},[t._v("#")]),t._v(" 仪表盘区功能")]),t._v(" "),s("p",[t._v("快照页面的上方有着显示时间戳和快照应用数量的仪表盘,现在它可以点击进入,进行一些进阶操作。")]),t._v(" "),s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(561),alt:"snapshot_album"}}),t._v(" "),s("h3",{attrs:{id:"对比"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#对比"}},[t._v("#")]),t._v(" 对比")]),t._v(" "),s("p",[t._v("得益于对多副本快照的支持,LibChecker 现在可以进行两个快照之间的比较。")]),t._v(" "),s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(562),alt:"snapshot_comparison"}}),t._v(" "),s("p",[t._v("在上方仪表盘选择两个不同的快照,然后点击右下角的“比较”,就这么简单。现在你可以比较任意两个时间点的应用变更了!")]),t._v(" "),s("h3",{attrs:{id:"管理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#管理"}},[t._v("#")]),t._v(" 管理")]),t._v(" "),s("p",[t._v("管理功能用于删除已有的快照,未来会加入更多的功能。")]),t._v(" "),s("h3",{attrs:{id:"备份与恢复"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#备份与恢复"}},[t._v("#")]),t._v(" 备份与恢复")]),t._v(" "),s("p",[t._v("备份与恢复功能提供了简单的快照备份与恢复,目前只能选择备份和恢复全部快照,未来将会提供选择任意快照备份的功能。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("警告")]),t._v(" "),s("p",[t._v("备份功能使用 SAF 框架实现,其依赖系统中的 "),s("strong",[t._v("文件(com.google.android.documentsui)")]),t._v(" 应用。请确保你的 ROM 中包含此应用并可正常工作。如果你的 ROM 不能正常工作,请联系你的设备制造商。")])]),t._v(" "),s("h3",{attrs:{id:"追踪"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#追踪"}},[t._v("#")]),t._v(" 追踪")]),t._v(" "),s("p",[t._v("追踪功能用于强制对比处于追踪列表中的应用。由于性能方面的考虑,LibChecker 基于以下条件对快照项进行对比:")]),t._v(" "),s("ul",[s("li",[t._v("新的 App 的 versionCode > 旧的 App 的 versionCode")]),t._v(" "),s("li",[t._v("新的 App 的 lastUpdateTime > 旧的 App 的 lastUpdateTime")]),t._v(" "),s("li",[t._v("App 存在于追踪列表中")])]),t._v(" "),s("p",[t._v("对于一些系统预装应用来说,其 versionCode 和 lastUpdateTime 可能不会发生变化,此时您可以将此 App 加入到追踪列表中。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{559:function(t,s,a){t.exports=a.p+"assets/img/snapshot_create.73c4056c.jpg"},560:function(t,s,a){t.exports=a.p+"assets/img/snapshot_list.c1431ba5.jpg"},561:function(t,s,a){t.exports=a.p+"assets/img/snapshot_album.c3c0f739.jpg"},562:function(t,s,a){t.exports=a.p+"assets/img/snapshot_comparison.c2d8d040.jpg"},585:function(t,s,a){"use strict";a.r(s);var r=a(1),e=Object(r.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"快照"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#快照"}},[t._v("#")]),t._v(" 快照")]),t._v(" "),s("h2",{attrs:{id:"什么是快照"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#什么是快照"}},[t._v("#")]),t._v(" 什么是快照?")]),t._v(" "),s("p",[t._v("小时候我很喜欢看一部日本动画,主角收集到了各种各样的卡牌,其中有一张牌名为 "),s("strong",[t._v("時(タイム)")]),t._v(" ,它可以让时间暂停,让我印象很深刻,这也是快照功能的灵感来源。快照功能的思路来自 VCS(版本控制系统),您可以查看 App 更新前后的任意组件变化。")]),t._v(" "),s("h2",{attrs:{id:"使用方法"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用方法"}},[t._v("#")]),t._v(" 使用方法")]),t._v(" "),s("p",[t._v("第一次进入快照页面时列表是空白的,这时您可以点击主页右下角的 "),s("strong",[t._v("保存当前快照")]),t._v(" 按钮,随后等待一段时间。保存成功后在页面上方会显示当前快照的时间戳。此时列表仍然为空,不用疑惑,去更新应用吧!回来会看到惊喜。")]),t._v(" "),s("p",[s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(559),alt:"snapshot_create"}}),t._v(" "),s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(560),alt:"snapshot_list"}})]),t._v(" "),s("h2",{attrs:{id:"仪表盘区功能"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#仪表盘区功能"}},[t._v("#")]),t._v(" 仪表盘区功能")]),t._v(" "),s("p",[t._v("快照页面的上方有着显示时间戳和快照应用数量的仪表盘,现在它可以点击进入,进行一些进阶操作。")]),t._v(" "),s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(561),alt:"snapshot_album"}}),t._v(" "),s("h3",{attrs:{id:"对比"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#对比"}},[t._v("#")]),t._v(" 对比")]),t._v(" "),s("p",[t._v("得益于对多副本快照的支持,LibChecker 现在可以进行两个快照之间的比较。")]),t._v(" "),s("img",{staticStyle:{zoom:"30%"},attrs:{src:a(562),alt:"snapshot_comparison"}}),t._v(" "),s("p",[t._v("在上方仪表盘选择两个不同的快照,然后点击右下角的“比较”,就这么简单。现在你可以比较任意两个时间点的应用变更了!")]),t._v(" "),s("h3",{attrs:{id:"管理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#管理"}},[t._v("#")]),t._v(" 管理")]),t._v(" "),s("p",[t._v("管理功能用于删除已有的快照,未来会加入更多的功能。")]),t._v(" "),s("h3",{attrs:{id:"备份与恢复"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#备份与恢复"}},[t._v("#")]),t._v(" 备份与恢复")]),t._v(" "),s("p",[t._v("备份与恢复功能提供了简单的快照备份与恢复,目前只能选择备份和恢复全部快照,未来将会提供选择任意快照备份的功能。")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("警告")]),t._v(" "),s("p",[t._v("备份功能使用 SAF 框架实现,其依赖系统中的 "),s("strong",[t._v("文件(com.google.android.documentsui)")]),t._v(" 应用。请确保你的 ROM 中包含此应用并可正常工作。如果你的 ROM 不能正常工作,请联系你的设备制造商。")])]),t._v(" "),s("h3",{attrs:{id:"追踪"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#追踪"}},[t._v("#")]),t._v(" 追踪")]),t._v(" "),s("p",[t._v("追踪功能用于强制对比处于追踪列表中的应用。由于性能方面的考虑,LibChecker 基于以下条件对快照项进行对比:")]),t._v(" "),s("ul",[s("li",[t._v("新的 App 的 versionCode > 旧的 App 的 versionCode")]),t._v(" "),s("li",[t._v("新的 App 的 lastUpdateTime > 旧的 App 的 lastUpdateTime")]),t._v(" "),s("li",[t._v("App 存在于追踪列表中")])]),t._v(" "),s("p",[t._v("对于一些系统预装应用来说,其 versionCode 和 lastUpdateTime 可能不会发生变化,此时您可以将此 App 加入到追踪列表中。")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git "a/assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.8e3af491.js" "b/assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.61f36d6b.js" similarity index 66% rename from "assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.8e3af491.js" rename to "assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.61f36d6b.js" index 5784f27..f4004ec 100644 --- "a/assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.8e3af491.js" +++ "b/assets/js/page-\346\200\235\347\273\264\345\257\274\345\233\276.61f36d6b.js" @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{553:function(t,s,n){t.exports=n.p+"assets/img/LibChecker-XMind.69afd9f5.png"},581:function(t,s,n){"use strict";n.r(s);var i=n(1),a=Object(i.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h2",{attrs:{id:"思维导图"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#思维导图"}},[this._v("#")]),this._v(" 思维导图")]),this._v(" "),t("p",[t("img",{attrs:{src:n(553),alt:"Mind Mapping"}})])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{556:function(t,s,n){t.exports=n.p+"assets/img/LibChecker-XMind.69afd9f5.png"},582:function(t,s,n){"use strict";n.r(s);var i=n(1),a=Object(i.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h2",{attrs:{id:"思维导图"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#思维导图"}},[this._v("#")]),this._v(" 思维导图")]),this._v(" "),t("p",[t("img",{attrs:{src:n(556),alt:"Mind Mapping"}})])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git "a/assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.9ea70cc4.js" "b/assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.4c338f50.js" similarity index 99% rename from "assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.9ea70cc4.js" rename to "assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.4c338f50.js" index 6aff8ac..2d3a4e7 100644 --- "a/assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.9ea70cc4.js" +++ "b/assets/js/page-\346\233\264\346\226\260\346\227\245\345\277\227.4c338f50.js" @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{577:function(v,_,l){"use strict";l.r(_);var i=l(1),p=Object(i.a)({},(function(){var v=this,_=v._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"更新日志"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#更新日志"}},[v._v("#")]),v._v(" 更新日志")]),v._v(" "),_("p",[v._v("2.4.0")]),v._v(" "),_("ul",[_("li",[v._v("在应用详情页增加了 Application 标签内属性的查看入口")]),v._v(" "),_("li",[v._v("修复了无法解析一些应用的原生库的问题")]),v._v(" "),_("li",[v._v("现在 Xposed 模块标签显示具体的信息")]),v._v(" "),_("li",[v._v("引入了库引用模块和快照模块的高级菜单,现在可以进行更多的自定义操作")]),v._v(" "),_("li",[v._v("在应用详情页增加了应用的安装请求方和安装执行方信息(安装请求方的获取能力依赖于 Shizuku 或 Sui)")]),v._v(" "),_("li",[v._v("更新规则库到 V32")]),v._v(" "),_("li",[v._v("现在在「对比」页面对比两个 APK,可以进行详细信息的对比")]),v._v(" "),_("li",[v._v("在图表页面添加了针对 Jetpack Compose 使用情况的统计")]),v._v(" "),_("li",[v._v("修复了一些其他问题")])]),v._v(" "),_("p",[v._v("2.3.9")]),v._v(" "),_("ul",[_("li",[v._v("更新繁体中文翻译")]),v._v(" "),_("li",[v._v("修复未安装的权限的显示问题")]),v._v(" "),_("li",[v._v("现在原生库页面会展示所有 split 安装包中的原生库")]),v._v(" "),_("li",[v._v("修复了一些应用无法进入详情页的问题")]),v._v(" "),_("li",[v._v("现在详情页会展示应用的安装包体积")]),v._v(" "),_("li",[v._v("详情页中使用了新的 ABI 徽标")]),v._v(" "),_("li",[v._v("优化了进入详情页的速度")]),v._v(" "),_("li",[v._v("添加了 Android 14 的 Logo 标志,虽然 Android 14 的 API 最终很有可能是 34,但目前阶段还未到达平台稳定性,请自行判断应用的适配性")])]),v._v(" "),_("p",[v._v("2.3.8")]),v._v(" "),_("ul",[_("li",[v._v("修复了在搜索框键入文字闪退的问题")]),v._v(" "),_("li",[v._v("优化了图表的表现")]),v._v(" "),_("li",[v._v("优化了 Shortcuts 图标在 Android 12+ 深色模式上的表现")]),v._v(" "),_("li",[v._v("规则库更新至版本 31")])]),v._v(" "),_("p",[v._v("2.3.6")]),v._v(" "),_("ul",[_("li",[v._v("调整宽屏下的分屏逻辑")]),v._v(" "),_("li",[v._v("高级菜单中新增了更多的选项")]),v._v(" "),_("li",[v._v("提升应用流畅度,提高应用稳定性")])]),v._v(" "),_("p",[v._v("2.3.3")]),v._v(" "),_("ul",[_("li",[v._v("现在可以查看签名的详细信息")]),v._v(" "),_("li",[v._v("修复 ABI 图表没有统计 x86 应用的问题")]),v._v(" "),_("li",[v._v("设置项中增加快照保存提示的默认选项")]),v._v(" "),_("li",[v._v("修复 Harmony OS 系统上的应用详情页显示问题")]),v._v(" "),_("li",[v._v("修复了一些八哥")])]),v._v(" "),_("p",[v._v("2.3.1")]),v._v(" "),_("ul",[_("li",[v._v("标示未授权的权限")]),v._v(" "),_("li",[v._v("UI 改进")]),v._v(" "),_("li",[v._v("问题修复")])]),v._v(" "),_("p",[v._v("2.3.0")]),v._v(" "),_("ul",[_("li",[v._v("不再支持 Android 6")]),v._v(" "),_("li",[v._v("现在通过复用旧快照中的不变项来加速保存新的快照")]),v._v(" "),_("li",[v._v("现在会在详情页标记出不是 DYN 类型的 ELF 文件")]),v._v(" "),_("li",[v._v("不再在应用列表列举未完全卸载的应用包")]),v._v(" "),_("li",[v._v("在 FOSS 渠道移除了 AppCenter 和 HarmonyOS 检测相关内容")]),v._v(" "),_("li",[v._v("现在应用详情页会展示 CompileSdkVersion")]),v._v(" "),_("li",[v._v("修复云端规则无法更新")]),v._v(" "),_("li",[v._v("现在支持单应用对比,即可以在对比界面选择单个 APK 或一份快照两两组合,亦或是在外部选择两个 APK 文件分享至 LibChecker 进行对比")]),v._v(" "),_("li",[v._v("优化繁体中文翻译")]),v._v(" "),_("li",[v._v("支持检测 ReactiveX 框架")]),v._v(" "),_("li",[v._v("应用列表页的菜单支持更多的操作,同时设置页的「显示系统应用」也移动至高级菜单内")]),v._v(" "),_("li",[v._v("统计库引用的过程中加入了进度显示")]),v._v(" "),_("li",[v._v("规则库更新至版本 27")])]),v._v(" "),_("p",[v._v("2.2.11\n注意:这是最后一个支持 Android 6 的版本,在一段时间内我们仍会为 Android 6 修复一些严重问题,但会以独立版本的形式提供,并且不会与主干共享代码")]),v._v(" "),_("ul",[_("li",[v._v("调整 SplashScreen 动画")]),v._v(" "),_("li",[v._v("新式的 M3 Switch")]),v._v(" "),_("li",[v._v("现在使用徽标来表示快照中新增和已删除的应用")]),v._v(" "),_("li",[v._v("规则库 V25")]),v._v(" "),_("li",[v._v("响应 "),_("code",[v._v("android.intent.action.APPLICATION_PREFERENCES")])]),v._v(" "),_("li",[v._v("修复 multiarch 应用没有出现在 ABI 统计中的问题")]),v._v(" "),_("li",[v._v("修复特定情况下原生库匹配失败的问题")]),v._v(" "),_("li",[v._v("在启动应用处提供备选的启动方式,这通常适用于没有桌面图标的应用")]),v._v(" "),_("li",[v._v("现在可以长按组件快速调用 Blocker 禁用和解禁组件")]),v._v(" "),_("li",[v._v("现在对于备份快照功能,如果数据库大于 100MB,则会触发全量备份,使用该备份文件恢复时会覆盖式恢复")]),v._v(" "),_("li",[v._v("一些依赖更新和改动")])]),v._v(" "),_("p",[v._v("2.2.10")]),v._v(" "),_("ul",[_("li",[v._v("Material 3")]),v._v(" "),_("li",[v._v("修复禁用通知后保存快照出现的崩溃")]),v._v(" "),_("li",[v._v("增加一种获取 Jetpack Compose 版本的方法")]),v._v(" "),_("li",[v._v("更新依赖")]),v._v(" "),_("li",[v._v("修复一些问题")])]),v._v(" "),_("p",[v._v("2.2.9")]),v._v(" "),_("ul",[_("li",[v._v("修复在不支持 Activity 嵌入的设备上启动崩溃的问题")]),v._v(" "),_("li",[v._v("适配 Android 13 特性")]),v._v(" "),_("li",[v._v("替换应用列表 Shortcut 为图表")]),v._v(" "),_("li",[v._v("在快照页面显示当前应用数量")])]),v._v(" "),_("p",[v._v("2.2.7")]),v._v(" "),_("ul",[_("li",[v._v("对于相关链接是 GitHub 仓库的规则库,现在可以显示仓库的最近更新时间(注意:GitHub API 有访问频率限制,一小时内不可超过 60 次)")]),v._v(" "),_("li",[v._v("在应用详情页显示组件的多进程信息,并可通过点击根据进程进行过滤")]),v._v(" "),_("li",[v._v("支持了在应用详情页中通过 质感文件(me.zhanghai.android.files)导航至应用源目录")]),v._v(" "),_("li",[v._v("在图表的 Target SDK 和 Min SDK 弹窗中显示 Android 的版本信息")]),v._v(" "),_("li",[v._v("由于 Gitee 锁定了镜像仓库,我们移除了云端规则的 Gitee 选项")]),v._v(" "),_("li",[v._v("规则库更新至版本 24")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.2.6")]),v._v(" "),_("ul",[_("li",[v._v("修复一些问题")])]),v._v(" "),_("p",[v._v("2.2.5")]),v._v(" "),_("ul",[_("li",[v._v("使应用详情页和 APK 分析页的功能更加统一")]),v._v(" "),_("li",[v._v("现在支持检测是否使用了 Jetpack Compose")]),v._v(" "),_("li",[v._v("增加了一种检测 Kotlin 插件版本的方法")]),v._v(" "),_("li",[v._v("现在对于元数据,如果其值可能是一个 Android 资源 ID,它可以被转化为原始值")]),v._v(" "),_("li",[v._v("修复了被禁用的应用无法查看 Splits APK")]),v._v(" "),_("li",[v._v("优化了应用列表的刷新逻辑")]),v._v(" "),_("li",[v._v("更新了依赖")])]),v._v(" "),_("p",[v._v("2.2.4")]),v._v(" "),_("ul",[_("li",[v._v("在 Tiramisu 上支持了带主题的应用图标")]),v._v(" "),_("li",[v._v("启用了对话框样式的新增应用和已删除应用详情页面")]),v._v(" "),_("li",[v._v("在 Android 12 以上启用了对话框下层模糊效果")]),v._v(" "),_("li",[v._v("优化了图表的样式")]),v._v(" "),_("li",[v._v("在图表中增加了对 minSdkVersion 版本的统计")]),v._v(" "),_("li",[v._v("现在支持通过 URL Scheme 保存快照")]),v._v(" "),_("li",[v._v("现在支持按「包」和「共享的 UID」进行统计")]),v._v(" "),_("li",[v._v("更新了依赖")]),v._v(" "),_("li",[v._v("修复了一些错误")])]),v._v(" "),_("p",[v._v("2.2.3")]),v._v(" "),_("ul",[_("li",[v._v("现在在应用列表页面会标识出被禁用的应用")]),v._v(" "),_("li",[v._v("更新依赖")]),v._v(" "),_("li",[v._v("优化实现")])]),v._v(" "),_("p",[v._v("2.2.2")]),v._v(" "),_("ul",[_("li",[v._v("更新依赖")]),v._v(" "),_("li",[v._v("修复了一些问题")]),v._v(" "),_("li",[v._v("现在标记库以 SDK 的方式提供。这意味着您可以轻松地将 LibChecker 中的规则库集成至您的应用。(详情参见:https://github.com/zhaobozhen/LibChecker-Rules-Bundle)")])]),v._v(" "),_("p",[v._v("2.2.1")]),v._v(" "),_("ul",[_("li",[v._v("支持了在详情页长按应用图标将其复制到剪贴板")]),v._v(" "),_("li",[v._v("在 Android 12 以上的 Material 3 主题(Alpha)中启用动态颜色")]),v._v(" "),_("li",[v._v("支持在详情页中搜索过滤组件")]),v._v(" "),_("li",[v._v("更新俄语翻译")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.2.0")]),v._v(" "),_("ul",[_("li",[v._v("快照支持了记录应用包的体积")]),v._v(" "),_("li",[v._v("现在如果应用包的体积发生变化则会触发快照对比")]),v._v(" "),_("li",[v._v("统计页面支持了权限和元数据,并且加快了进入二级页面的加载速度")]),v._v(" "),_("li",[v._v("现在快照的详情页面支持生成文字报告")]),v._v(" "),_("li",[v._v("在应用的详情页增加了关于 "),_("code",[v._v("android:extractNativeLibs")]),v._v(" 的提示项")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.1.14")]),v._v(" "),_("ul",[_("li",[v._v("支持了 Android 12 SplashScreen API")]),v._v(" "),_("li",[v._v("缩短了初始化时间")]),v._v(" "),_("li",[v._v("调整了详情页布局")])]),v._v(" "),_("p",[v._v("2.1.13")]),v._v(" "),_("ul",[_("li",[v._v("支持了 Android 12L 的 Activity Embeding API")]),v._v(" "),_("li",[v._v("支持了通过分享的方式进行 apk 分析")]),v._v(" "),_("li",[v._v("修复了八哥")])]),v._v(" "),_("p",[v._v("2.1.12")]),v._v(" "),_("ul",[_("li",[v._v("升级规则库至版本 18")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.1.11")]),v._v(" "),_("ul",[_("li",[v._v("现在快照可以记录元数据的变化了(在该版本前生成的快照不会记录元数据,因此对比会出现全部新增的问题)")]),v._v(" "),_("li",[v._v("优化性能和修复 bugs")])]),v._v(" "),_("p",[v._v("2.1.10")]),v._v(" "),_("ul",[_("li",[v._v("修复 ABI 检测方法")]),v._v(" "),_("li",[v._v("修复追踪的 app 不能在快照页面被移除")]),v._v(" "),_("li",[v._v("新增了一些库规则和图标")])]),v._v(" "),_("p",[v._v("2.1.9")]),v._v(" "),_("ul",[_("li",[v._v("修复 bugs")])]),v._v(" "),_("p",[v._v("2.1.8")]),v._v(" "),_("ul",[_("li",[v._v("在应用详情页可以查看应用的权限和元数据信息")]),v._v(" "),_("li",[v._v("修复 bugs")]),v._v(" "),_("li",[v._v("修改了检测 ABI 的方式,该版本会强制重载应用列表")])]),v._v(" "),_("p",[v._v("2.1.7")]),v._v(" "),_("ul",[_("li",[v._v("修复 bug")])]),v._v(" "),_("p",[v._v("2.1.6")]),v._v(" "),_("ul",[_("li",[v._v("一个版本的迭代固然重要,但也要考虑历史的进程。在修复旧霸鸽的同时,往往也会带入新的霸鸽(")])]),v._v(" "),_("p",[v._v("2.1.5")]),v._v(" "),_("ul",[_("li",[v._v("修复问题")])]),v._v(" "),_("p",[v._v("2.1.4")]),v._v(" "),_("ul",[_("li",[v._v("支持显示 Overlay 应用的 target package")])]),v._v(" "),_("p",[v._v("2.1.3")]),v._v(" "),_("ul",[_("li",[v._v("小小修补")])]),v._v(" "),_("p",[v._v("2.1.2")]),v._v(" "),_("ul",[_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.1.1")]),v._v(" "),_("ul",[_("li",[v._v("修复了带有静态库的详情页错乱问题")]),v._v(" "),_("li",[v._v("修复了详情页导航栏问题")]),v._v(" "),_("li",[v._v("修复了一处内存泄漏")]),v._v(" "),_("li",[v._v("修复深色模式开关无效")])]),v._v(" "),_("p",[v._v("2.1.0")]),v._v(" "),_("ul",[_("li",[v._v("现在无原生库的标签展示 CPU 的 ABI")]),v._v(" "),_("li",[v._v("修复了 APK 分析有时看不到组件的问题")]),v._v(" "),_("li",[v._v("删除了快照 FAB,现在它在 Toolbar 的位置")]),v._v(" "),_("li",[v._v("图表页面移至二级页面")]),v._v(" "),_("li",[v._v("规则库现在使用 db 文件分发")]),v._v(" "),_("li",[v._v("详情页现在展示应用的 sharedUserId")]),v._v(" "),_("li",[v._v("详情页现在展示应用的全部 ABIs")]),v._v(" "),_("li",[v._v("时间节点选择和管理 Dialog 现在会展示每张快照中最新的 5 个应用")]),v._v(" "),_("li",[v._v("现在获取应用列表会尝试绕过一些 ROM 发明的限制读取应用列表权限")]),v._v(" "),_("li",[v._v("更换了新的 Kotlin logo")]),v._v(" "),_("li",[v._v("设置中可以切换深色模式")]),v._v(" "),_("li",[v._v("支持识别 hap 应用以及查看其 Abilities")])]),v._v(" "),_("p",[v._v("2.0.0")]),v._v(" "),_("ul",[_("li",[_("strong",[v._v("重要")]),v._v(" 现在只支持 Android 6.0 以上的设备")]),v._v(" "),_("li",[_("strong",[v._v("重要")]),v._v(" 由于支持了一些新的情况和调整了一些错误的方法,2.0 之前的快照内容都没有参考价值,建议更新后直接保存新的快照")]),v._v(" "),_("li",[v._v("现在支持从云端仓库更新标记库")]),v._v(" "),_("li",[v._v("现在启动一个前台服务来保存快照,保存快照时可以切换到后台了")]),v._v(" "),_("li",[v._v("【集成】对于四大组件,现在可以长按与“大圣净化”交互(需要大圣净化 v3.8.47 以上)")]),v._v(" "),_("li",[v._v("【集成】对于 Activity,现在可以长按与“Anywhere- 编辑器”交互(需要 Anywhere- 2.2.0 以上)")]),v._v(" "),_("li",[v._v("支持了 disabled 组件,请尽量避免依赖 2.0 之前的快照,因为之前并没有记录 disabled 组件")]),v._v(" "),_("li",[v._v("支持了 assets 中的原生库")]),v._v(" "),_("li",[v._v("支持了 MultiArch")]),v._v(" "),_("li",[v._v("图表支持了统计应用的 Target API 等级")]),v._v(" "),_("li",[v._v("支持了搜索字段高亮")]),v._v(" "),_("li",[v._v("修复了大量的错误和不合适的方法")])]),v._v(" "),_("p",[v._v("1.10.0")]),v._v(" "),_("ul",[_("li",[v._v("支持了 Dex 类检测(过滤了一些无意义的类)并加入了大量的 Dex 类标记库")]),v._v(" "),_("li",[v._v("详情页点击应用图标可以进一步操作")]),v._v(" "),_("li",[v._v("支持了 x86、x86_64 的架构检测")]),v._v(" "),_("li",[v._v("快照 - 仪表盘 增加了 追踪 功能,可以在每次开启快照时强制对比变更")]),v._v(" "),_("li",[v._v("优化和消灭臭虫")])]),v._v(" "),_("p",[v._v("1.9.0")]),v._v(" "),_("ul",[_("li",[v._v("现在快照页面顶端的仪表盘可以交互了,点击时间戳可以切换,点击仪表盘可以进入“相簿”进行更多的操作")]),v._v(" "),_("li",[v._v("支持保存多个快照")]),v._v(" "),_("li",[v._v("支持对比任意两张快照")]),v._v(" "),_("li",[v._v("支持备份和恢复快照")]),v._v(" "),_("li",[v._v("现在详情页会展示各个组件的数量")]),v._v(" "),_("li",[v._v("现在快照页面会展示各个组件的变更数量")]),v._v(" "),_("li",[v._v("一些优化")])]),v._v(" "),_("p",[v._v("1.8.0")]),v._v(" "),_("p",[v._v("愉快的周末")]),v._v(" "),_("ul",[_("li",[v._v("现在快照可以记录权限的变化了")]),v._v(" "),_("li",[v._v("增加了 重载应用列表 设置项")]),v._v(" "),_("li",[v._v("由于自动刷新列表机制常常不好好工作,我们开发了极为先进的 手动刷新 功能")])]),v._v(" "),_("p",[v._v("1.7.6")]),v._v(" "),_("ul",[_("li",[v._v("使用 Kotlin 1.4 编译")]),v._v(" "),_("li",[v._v("重写了获取应用列表的逻辑,现在更加的稳定了")]),v._v(" "),_("li",[v._v("优化了一些布局(横屏瀑布流、滑动隐藏底栏等)")])]),v._v(" "),_("p",[v._v("1.7.5")]),v._v(" "),_("ul",[_("li",[v._v("优化了每一处列表的布局渲染性能")]),v._v(" "),_("li",[v._v("修正了原生库架构的名称,现在使用标准名称")]),v._v(" "),_("li",[v._v("增加了一些标记库")])]),v._v(" "),_("p",[v._v("1.7.4")]),v._v(" "),_("ul",[_("li",[v._v("修复 应用列表查询不到冻结应用的问题")]),v._v(" "),_("li",[v._v("修复 快照详情页闪退问题")]),v._v(" "),_("li",[v._v("优化 内存泄漏问题")])]),v._v(" "),_("p",[v._v("1.7.3")]),v._v(" "),_("ul",[_("li",[v._v("现在快照详情页可以显示知名标记库")]),v._v(" "),_("li",[v._v("修复 库引用统计有时为空的问题")])]),v._v(" "),_("p",[v._v("1.7.2")]),v._v(" "),_("ul",[_("li",[v._v("优化了一些体验")])]),v._v(" "),_("p",[v._v("1.7.1")]),v._v(" "),_("ul",[_("li",[v._v("暂时删除加载进度条来修复闪退问题")])]),v._v(" "),_("p",[v._v("1.7.0\n** 如果闪退请先尝试清除数据 **")]),v._v(" "),_("ul",[_("li",[v._v("增加了 Shortcuts")]),v._v(" "),_("li",[v._v("详情页长按包名可快速复制")]),v._v(" "),_("li",[v._v("现在详情页可以响应 android.intent.action.SHOW_APP_DETAIL")]),v._v(" "),_("li",[v._v("增加了读取进度条")]),v._v(" "),_("li",[v._v("优化了一些实现")])]),v._v(" "),_("p",[v._v("1.6.1")]),v._v(" "),_("ul",[_("li",[v._v("修复 Android L 上的严重闪退问题")])]),v._v(" "),_("p",[v._v("1.6.0")]),v._v(" "),_("ul",[_("li",[v._v("优化了快照详情页的显示效果,现在可以分类折叠,亦增加了标识来区分变更")]),v._v(" "),_("li",[v._v("快照增加了 “移动” 变更类型")])]),v._v(" "),_("p",[v._v("1.5.7")]),v._v(" "),_("ul",[_("li",[v._v("修复了 Android 10 上频发的闪退问题")]),v._v(" "),_("li",[v._v("优化了一些交互")]),v._v(" "),_("li",[v._v("增加了几个标记库")])])])}),[],!1,null,null,null);_.default=p.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{578:function(v,_,l){"use strict";l.r(_);var i=l(1),p=Object(i.a)({},(function(){var v=this,_=v._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[_("h1",{attrs:{id:"更新日志"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#更新日志"}},[v._v("#")]),v._v(" 更新日志")]),v._v(" "),_("p",[v._v("2.4.0")]),v._v(" "),_("ul",[_("li",[v._v("在应用详情页增加了 Application 标签内属性的查看入口")]),v._v(" "),_("li",[v._v("修复了无法解析一些应用的原生库的问题")]),v._v(" "),_("li",[v._v("现在 Xposed 模块标签显示具体的信息")]),v._v(" "),_("li",[v._v("引入了库引用模块和快照模块的高级菜单,现在可以进行更多的自定义操作")]),v._v(" "),_("li",[v._v("在应用详情页增加了应用的安装请求方和安装执行方信息(安装请求方的获取能力依赖于 Shizuku 或 Sui)")]),v._v(" "),_("li",[v._v("更新规则库到 V32")]),v._v(" "),_("li",[v._v("现在在「对比」页面对比两个 APK,可以进行详细信息的对比")]),v._v(" "),_("li",[v._v("在图表页面添加了针对 Jetpack Compose 使用情况的统计")]),v._v(" "),_("li",[v._v("修复了一些其他问题")])]),v._v(" "),_("p",[v._v("2.3.9")]),v._v(" "),_("ul",[_("li",[v._v("更新繁体中文翻译")]),v._v(" "),_("li",[v._v("修复未安装的权限的显示问题")]),v._v(" "),_("li",[v._v("现在原生库页面会展示所有 split 安装包中的原生库")]),v._v(" "),_("li",[v._v("修复了一些应用无法进入详情页的问题")]),v._v(" "),_("li",[v._v("现在详情页会展示应用的安装包体积")]),v._v(" "),_("li",[v._v("详情页中使用了新的 ABI 徽标")]),v._v(" "),_("li",[v._v("优化了进入详情页的速度")]),v._v(" "),_("li",[v._v("添加了 Android 14 的 Logo 标志,虽然 Android 14 的 API 最终很有可能是 34,但目前阶段还未到达平台稳定性,请自行判断应用的适配性")])]),v._v(" "),_("p",[v._v("2.3.8")]),v._v(" "),_("ul",[_("li",[v._v("修复了在搜索框键入文字闪退的问题")]),v._v(" "),_("li",[v._v("优化了图表的表现")]),v._v(" "),_("li",[v._v("优化了 Shortcuts 图标在 Android 12+ 深色模式上的表现")]),v._v(" "),_("li",[v._v("规则库更新至版本 31")])]),v._v(" "),_("p",[v._v("2.3.6")]),v._v(" "),_("ul",[_("li",[v._v("调整宽屏下的分屏逻辑")]),v._v(" "),_("li",[v._v("高级菜单中新增了更多的选项")]),v._v(" "),_("li",[v._v("提升应用流畅度,提高应用稳定性")])]),v._v(" "),_("p",[v._v("2.3.3")]),v._v(" "),_("ul",[_("li",[v._v("现在可以查看签名的详细信息")]),v._v(" "),_("li",[v._v("修复 ABI 图表没有统计 x86 应用的问题")]),v._v(" "),_("li",[v._v("设置项中增加快照保存提示的默认选项")]),v._v(" "),_("li",[v._v("修复 Harmony OS 系统上的应用详情页显示问题")]),v._v(" "),_("li",[v._v("修复了一些八哥")])]),v._v(" "),_("p",[v._v("2.3.1")]),v._v(" "),_("ul",[_("li",[v._v("标示未授权的权限")]),v._v(" "),_("li",[v._v("UI 改进")]),v._v(" "),_("li",[v._v("问题修复")])]),v._v(" "),_("p",[v._v("2.3.0")]),v._v(" "),_("ul",[_("li",[v._v("不再支持 Android 6")]),v._v(" "),_("li",[v._v("现在通过复用旧快照中的不变项来加速保存新的快照")]),v._v(" "),_("li",[v._v("现在会在详情页标记出不是 DYN 类型的 ELF 文件")]),v._v(" "),_("li",[v._v("不再在应用列表列举未完全卸载的应用包")]),v._v(" "),_("li",[v._v("在 FOSS 渠道移除了 AppCenter 和 HarmonyOS 检测相关内容")]),v._v(" "),_("li",[v._v("现在应用详情页会展示 CompileSdkVersion")]),v._v(" "),_("li",[v._v("修复云端规则无法更新")]),v._v(" "),_("li",[v._v("现在支持单应用对比,即可以在对比界面选择单个 APK 或一份快照两两组合,亦或是在外部选择两个 APK 文件分享至 LibChecker 进行对比")]),v._v(" "),_("li",[v._v("优化繁体中文翻译")]),v._v(" "),_("li",[v._v("支持检测 ReactiveX 框架")]),v._v(" "),_("li",[v._v("应用列表页的菜单支持更多的操作,同时设置页的「显示系统应用」也移动至高级菜单内")]),v._v(" "),_("li",[v._v("统计库引用的过程中加入了进度显示")]),v._v(" "),_("li",[v._v("规则库更新至版本 27")])]),v._v(" "),_("p",[v._v("2.2.11\n注意:这是最后一个支持 Android 6 的版本,在一段时间内我们仍会为 Android 6 修复一些严重问题,但会以独立版本的形式提供,并且不会与主干共享代码")]),v._v(" "),_("ul",[_("li",[v._v("调整 SplashScreen 动画")]),v._v(" "),_("li",[v._v("新式的 M3 Switch")]),v._v(" "),_("li",[v._v("现在使用徽标来表示快照中新增和已删除的应用")]),v._v(" "),_("li",[v._v("规则库 V25")]),v._v(" "),_("li",[v._v("响应 "),_("code",[v._v("android.intent.action.APPLICATION_PREFERENCES")])]),v._v(" "),_("li",[v._v("修复 multiarch 应用没有出现在 ABI 统计中的问题")]),v._v(" "),_("li",[v._v("修复特定情况下原生库匹配失败的问题")]),v._v(" "),_("li",[v._v("在启动应用处提供备选的启动方式,这通常适用于没有桌面图标的应用")]),v._v(" "),_("li",[v._v("现在可以长按组件快速调用 Blocker 禁用和解禁组件")]),v._v(" "),_("li",[v._v("现在对于备份快照功能,如果数据库大于 100MB,则会触发全量备份,使用该备份文件恢复时会覆盖式恢复")]),v._v(" "),_("li",[v._v("一些依赖更新和改动")])]),v._v(" "),_("p",[v._v("2.2.10")]),v._v(" "),_("ul",[_("li",[v._v("Material 3")]),v._v(" "),_("li",[v._v("修复禁用通知后保存快照出现的崩溃")]),v._v(" "),_("li",[v._v("增加一种获取 Jetpack Compose 版本的方法")]),v._v(" "),_("li",[v._v("更新依赖")]),v._v(" "),_("li",[v._v("修复一些问题")])]),v._v(" "),_("p",[v._v("2.2.9")]),v._v(" "),_("ul",[_("li",[v._v("修复在不支持 Activity 嵌入的设备上启动崩溃的问题")]),v._v(" "),_("li",[v._v("适配 Android 13 特性")]),v._v(" "),_("li",[v._v("替换应用列表 Shortcut 为图表")]),v._v(" "),_("li",[v._v("在快照页面显示当前应用数量")])]),v._v(" "),_("p",[v._v("2.2.7")]),v._v(" "),_("ul",[_("li",[v._v("对于相关链接是 GitHub 仓库的规则库,现在可以显示仓库的最近更新时间(注意:GitHub API 有访问频率限制,一小时内不可超过 60 次)")]),v._v(" "),_("li",[v._v("在应用详情页显示组件的多进程信息,并可通过点击根据进程进行过滤")]),v._v(" "),_("li",[v._v("支持了在应用详情页中通过 质感文件(me.zhanghai.android.files)导航至应用源目录")]),v._v(" "),_("li",[v._v("在图表的 Target SDK 和 Min SDK 弹窗中显示 Android 的版本信息")]),v._v(" "),_("li",[v._v("由于 Gitee 锁定了镜像仓库,我们移除了云端规则的 Gitee 选项")]),v._v(" "),_("li",[v._v("规则库更新至版本 24")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.2.6")]),v._v(" "),_("ul",[_("li",[v._v("修复一些问题")])]),v._v(" "),_("p",[v._v("2.2.5")]),v._v(" "),_("ul",[_("li",[v._v("使应用详情页和 APK 分析页的功能更加统一")]),v._v(" "),_("li",[v._v("现在支持检测是否使用了 Jetpack Compose")]),v._v(" "),_("li",[v._v("增加了一种检测 Kotlin 插件版本的方法")]),v._v(" "),_("li",[v._v("现在对于元数据,如果其值可能是一个 Android 资源 ID,它可以被转化为原始值")]),v._v(" "),_("li",[v._v("修复了被禁用的应用无法查看 Splits APK")]),v._v(" "),_("li",[v._v("优化了应用列表的刷新逻辑")]),v._v(" "),_("li",[v._v("更新了依赖")])]),v._v(" "),_("p",[v._v("2.2.4")]),v._v(" "),_("ul",[_("li",[v._v("在 Tiramisu 上支持了带主题的应用图标")]),v._v(" "),_("li",[v._v("启用了对话框样式的新增应用和已删除应用详情页面")]),v._v(" "),_("li",[v._v("在 Android 12 以上启用了对话框下层模糊效果")]),v._v(" "),_("li",[v._v("优化了图表的样式")]),v._v(" "),_("li",[v._v("在图表中增加了对 minSdkVersion 版本的统计")]),v._v(" "),_("li",[v._v("现在支持通过 URL Scheme 保存快照")]),v._v(" "),_("li",[v._v("现在支持按「包」和「共享的 UID」进行统计")]),v._v(" "),_("li",[v._v("更新了依赖")]),v._v(" "),_("li",[v._v("修复了一些错误")])]),v._v(" "),_("p",[v._v("2.2.3")]),v._v(" "),_("ul",[_("li",[v._v("现在在应用列表页面会标识出被禁用的应用")]),v._v(" "),_("li",[v._v("更新依赖")]),v._v(" "),_("li",[v._v("优化实现")])]),v._v(" "),_("p",[v._v("2.2.2")]),v._v(" "),_("ul",[_("li",[v._v("更新依赖")]),v._v(" "),_("li",[v._v("修复了一些问题")]),v._v(" "),_("li",[v._v("现在标记库以 SDK 的方式提供。这意味着您可以轻松地将 LibChecker 中的规则库集成至您的应用。(详情参见:https://github.com/zhaobozhen/LibChecker-Rules-Bundle)")])]),v._v(" "),_("p",[v._v("2.2.1")]),v._v(" "),_("ul",[_("li",[v._v("支持了在详情页长按应用图标将其复制到剪贴板")]),v._v(" "),_("li",[v._v("在 Android 12 以上的 Material 3 主题(Alpha)中启用动态颜色")]),v._v(" "),_("li",[v._v("支持在详情页中搜索过滤组件")]),v._v(" "),_("li",[v._v("更新俄语翻译")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.2.0")]),v._v(" "),_("ul",[_("li",[v._v("快照支持了记录应用包的体积")]),v._v(" "),_("li",[v._v("现在如果应用包的体积发生变化则会触发快照对比")]),v._v(" "),_("li",[v._v("统计页面支持了权限和元数据,并且加快了进入二级页面的加载速度")]),v._v(" "),_("li",[v._v("现在快照的详情页面支持生成文字报告")]),v._v(" "),_("li",[v._v("在应用的详情页增加了关于 "),_("code",[v._v("android:extractNativeLibs")]),v._v(" 的提示项")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.1.14")]),v._v(" "),_("ul",[_("li",[v._v("支持了 Android 12 SplashScreen API")]),v._v(" "),_("li",[v._v("缩短了初始化时间")]),v._v(" "),_("li",[v._v("调整了详情页布局")])]),v._v(" "),_("p",[v._v("2.1.13")]),v._v(" "),_("ul",[_("li",[v._v("支持了 Android 12L 的 Activity Embeding API")]),v._v(" "),_("li",[v._v("支持了通过分享的方式进行 apk 分析")]),v._v(" "),_("li",[v._v("修复了八哥")])]),v._v(" "),_("p",[v._v("2.1.12")]),v._v(" "),_("ul",[_("li",[v._v("升级规则库至版本 18")]),v._v(" "),_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.1.11")]),v._v(" "),_("ul",[_("li",[v._v("现在快照可以记录元数据的变化了(在该版本前生成的快照不会记录元数据,因此对比会出现全部新增的问题)")]),v._v(" "),_("li",[v._v("优化性能和修复 bugs")])]),v._v(" "),_("p",[v._v("2.1.10")]),v._v(" "),_("ul",[_("li",[v._v("修复 ABI 检测方法")]),v._v(" "),_("li",[v._v("修复追踪的 app 不能在快照页面被移除")]),v._v(" "),_("li",[v._v("新增了一些库规则和图标")])]),v._v(" "),_("p",[v._v("2.1.9")]),v._v(" "),_("ul",[_("li",[v._v("修复 bugs")])]),v._v(" "),_("p",[v._v("2.1.8")]),v._v(" "),_("ul",[_("li",[v._v("在应用详情页可以查看应用的权限和元数据信息")]),v._v(" "),_("li",[v._v("修复 bugs")]),v._v(" "),_("li",[v._v("修改了检测 ABI 的方式,该版本会强制重载应用列表")])]),v._v(" "),_("p",[v._v("2.1.7")]),v._v(" "),_("ul",[_("li",[v._v("修复 bug")])]),v._v(" "),_("p",[v._v("2.1.6")]),v._v(" "),_("ul",[_("li",[v._v("一个版本的迭代固然重要,但也要考虑历史的进程。在修复旧霸鸽的同时,往往也会带入新的霸鸽(")])]),v._v(" "),_("p",[v._v("2.1.5")]),v._v(" "),_("ul",[_("li",[v._v("修复问题")])]),v._v(" "),_("p",[v._v("2.1.4")]),v._v(" "),_("ul",[_("li",[v._v("支持显示 Overlay 应用的 target package")])]),v._v(" "),_("p",[v._v("2.1.3")]),v._v(" "),_("ul",[_("li",[v._v("小小修补")])]),v._v(" "),_("p",[v._v("2.1.2")]),v._v(" "),_("ul",[_("li",[v._v("修复了一些问题")])]),v._v(" "),_("p",[v._v("2.1.1")]),v._v(" "),_("ul",[_("li",[v._v("修复了带有静态库的详情页错乱问题")]),v._v(" "),_("li",[v._v("修复了详情页导航栏问题")]),v._v(" "),_("li",[v._v("修复了一处内存泄漏")]),v._v(" "),_("li",[v._v("修复深色模式开关无效")])]),v._v(" "),_("p",[v._v("2.1.0")]),v._v(" "),_("ul",[_("li",[v._v("现在无原生库的标签展示 CPU 的 ABI")]),v._v(" "),_("li",[v._v("修复了 APK 分析有时看不到组件的问题")]),v._v(" "),_("li",[v._v("删除了快照 FAB,现在它在 Toolbar 的位置")]),v._v(" "),_("li",[v._v("图表页面移至二级页面")]),v._v(" "),_("li",[v._v("规则库现在使用 db 文件分发")]),v._v(" "),_("li",[v._v("详情页现在展示应用的 sharedUserId")]),v._v(" "),_("li",[v._v("详情页现在展示应用的全部 ABIs")]),v._v(" "),_("li",[v._v("时间节点选择和管理 Dialog 现在会展示每张快照中最新的 5 个应用")]),v._v(" "),_("li",[v._v("现在获取应用列表会尝试绕过一些 ROM 发明的限制读取应用列表权限")]),v._v(" "),_("li",[v._v("更换了新的 Kotlin logo")]),v._v(" "),_("li",[v._v("设置中可以切换深色模式")]),v._v(" "),_("li",[v._v("支持识别 hap 应用以及查看其 Abilities")])]),v._v(" "),_("p",[v._v("2.0.0")]),v._v(" "),_("ul",[_("li",[_("strong",[v._v("重要")]),v._v(" 现在只支持 Android 6.0 以上的设备")]),v._v(" "),_("li",[_("strong",[v._v("重要")]),v._v(" 由于支持了一些新的情况和调整了一些错误的方法,2.0 之前的快照内容都没有参考价值,建议更新后直接保存新的快照")]),v._v(" "),_("li",[v._v("现在支持从云端仓库更新标记库")]),v._v(" "),_("li",[v._v("现在启动一个前台服务来保存快照,保存快照时可以切换到后台了")]),v._v(" "),_("li",[v._v("【集成】对于四大组件,现在可以长按与“大圣净化”交互(需要大圣净化 v3.8.47 以上)")]),v._v(" "),_("li",[v._v("【集成】对于 Activity,现在可以长按与“Anywhere- 编辑器”交互(需要 Anywhere- 2.2.0 以上)")]),v._v(" "),_("li",[v._v("支持了 disabled 组件,请尽量避免依赖 2.0 之前的快照,因为之前并没有记录 disabled 组件")]),v._v(" "),_("li",[v._v("支持了 assets 中的原生库")]),v._v(" "),_("li",[v._v("支持了 MultiArch")]),v._v(" "),_("li",[v._v("图表支持了统计应用的 Target API 等级")]),v._v(" "),_("li",[v._v("支持了搜索字段高亮")]),v._v(" "),_("li",[v._v("修复了大量的错误和不合适的方法")])]),v._v(" "),_("p",[v._v("1.10.0")]),v._v(" "),_("ul",[_("li",[v._v("支持了 Dex 类检测(过滤了一些无意义的类)并加入了大量的 Dex 类标记库")]),v._v(" "),_("li",[v._v("详情页点击应用图标可以进一步操作")]),v._v(" "),_("li",[v._v("支持了 x86、x86_64 的架构检测")]),v._v(" "),_("li",[v._v("快照 - 仪表盘 增加了 追踪 功能,可以在每次开启快照时强制对比变更")]),v._v(" "),_("li",[v._v("优化和消灭臭虫")])]),v._v(" "),_("p",[v._v("1.9.0")]),v._v(" "),_("ul",[_("li",[v._v("现在快照页面顶端的仪表盘可以交互了,点击时间戳可以切换,点击仪表盘可以进入“相簿”进行更多的操作")]),v._v(" "),_("li",[v._v("支持保存多个快照")]),v._v(" "),_("li",[v._v("支持对比任意两张快照")]),v._v(" "),_("li",[v._v("支持备份和恢复快照")]),v._v(" "),_("li",[v._v("现在详情页会展示各个组件的数量")]),v._v(" "),_("li",[v._v("现在快照页面会展示各个组件的变更数量")]),v._v(" "),_("li",[v._v("一些优化")])]),v._v(" "),_("p",[v._v("1.8.0")]),v._v(" "),_("p",[v._v("愉快的周末")]),v._v(" "),_("ul",[_("li",[v._v("现在快照可以记录权限的变化了")]),v._v(" "),_("li",[v._v("增加了 重载应用列表 设置项")]),v._v(" "),_("li",[v._v("由于自动刷新列表机制常常不好好工作,我们开发了极为先进的 手动刷新 功能")])]),v._v(" "),_("p",[v._v("1.7.6")]),v._v(" "),_("ul",[_("li",[v._v("使用 Kotlin 1.4 编译")]),v._v(" "),_("li",[v._v("重写了获取应用列表的逻辑,现在更加的稳定了")]),v._v(" "),_("li",[v._v("优化了一些布局(横屏瀑布流、滑动隐藏底栏等)")])]),v._v(" "),_("p",[v._v("1.7.5")]),v._v(" "),_("ul",[_("li",[v._v("优化了每一处列表的布局渲染性能")]),v._v(" "),_("li",[v._v("修正了原生库架构的名称,现在使用标准名称")]),v._v(" "),_("li",[v._v("增加了一些标记库")])]),v._v(" "),_("p",[v._v("1.7.4")]),v._v(" "),_("ul",[_("li",[v._v("修复 应用列表查询不到冻结应用的问题")]),v._v(" "),_("li",[v._v("修复 快照详情页闪退问题")]),v._v(" "),_("li",[v._v("优化 内存泄漏问题")])]),v._v(" "),_("p",[v._v("1.7.3")]),v._v(" "),_("ul",[_("li",[v._v("现在快照详情页可以显示知名标记库")]),v._v(" "),_("li",[v._v("修复 库引用统计有时为空的问题")])]),v._v(" "),_("p",[v._v("1.7.2")]),v._v(" "),_("ul",[_("li",[v._v("优化了一些体验")])]),v._v(" "),_("p",[v._v("1.7.1")]),v._v(" "),_("ul",[_("li",[v._v("暂时删除加载进度条来修复闪退问题")])]),v._v(" "),_("p",[v._v("1.7.0\n** 如果闪退请先尝试清除数据 **")]),v._v(" "),_("ul",[_("li",[v._v("增加了 Shortcuts")]),v._v(" "),_("li",[v._v("详情页长按包名可快速复制")]),v._v(" "),_("li",[v._v("现在详情页可以响应 android.intent.action.SHOW_APP_DETAIL")]),v._v(" "),_("li",[v._v("增加了读取进度条")]),v._v(" "),_("li",[v._v("优化了一些实现")])]),v._v(" "),_("p",[v._v("1.6.1")]),v._v(" "),_("ul",[_("li",[v._v("修复 Android L 上的严重闪退问题")])]),v._v(" "),_("p",[v._v("1.6.0")]),v._v(" "),_("ul",[_("li",[v._v("优化了快照详情页的显示效果,现在可以分类折叠,亦增加了标识来区分变更")]),v._v(" "),_("li",[v._v("快照增加了 “移动” 变更类型")])]),v._v(" "),_("p",[v._v("1.5.7")]),v._v(" "),_("ul",[_("li",[v._v("修复了 Android 10 上频发的闪退问题")]),v._v(" "),_("li",[v._v("优化了一些交互")]),v._v(" "),_("li",[v._v("增加了几个标记库")])])])}),[],!1,null,null,null);_.default=p.exports}}]); \ No newline at end of file diff --git "a/assets/js/page-\346\246\202\350\246\201.da56f3af.js" "b/assets/js/page-\346\246\202\350\246\201.958a80fd.js" similarity index 98% rename from "assets/js/page-\346\246\202\350\246\201.da56f3af.js" rename to "assets/js/page-\346\246\202\350\246\201.958a80fd.js" index baa0392..7a01b61 100644 --- "a/assets/js/page-\346\246\202\350\246\201.da56f3af.js" +++ "b/assets/js/page-\346\246\202\350\246\201.958a80fd.js" @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{584:function(t,e,r){"use strict";r.r(e);var a=r(1),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"概要"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#概要"}},[t._v("#")]),t._v(" 概要")]),t._v(" "),e("h2",{attrs:{id:"libchecker-是什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#libchecker-是什么"}},[t._v("#")]),t._v(" LibChecker 是什么?")]),t._v(" "),e("p",[t._v("LibChecker 最初是我设计给自己用来查看手机里的应用是否使用了 64 位架构的 App。是的,它功能非常简陋。后来,为了学习大厂优秀软件在开发中使用了哪些技术栈,我引入了 "),e("strong",[t._v("知名库标记")]),t._v(" 功能。将我所知晓的、网上有所记载的知名 SDK 组件标识出来,并且做了 "),e("strong",[t._v("库引用统计")]),t._v(",方便查看。再后来,我发现一款成熟的、用户基数较大的 App,它的主界面和逻辑是不会发生太大变化的。这就产生了我们经常会看到的景象:一款 App 每次更新都像是刷版本号,主体并无任何变化的感知。但其实它的底层可能有翻天覆地的变化。介于此,我借鉴了 "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Version_control",target:"_blank",rel:"noopener noreferrer"}},[t._v("VCS"),e("OutboundLink")],1),t._v(" 的思想,设计并开发出了 "),e("strong",[t._v("快照")]),t._v(" 功能。从始至终,我都是把 Libchecker 当作一款开发者工具来设计的,因此它对于普通用户来说门槛较高,甚至也许不能带给用户什么价值。但是随着越来越多的开发者和极客用户的使用和反馈建议,LibChecker 也在不断地完善自身……")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/zhaobozhen/LibChecker/actions/workflows/android.yml",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://github.com/zhaobozhen/LibChecker/actions/workflows/android.yml/badge.svg",alt:"Android CI"}}),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"libchecker-能做什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#libchecker-能做什么"}},[t._v("#")]),t._v(" LibChecker 能做什么?")]),t._v(" "),e("p",[t._v("LibChecker 有着一些基础功能:")]),t._v(" "),e("ul",[e("li",[t._v("查看 App 使用的原生库架构(无原生库 / 32 位 / 64 位)")]),t._v(" "),e("li",[t._v("查看 App 的注册组件(服务 / 活动 / 广播接收器 / 内容提供器)")]),t._v(" "),e("li",[t._v("饼状图统计原生库架构分布")])]),t._v(" "),e("p",[t._v("LibChecker 还有着一些特色功能:")]),t._v(" "),e("ul",[e("li",[t._v("知名库标记,基于在线的规则仓库,实时更新")]),t._v(" "),e("li",[t._v("库引用统计,统计手机里使用最多的 SDK")]),t._v(" "),e("li",[t._v("包特性分析,查看 App 是否是 "),e("a",{attrs:{href:"https://developer.android.com/studio/build/configure-apk-splits",target:"_blank",rel:"noopener noreferrer"}},[t._v("Split APKs"),e("OutboundLink")],1),t._v("、是否使用了 "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Kotlin_(programming_language)",target:"_blank",rel:"noopener noreferrer"}},[t._v("Kotlin"),e("OutboundLink")],1),t._v(" 来编写")]),t._v(" "),e("li",[t._v("快照,将当前所有应用的主要信息保存,与未来的某一时刻进行对比")])]),t._v(" "),e("h2",{attrs:{id:"基础知识"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#基础知识"}},[t._v("#")]),t._v(" 基础知识")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/What-is-Native-Library-Architecture.html"}},[t._v("什么是原生库架构?")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/What-is-Registered-Component.html"}},[t._v("什么是注册组件?")])],1),t._v(" "),e("h2",{attrs:{id:"使用方法"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用方法"}},[t._v("#")]),t._v(" 使用方法")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Marked-Popular-Library.html"}},[t._v("知名库标记")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Library-Reference-Statistics.html"}},[t._v("库引用统计")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Package-Features-Analysis.html"}},[t._v("包特性分析")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Snapshot-Usage.html"}},[t._v("快照")])],1),t._v(" "),e("h2",{attrs:{id:"相关信息"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#相关信息"}},[t._v("#")]),t._v(" 相关信息")]),t._v(" "),e("p",[e("strong",[t._v("规则仓库:")]),t._v(" "),e("a",{attrs:{href:"https://github.com/zhaobozhen/LibChecker-Rules",target:"_blank",rel:"noopener noreferrer"}},[t._v("LibChecker-Rules"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("strong",[t._v("联系我:")]),t._v(" "),e("a",{attrs:{href:"mailto:absinthe@absinthe.life"}},[t._v("absinthe@absinthe.life")])]),t._v(" "),e("h2",{attrs:{id:"libchecker-将要做什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#libchecker-将要做什么"}},[t._v("#")]),t._v(" LibChecker 将要做什么")]),t._v(" "),e("ul",[e("li",[t._v("向外提供标记规则的 SDK")]),t._v(" "),e("li",[t._v("自定义规则仓库")]),t._v(" "),e("li",[t._v("时间线")]),t._v(" "),e("li",[t._v("云端更新本地标记库")]),t._v(" "),e("li",[t._v("...")])]),t._v(" "),e("h2",{attrs:{id:"思维导图"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#思维导图"}},[t._v("#")]),t._v(" 思维导图")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Mind-Mapping.html"}},[t._v("查看")])],1)])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{586:function(t,e,r){"use strict";r.r(e);var a=r(1),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"概要"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#概要"}},[t._v("#")]),t._v(" 概要")]),t._v(" "),e("h2",{attrs:{id:"libchecker-是什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#libchecker-是什么"}},[t._v("#")]),t._v(" LibChecker 是什么?")]),t._v(" "),e("p",[t._v("LibChecker 最初是我设计给自己用来查看手机里的应用是否使用了 64 位架构的 App。是的,它功能非常简陋。后来,为了学习大厂优秀软件在开发中使用了哪些技术栈,我引入了 "),e("strong",[t._v("知名库标记")]),t._v(" 功能。将我所知晓的、网上有所记载的知名 SDK 组件标识出来,并且做了 "),e("strong",[t._v("库引用统计")]),t._v(",方便查看。再后来,我发现一款成熟的、用户基数较大的 App,它的主界面和逻辑是不会发生太大变化的。这就产生了我们经常会看到的景象:一款 App 每次更新都像是刷版本号,主体并无任何变化的感知。但其实它的底层可能有翻天覆地的变化。介于此,我借鉴了 "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Version_control",target:"_blank",rel:"noopener noreferrer"}},[t._v("VCS"),e("OutboundLink")],1),t._v(" 的思想,设计并开发出了 "),e("strong",[t._v("快照")]),t._v(" 功能。从始至终,我都是把 Libchecker 当作一款开发者工具来设计的,因此它对于普通用户来说门槛较高,甚至也许不能带给用户什么价值。但是随着越来越多的开发者和极客用户的使用和反馈建议,LibChecker 也在不断地完善自身……")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/zhaobozhen/LibChecker/actions/workflows/android.yml",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://github.com/zhaobozhen/LibChecker/actions/workflows/android.yml/badge.svg",alt:"Android CI"}}),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"libchecker-能做什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#libchecker-能做什么"}},[t._v("#")]),t._v(" LibChecker 能做什么?")]),t._v(" "),e("p",[t._v("LibChecker 有着一些基础功能:")]),t._v(" "),e("ul",[e("li",[t._v("查看 App 使用的原生库架构(无原生库 / 32 位 / 64 位)")]),t._v(" "),e("li",[t._v("查看 App 的注册组件(服务 / 活动 / 广播接收器 / 内容提供器)")]),t._v(" "),e("li",[t._v("饼状图统计原生库架构分布")])]),t._v(" "),e("p",[t._v("LibChecker 还有着一些特色功能:")]),t._v(" "),e("ul",[e("li",[t._v("知名库标记,基于在线的规则仓库,实时更新")]),t._v(" "),e("li",[t._v("库引用统计,统计手机里使用最多的 SDK")]),t._v(" "),e("li",[t._v("包特性分析,查看 App 是否是 "),e("a",{attrs:{href:"https://developer.android.com/studio/build/configure-apk-splits",target:"_blank",rel:"noopener noreferrer"}},[t._v("Split APKs"),e("OutboundLink")],1),t._v("、是否使用了 "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Kotlin_(programming_language)",target:"_blank",rel:"noopener noreferrer"}},[t._v("Kotlin"),e("OutboundLink")],1),t._v(" 来编写")]),t._v(" "),e("li",[t._v("快照,将当前所有应用的主要信息保存,与未来的某一时刻进行对比")])]),t._v(" "),e("h2",{attrs:{id:"基础知识"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#基础知识"}},[t._v("#")]),t._v(" 基础知识")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/What-is-Native-Library-Architecture.html"}},[t._v("什么是原生库架构?")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/What-is-Registered-Component.html"}},[t._v("什么是注册组件?")])],1),t._v(" "),e("h2",{attrs:{id:"使用方法"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用方法"}},[t._v("#")]),t._v(" 使用方法")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Marked-Popular-Library.html"}},[t._v("知名库标记")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Library-Reference-Statistics.html"}},[t._v("库引用统计")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Package-Features-Analysis.html"}},[t._v("包特性分析")])],1),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Snapshot-Usage.html"}},[t._v("快照")])],1),t._v(" "),e("h2",{attrs:{id:"相关信息"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#相关信息"}},[t._v("#")]),t._v(" 相关信息")]),t._v(" "),e("p",[e("strong",[t._v("规则仓库:")]),t._v(" "),e("a",{attrs:{href:"https://github.com/zhaobozhen/LibChecker-Rules",target:"_blank",rel:"noopener noreferrer"}},[t._v("LibChecker-Rules"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("strong",[t._v("联系我:")]),t._v(" "),e("a",{attrs:{href:"mailto:absinthe@absinthe.life"}},[t._v("absinthe@absinthe.life")])]),t._v(" "),e("h2",{attrs:{id:"libchecker-将要做什么"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#libchecker-将要做什么"}},[t._v("#")]),t._v(" LibChecker 将要做什么")]),t._v(" "),e("ul",[e("li",[t._v("向外提供标记规则的 SDK")]),t._v(" "),e("li",[t._v("自定义规则仓库")]),t._v(" "),e("li",[t._v("时间线")]),t._v(" "),e("li",[t._v("云端更新本地标记库")]),t._v(" "),e("li",[t._v("...")])]),t._v(" "),e("h2",{attrs:{id:"思维导图"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#思维导图"}},[t._v("#")]),t._v(" 思维导图")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/guide/Mind-Mapping.html"}},[t._v("查看")])],1)])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git "a/assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.47b9302b.js" "b/assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.b7197f2b.js" similarity index 81% rename from "assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.47b9302b.js" rename to "assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.b7197f2b.js" index ade8411..4994a12 100644 --- "a/assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.47b9302b.js" +++ "b/assets/js/page-\347\237\245\345\220\215\345\272\223\346\240\207\350\256\260.b7197f2b.js" @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{556:function(t,e,a){t.exports=a.p+"assets/img/marked_lib_example.35bce525.jpg"},557:function(t,e,a){t.exports=a.p+"assets/img/marked_library_dialog_found.f6d5da18.jpg"},558:function(t,e,a){t.exports=a.p+"assets/img/marked_library_dialog_not_found.561749a4.jpg"},585:function(t,e,a){"use strict";a.r(e);var s=a(1),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"知名库标记"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#知名库标记"}},[t._v("#")]),t._v(" 知名库标记")]),t._v(" "),e("h2",{attrs:{id:"简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#简介"}},[t._v("#")]),t._v(" 简介")]),t._v(" "),e("img",{staticStyle:{zoom:"50%"},attrs:{src:a(556),alt:"marked_lib_example"}}),t._v(" "),e("p",[t._v("LibChecker 目前的标记库由主程序本地定义 + 规则仓库云端定义共同实现。在浏览 App 的组件列表时,如果组件名称匹配本地内置规则,则会在项目右侧显示该库的徽标。轻击列表项即可呼出库详情弹窗。")]),t._v(" "),e("img",{staticStyle:{zoom:"50%"},attrs:{src:a(557),alt:"marked_library_dialog_found"}}),t._v(" "),e("p",[t._v("弹窗内依次展示了 库名称、开发团队、规则贡献者、简介和相关链接。如果没有匹配到云端规则则会出现以下情形。")]),t._v(" "),e("img",{staticStyle:{zoom:"50%"},attrs:{src:a(558),alt:"marked_library_dialog_not_found"}}),t._v(" "),e("p",[t._v("这时您可以选择点击弹窗中间的 "),e("strong",[t._v("协助我们来补充信息")]),t._v(",规则将会以 GitHub issue 的形式被提交,您可能需要一个 GitHub 账户。当然,您也可以直接访问 "),e("a",{attrs:{href:"https://github.com/zhaobozhen/LibChecker-Rules",target:"_blank",rel:"noopener noreferrer"}},[t._v("LibChecker-Rules"),e("OutboundLink")],1),t._v(" 规则仓库来提交 issue,注意需要按照模板形式提交。")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),e("p",[t._v("LibChecker 会检测设备与云端仓库的连通性,只有可以正常访问云端仓库才可以开启库详情弹窗,因此建议您保持网络通畅。国内网络建议选择 Gitee 仓库,国外网络建议选择 GitHub 仓库。")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{553:function(t,e,a){t.exports=a.p+"assets/img/marked_lib_example.35bce525.jpg"},554:function(t,e,a){t.exports=a.p+"assets/img/marked_library_dialog_found.f6d5da18.jpg"},555:function(t,e,a){t.exports=a.p+"assets/img/marked_library_dialog_not_found.561749a4.jpg"},581:function(t,e,a){"use strict";a.r(e);var s=a(1),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"知名库标记"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#知名库标记"}},[t._v("#")]),t._v(" 知名库标记")]),t._v(" "),e("h2",{attrs:{id:"简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#简介"}},[t._v("#")]),t._v(" 简介")]),t._v(" "),e("img",{staticStyle:{zoom:"50%"},attrs:{src:a(553),alt:"marked_lib_example"}}),t._v(" "),e("p",[t._v("LibChecker 目前的标记库由主程序本地定义 + 规则仓库云端定义共同实现。在浏览 App 的组件列表时,如果组件名称匹配本地内置规则,则会在项目右侧显示该库的徽标。轻击列表项即可呼出库详情弹窗。")]),t._v(" "),e("img",{staticStyle:{zoom:"50%"},attrs:{src:a(554),alt:"marked_library_dialog_found"}}),t._v(" "),e("p",[t._v("弹窗内依次展示了 库名称、开发团队、规则贡献者、简介和相关链接。如果没有匹配到云端规则则会出现以下情形。")]),t._v(" "),e("img",{staticStyle:{zoom:"50%"},attrs:{src:a(555),alt:"marked_library_dialog_not_found"}}),t._v(" "),e("p",[t._v("这时您可以选择点击弹窗中间的 "),e("strong",[t._v("协助我们来补充信息")]),t._v(",规则将会以 GitHub issue 的形式被提交,您可能需要一个 GitHub 账户。当然,您也可以直接访问 "),e("a",{attrs:{href:"https://github.com/zhaobozhen/LibChecker-Rules",target:"_blank",rel:"noopener noreferrer"}},[t._v("LibChecker-Rules"),e("OutboundLink")],1),t._v(" 规则仓库来提交 issue,注意需要按照模板形式提交。")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("提示")]),t._v(" "),e("p",[t._v("LibChecker 会检测设备与云端仓库的连通性,只有可以正常访问云端仓库才可以开启库详情弹窗,因此建议您保持网络通畅。国内网络建议选择 Gitee 仓库,国外网络建议选择 GitHub 仓库。")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/category/index.html b/category/index.html index 1f22904..64496c5 100644 --- a/category/index.html +++ b/category/index.html @@ -17,7 +17,7 @@ - + @@ -91,6 +91,6 @@ Install - + diff --git a/changelog/index.html b/changelog/index.html index 3fcccb4..58b3ec0 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -17,7 +17,7 @@ - + @@ -52,14 +52,14 @@ 下载 Github - (opens new window)

更新日志

Absinthe ... 2023-8-14 About 10 min

# 更新日志

2.4.0

  • 在应用详情页增加了 Application 标签内属性的查看入口
  • 修复了无法解析一些应用的原生库的问题
  • 现在 Xposed 模块标签显示具体的信息
  • 引入了库引用模块和快照模块的高级菜单,现在可以进行更多的自定义操作
  • 在应用详情页增加了应用的安装请求方和安装执行方信息(安装请求方的获取能力依赖于 Shizuku 或 Sui)
  • 更新规则库到 V32
  • 现在在「对比」页面对比两个 APK,可以进行详细信息的对比
  • 在图表页面添加了针对 Jetpack Compose 使用情况的统计
  • 修复了一些其他问题

2.3.9

  • 更新繁体中文翻译
  • 修复未安装的权限的显示问题
  • 现在原生库页面会展示所有 split 安装包中的原生库
  • 修复了一些应用无法进入详情页的问题
  • 现在详情页会展示应用的安装包体积
  • 详情页中使用了新的 ABI 徽标
  • 优化了进入详情页的速度
  • 添加了 Android 14 的 Logo 标志,虽然 Android 14 的 API 最终很有可能是 34,但目前阶段还未到达平台稳定性,请自行判断应用的适配性

2.3.8

  • 修复了在搜索框键入文字闪退的问题
  • 优化了图表的表现
  • 优化了 Shortcuts 图标在 Android 12+ 深色模式上的表现
  • 规则库更新至版本 31

2.3.6

  • 调整宽屏下的分屏逻辑
  • 高级菜单中新增了更多的选项
  • 提升应用流畅度,提高应用稳定性

2.3.3

  • 现在可以查看签名的详细信息
  • 修复 ABI 图表没有统计 x86 应用的问题
  • 设置项中增加快照保存提示的默认选项
  • 修复 Harmony OS 系统上的应用详情页显示问题
  • 修复了一些八哥

2.3.1

  • 标示未授权的权限
  • UI 改进
  • 问题修复

2.3.0

  • 不再支持 Android 6
  • 现在通过复用旧快照中的不变项来加速保存新的快照
  • 现在会在详情页标记出不是 DYN 类型的 ELF 文件
  • 不再在应用列表列举未完全卸载的应用包
  • 在 FOSS 渠道移除了 AppCenter 和 HarmonyOS 检测相关内容
  • 现在应用详情页会展示 CompileSdkVersion
  • 修复云端规则无法更新
  • 现在支持单应用对比,即可以在对比界面选择单个 APK 或一份快照两两组合,亦或是在外部选择两个 APK 文件分享至 LibChecker 进行对比
  • 优化繁体中文翻译
  • 支持检测 ReactiveX 框架
  • 应用列表页的菜单支持更多的操作,同时设置页的「显示系统应用」也移动至高级菜单内
  • 统计库引用的过程中加入了进度显示
  • 规则库更新至版本 27

2.2.11 + (opens new window)

更新日志

Absinthe ... 2023-11-28 About 10 min

# 更新日志

2.4.0

  • 在应用详情页增加了 Application 标签内属性的查看入口
  • 修复了无法解析一些应用的原生库的问题
  • 现在 Xposed 模块标签显示具体的信息
  • 引入了库引用模块和快照模块的高级菜单,现在可以进行更多的自定义操作
  • 在应用详情页增加了应用的安装请求方和安装执行方信息(安装请求方的获取能力依赖于 Shizuku 或 Sui)
  • 更新规则库到 V32
  • 现在在「对比」页面对比两个 APK,可以进行详细信息的对比
  • 在图表页面添加了针对 Jetpack Compose 使用情况的统计
  • 修复了一些其他问题

2.3.9

  • 更新繁体中文翻译
  • 修复未安装的权限的显示问题
  • 现在原生库页面会展示所有 split 安装包中的原生库
  • 修复了一些应用无法进入详情页的问题
  • 现在详情页会展示应用的安装包体积
  • 详情页中使用了新的 ABI 徽标
  • 优化了进入详情页的速度
  • 添加了 Android 14 的 Logo 标志,虽然 Android 14 的 API 最终很有可能是 34,但目前阶段还未到达平台稳定性,请自行判断应用的适配性

2.3.8

  • 修复了在搜索框键入文字闪退的问题
  • 优化了图表的表现
  • 优化了 Shortcuts 图标在 Android 12+ 深色模式上的表现
  • 规则库更新至版本 31

2.3.6

  • 调整宽屏下的分屏逻辑
  • 高级菜单中新增了更多的选项
  • 提升应用流畅度,提高应用稳定性

2.3.3

  • 现在可以查看签名的详细信息
  • 修复 ABI 图表没有统计 x86 应用的问题
  • 设置项中增加快照保存提示的默认选项
  • 修复 Harmony OS 系统上的应用详情页显示问题
  • 修复了一些八哥

2.3.1

  • 标示未授权的权限
  • UI 改进
  • 问题修复

2.3.0

  • 不再支持 Android 6
  • 现在通过复用旧快照中的不变项来加速保存新的快照
  • 现在会在详情页标记出不是 DYN 类型的 ELF 文件
  • 不再在应用列表列举未完全卸载的应用包
  • 在 FOSS 渠道移除了 AppCenter 和 HarmonyOS 检测相关内容
  • 现在应用详情页会展示 CompileSdkVersion
  • 修复云端规则无法更新
  • 现在支持单应用对比,即可以在对比界面选择单个 APK 或一份快照两两组合,亦或是在外部选择两个 APK 文件分享至 LibChecker 进行对比
  • 优化繁体中文翻译
  • 支持检测 ReactiveX 框架
  • 应用列表页的菜单支持更多的操作,同时设置页的「显示系统应用」也移动至高级菜单内
  • 统计库引用的过程中加入了进度显示
  • 规则库更新至版本 27

2.2.11 注意:这是最后一个支持 Android 6 的版本,在一段时间内我们仍会为 Android 6 修复一些严重问题,但会以独立版本的形式提供,并且不会与主干共享代码

  • 调整 SplashScreen 动画
  • 新式的 M3 Switch
  • 现在使用徽标来表示快照中新增和已删除的应用
  • 规则库 V25
  • 响应 android.intent.action.APPLICATION_PREFERENCES
  • 修复 multiarch 应用没有出现在 ABI 统计中的问题
  • 修复特定情况下原生库匹配失败的问题
  • 在启动应用处提供备选的启动方式,这通常适用于没有桌面图标的应用
  • 现在可以长按组件快速调用 Blocker 禁用和解禁组件
  • 现在对于备份快照功能,如果数据库大于 100MB,则会触发全量备份,使用该备份文件恢复时会覆盖式恢复
  • 一些依赖更新和改动

2.2.10

  • Material 3
  • 修复禁用通知后保存快照出现的崩溃
  • 增加一种获取 Jetpack Compose 版本的方法
  • 更新依赖
  • 修复一些问题

2.2.9

  • 修复在不支持 Activity 嵌入的设备上启动崩溃的问题
  • 适配 Android 13 特性
  • 替换应用列表 Shortcut 为图表
  • 在快照页面显示当前应用数量

2.2.7

  • 对于相关链接是 GitHub 仓库的规则库,现在可以显示仓库的最近更新时间(注意:GitHub API 有访问频率限制,一小时内不可超过 60 次)
  • 在应用详情页显示组件的多进程信息,并可通过点击根据进程进行过滤
  • 支持了在应用详情页中通过 质感文件(me.zhanghai.android.files)导航至应用源目录
  • 在图表的 Target SDK 和 Min SDK 弹窗中显示 Android 的版本信息
  • 由于 Gitee 锁定了镜像仓库,我们移除了云端规则的 Gitee 选项
  • 规则库更新至版本 24
  • 修复了一些问题

2.2.6

  • 修复一些问题

2.2.5

  • 使应用详情页和 APK 分析页的功能更加统一
  • 现在支持检测是否使用了 Jetpack Compose
  • 增加了一种检测 Kotlin 插件版本的方法
  • 现在对于元数据,如果其值可能是一个 Android 资源 ID,它可以被转化为原始值
  • 修复了被禁用的应用无法查看 Splits APK
  • 优化了应用列表的刷新逻辑
  • 更新了依赖

2.2.4

  • 在 Tiramisu 上支持了带主题的应用图标
  • 启用了对话框样式的新增应用和已删除应用详情页面
  • 在 Android 12 以上启用了对话框下层模糊效果
  • 优化了图表的样式
  • 在图表中增加了对 minSdkVersion 版本的统计
  • 现在支持通过 URL Scheme 保存快照
  • 现在支持按「包」和「共享的 UID」进行统计
  • 更新了依赖
  • 修复了一些错误

2.2.3

  • 现在在应用列表页面会标识出被禁用的应用
  • 更新依赖
  • 优化实现

2.2.2

  • 更新依赖
  • 修复了一些问题
  • 现在标记库以 SDK 的方式提供。这意味着您可以轻松地将 LibChecker 中的规则库集成至您的应用。(详情参见:https://github.com/zhaobozhen/LibChecker-Rules-Bundle)

2.2.1

  • 支持了在详情页长按应用图标将其复制到剪贴板
  • 在 Android 12 以上的 Material 3 主题(Alpha)中启用动态颜色
  • 支持在详情页中搜索过滤组件
  • 更新俄语翻译
  • 修复了一些问题

2.2.0

  • 快照支持了记录应用包的体积
  • 现在如果应用包的体积发生变化则会触发快照对比
  • 统计页面支持了权限和元数据,并且加快了进入二级页面的加载速度
  • 现在快照的详情页面支持生成文字报告
  • 在应用的详情页增加了关于 android:extractNativeLibs 的提示项
  • 修复了一些问题

2.1.14

  • 支持了 Android 12 SplashScreen API
  • 缩短了初始化时间
  • 调整了详情页布局

2.1.13

  • 支持了 Android 12L 的 Activity Embeding API
  • 支持了通过分享的方式进行 apk 分析
  • 修复了八哥

2.1.12

  • 升级规则库至版本 18
  • 修复了一些问题

2.1.11

  • 现在快照可以记录元数据的变化了(在该版本前生成的快照不会记录元数据,因此对比会出现全部新增的问题)
  • 优化性能和修复 bugs

2.1.10

  • 修复 ABI 检测方法
  • 修复追踪的 app 不能在快照页面被移除
  • 新增了一些库规则和图标

2.1.9

  • 修复 bugs

2.1.8

  • 在应用详情页可以查看应用的权限和元数据信息
  • 修复 bugs
  • 修改了检测 ABI 的方式,该版本会强制重载应用列表

2.1.7

  • 修复 bug

2.1.6

  • 一个版本的迭代固然重要,但也要考虑历史的进程。在修复旧霸鸽的同时,往往也会带入新的霸鸽(

2.1.5

  • 修复问题

2.1.4

  • 支持显示 Overlay 应用的 target package

2.1.3

  • 小小修补

2.1.2

  • 修复了一些问题

2.1.1

  • 修复了带有静态库的详情页错乱问题
  • 修复了详情页导航栏问题
  • 修复了一处内存泄漏
  • 修复深色模式开关无效

2.1.0

  • 现在无原生库的标签展示 CPU 的 ABI
  • 修复了 APK 分析有时看不到组件的问题
  • 删除了快照 FAB,现在它在 Toolbar 的位置
  • 图表页面移至二级页面
  • 规则库现在使用 db 文件分发
  • 详情页现在展示应用的 sharedUserId
  • 详情页现在展示应用的全部 ABIs
  • 时间节点选择和管理 Dialog 现在会展示每张快照中最新的 5 个应用
  • 现在获取应用列表会尝试绕过一些 ROM 发明的限制读取应用列表权限
  • 更换了新的 Kotlin logo
  • 设置中可以切换深色模式
  • 支持识别 hap 应用以及查看其 Abilities

2.0.0

  • 重要 现在只支持 Android 6.0 以上的设备
  • 重要 由于支持了一些新的情况和调整了一些错误的方法,2.0 之前的快照内容都没有参考价值,建议更新后直接保存新的快照
  • 现在支持从云端仓库更新标记库
  • 现在启动一个前台服务来保存快照,保存快照时可以切换到后台了
  • 【集成】对于四大组件,现在可以长按与“大圣净化”交互(需要大圣净化 v3.8.47 以上)
  • 【集成】对于 Activity,现在可以长按与“Anywhere- 编辑器”交互(需要 Anywhere- 2.2.0 以上)
  • 支持了 disabled 组件,请尽量避免依赖 2.0 之前的快照,因为之前并没有记录 disabled 组件
  • 支持了 assets 中的原生库
  • 支持了 MultiArch
  • 图表支持了统计应用的 Target API 等级
  • 支持了搜索字段高亮
  • 修复了大量的错误和不合适的方法

1.10.0

  • 支持了 Dex 类检测(过滤了一些无意义的类)并加入了大量的 Dex 类标记库
  • 详情页点击应用图标可以进一步操作
  • 支持了 x86、x86_64 的架构检测
  • 快照 - 仪表盘 增加了 追踪 功能,可以在每次开启快照时强制对比变更
  • 优化和消灭臭虫

1.9.0

  • 现在快照页面顶端的仪表盘可以交互了,点击时间戳可以切换,点击仪表盘可以进入“相簿”进行更多的操作
  • 支持保存多个快照
  • 支持对比任意两张快照
  • 支持备份和恢复快照
  • 现在详情页会展示各个组件的数量
  • 现在快照页面会展示各个组件的变更数量
  • 一些优化

1.8.0

愉快的周末

  • 现在快照可以记录权限的变化了
  • 增加了 重载应用列表 设置项
  • 由于自动刷新列表机制常常不好好工作,我们开发了极为先进的 手动刷新 功能

1.7.6

  • 使用 Kotlin 1.4 编译
  • 重写了获取应用列表的逻辑,现在更加的稳定了
  • 优化了一些布局(横屏瀑布流、滑动隐藏底栏等)

1.7.5

  • 优化了每一处列表的布局渲染性能
  • 修正了原生库架构的名称,现在使用标准名称
  • 增加了一些标记库

1.7.4

  • 修复 应用列表查询不到冻结应用的问题
  • 修复 快照详情页闪退问题
  • 优化 内存泄漏问题

1.7.3

  • 现在快照详情页可以显示知名标记库
  • 修复 库引用统计有时为空的问题

1.7.2

  • 优化了一些体验

1.7.1

  • 暂时删除加载进度条来修复闪退问题

1.7.0 -** 如果闪退请先尝试清除数据 **

  • 增加了 Shortcuts
  • 详情页长按包名可快速复制
  • 现在详情页可以响应 android.intent.action.SHOW_APP_DETAIL
  • 增加了读取进度条
  • 优化了一些实现

1.6.1

  • 修复 Android L 上的严重闪退问题

1.6.0

  • 优化了快照详情页的显示效果,现在可以分类折叠,亦增加了标识来区分变更
  • 快照增加了 “移动” 变更类型

1.5.7

  • 修复了 Android 10 上频发的闪退问题
  • 优化了一些交互
  • 增加了几个标记库
Last update: 2023年8月14日 12:00
Contributors: +** 如果闪退请先尝试清除数据 **

  • 增加了 Shortcuts
  • 详情页长按包名可快速复制
  • 现在详情页可以响应 android.intent.action.SHOW_APP_DETAIL
  • 增加了读取进度条
  • 优化了一些实现

1.6.1

  • 修复 Android L 上的严重闪退问题

1.6.0

  • 优化了快照详情页的显示效果,现在可以分类折叠,亦增加了标识来区分变更
  • 快照增加了 “移动” 变更类型

1.5.7

  • 修复了 Android 10 上频发的闪退问题
  • 优化了一些交互
  • 增加了几个标记库
Last update: 2023年11月28日 05:43
Contributors: renovate[bot]
- + diff --git a/download/index.html b/download/index.html index 19741b7..ba75bb7 100644 --- a/download/index.html +++ b/download/index.html @@ -17,7 +17,7 @@ - + @@ -52,12 +52,12 @@ 下载 Github - (opens new window)

Download

Absinthe ... 2023-8-14 Less than 1 minute