{{ $t('step1.leading') }}
13 |-
14 |
15 |
16 |
17 |
18 |
19 |
68 |
69 |
├── src ├── plugins │ └── element.js ├── i18n │ ├── index.js │ ├── zh_cn.js │ └── en.js ├── main.js └── App.vue ├── babel.config.js ├── .gitignore ├── README.md ├── public └── index.html ├── LICENSE └── package.json /src/plugins/element.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import ElementUI from 'element-ui'; 3 | 4 | Vue.use(ElementUI); 5 | -------------------------------------------------------------------------------- /src/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en'; 2 | import zh_cn from './zh_cn'; 3 | 4 | export default { 5 | 'en': en, 6 | 'zh-CN': zh_cn, 7 | }; 8 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "presets": [ 3 | "@vue/cli-plugin-babel/preset" 4 | ], 5 | "plugins": [ 6 | [ 7 | "component", 8 | { 9 | "libraryName": "element-ui", 10 | "styleLibraryName": "theme-chalk" 11 | } 12 | ] 13 | ] 14 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import VueI18n from 'vue-i18n'; 3 | import App from './App.vue'; 4 | import './plugins/element.js'; 5 | import messages from './i18n'; 6 | 7 | Vue.config.productionTip = false; 8 | 9 | Vue.use(VueI18n); 10 | 11 | const i18n = new VueI18n({ 12 | locale: navigator.language, 13 | fallbackLocale: 'en', 14 | messages, 15 | }); 16 | 17 | new Vue({ 18 | i18n, 19 | render: h => h(App), 20 | }).$mount('#app'); 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [FRP Unlock](https://frp.xingrz.me) 2 | =========== 3 | 4 | [![license][license-img]][license-url] [![issues][issues-img]][issues-url] [![commits][commits-img]][commits-url] 5 | 6 | 纯 Web 端的 FRP 解锁工具。 7 | 8 | ## 相关技术参考 9 | 10 | * [FRP 分区格式](https://github.com/aosp-mirror/platform_frameworks_base/blob/android10-release/services/core/java/com/android/server/PersistentDataBlockService.java#L69) 11 | * [FileReader API](https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader) 12 | * [SubtleCrypto API](https://developer.mozilla.org/zh-CN/docs/Web/API/SubtleCrypto) 13 | 14 | [license-img]: https://img.shields.io/github/license/xingrz/frp?style=flat-square 15 | [license-url]: LICENSE 16 | [issues-img]: https://img.shields.io/github/issues/xingrz/frp?style=flat-square 17 | [issues-url]: https://github.com/xingrz/frp/issues 18 | [commits-img]: https://img.shields.io/github/last-commit/xingrz/frp?style=flat-square 19 | [commits-url]: https://github.com/xingrz/frp/commits/master 20 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |{{ $t('step1.leading') }}
13 |
68 |
69 |