x1ongzhu il y a 2 ans
Parent
commit
06334706ae
54 fichiers modifiés avec 387 ajouts et 392 suppressions
  1. 1 1
      android/app/capacitor.build.gradle
  2. BIN
      android/app/src/main/res/drawable-land-hdpi/splash.png
  3. BIN
      android/app/src/main/res/drawable-land-ldpi/splash.png
  4. BIN
      android/app/src/main/res/drawable-land-mdpi/splash.png
  5. BIN
      android/app/src/main/res/drawable-land-xhdpi/splash.png
  6. BIN
      android/app/src/main/res/drawable-land-xxhdpi/splash.png
  7. BIN
      android/app/src/main/res/drawable-land-xxxhdpi/splash.png
  8. BIN
      android/app/src/main/res/drawable-port-hdpi/splash.png
  9. BIN
      android/app/src/main/res/drawable-port-ldpi/splash.png
  10. BIN
      android/app/src/main/res/drawable-port-mdpi/splash.png
  11. BIN
      android/app/src/main/res/drawable-port-xhdpi/splash.png
  12. BIN
      android/app/src/main/res/drawable-port-xxhdpi/splash.png
  13. BIN
      android/app/src/main/res/drawable-port-xxxhdpi/splash.png
  14. BIN
      android/app/src/main/res/drawable/splash.png
  15. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  16. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
  17. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
  18. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  19. BIN
      android/app/src/main/res/mipmap-ldpi/ic_launcher.png
  20. BIN
      android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png
  21. BIN
      android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png
  22. BIN
      android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png
  23. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  24. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
  25. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
  26. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  27. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  28. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
  29. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
  30. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  31. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  32. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
  33. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
  34. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  35. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  36. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
  37. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
  38. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  39. 3 3
      android/capacitor.settings.gradle
  40. 3 0
      capacitor.config.ts
  41. 0 104
      codePush.mjs
  42. 0 1
      index.html
  43. 3 2
      package.json
  44. 0 1
      public/meta.js
  45. BIN
      resources/icon-background.png
  46. BIN
      resources/icon-foreground.png
  47. BIN
      resources/icon-only.png
  48. BIN
      resources/splash.png
  49. BIN
      resources/splash_dark.png
  50. 3 45
      src/main.js
  51. 33 0
      src/plugins/updater.js
  52. 1 0
      src/plugins/updater_meta.json
  53. 51 0
      vite.config.js
  54. 289 235
      yarn.lock

+ 1 - 1
android/app/capacitor.build.gradle

@@ -26,8 +26,8 @@ dependencies {
     implementation project(':capacitor-share')
     implementation project(':capacitor-splash-screen')
     implementation project(':capacitor-status-bar')
+    implementation project(':capgo-capacitor-updater')
     implementation project(':appsflyer-capacitor-plugin')
-    implementation project(':capacitor-codepush')
     implementation project(':capacitor-plugin-safe-area')
 
 }

BIN
android/app/src/main/res/drawable-land-hdpi/splash.png


BIN
android/app/src/main/res/drawable-land-ldpi/splash.png


BIN
android/app/src/main/res/drawable-land-mdpi/splash.png


BIN
android/app/src/main/res/drawable-land-xhdpi/splash.png


BIN
android/app/src/main/res/drawable-land-xxhdpi/splash.png


BIN
android/app/src/main/res/drawable-land-xxxhdpi/splash.png


BIN
android/app/src/main/res/drawable-port-hdpi/splash.png


BIN
android/app/src/main/res/drawable-port-ldpi/splash.png


BIN
android/app/src/main/res/drawable-port-mdpi/splash.png


BIN
android/app/src/main/res/drawable-port-xhdpi/splash.png


BIN
android/app/src/main/res/drawable-port-xxhdpi/splash.png


BIN
android/app/src/main/res/drawable-port-xxxhdpi/splash.png


BIN
android/app/src/main/res/drawable/splash.png


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-ldpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png


BIN
android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png


+ 3 - 3
android/capacitor.settings.gradle

@@ -53,11 +53,11 @@ project(':capacitor-splash-screen').projectDir = new File('../node_modules/@capa
 include ':capacitor-status-bar'
 project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacitor/status-bar/android')
 
+include ':capgo-capacitor-updater'
+project(':capgo-capacitor-updater').projectDir = new File('../node_modules/@capgo/capacitor-updater/android')
+
 include ':appsflyer-capacitor-plugin'
 project(':appsflyer-capacitor-plugin').projectDir = new File('../node_modules/appsflyer-capacitor-plugin/android')
 
-include ':capacitor-codepush'
-project(':capacitor-codepush').projectDir = new File('../node_modules/capacitor-codepush/android')
-
 include ':capacitor-plugin-safe-area'
 project(':capacitor-plugin-safe-area').projectDir = new File('../node_modules/capacitor-plugin-safe-area/android')

+ 3 - 0
capacitor.config.ts

@@ -31,6 +31,9 @@ const baseConfig: CapacitorConfig = {
             IOS_DEPLOY_KEY: 'eAdEIJJkMhuRwBKVpDXvbay6Ay0yEJAbzi0Ur',
             ANDROID_DEPLOY_KEY: 'ZrEsHcngd89oYtHZYQxLRUSMJ8trafzoNUVDN',
             SERVER_URL: 'https://codepush.appcenter.ms/'
+        },
+        CapacitorUpdater: {
+            autoUpdate: false
         }
     },
     server: {

+ 0 - 104
codePush.mjs

@@ -1,104 +0,0 @@
-#!/usr/bin/env node
-import CodePush from 'code-push'
-import { build } from 'vite'
-import { MobileProject } from '@trapezedev/project'
-import fs from 'fs'
-import path from 'path'
-import inquirer from 'inquirer'
-import { sync } from '@capacitor/cli/dist/tasks/sync.js'
-import { loadConfig } from '@capacitor/cli/dist/config.js'
-import ProgressBar from 'progress'
-
-const token = '064853a8cdbfb94ed9b62ce30da17f162a1444a0'
-const androidName = 'ASNFTNGFHP-Android'
-const iosName = 'ASNFTNGFHP-iOS'
-
-inquirer
-    .prompt([
-        {
-            name: 'type',
-            type: 'list',
-            message: 'Deployment Type',
-            choices: ['Development', 'Release'],
-            default: 'Development'
-        },
-        {
-            name: 'platform',
-            type: 'checkbox',
-            message: 'Platform',
-            choices: ['Android', 'iOS'],
-            default: ['Android']
-        },
-        { name: 'build', type: 'list', message: 'Build Package', choices: ['YES', 'NO'], default: 'YES' }
-    ])
-    .then(async answers => {
-        console.log(answers)
-        let mode = 'app'
-        if (answers.type === 'Development') {
-            process.env.NODE_ENV = 'dev'
-            mode = 'test'
-        }
-        const capacitorConfig = await loadConfig()
-        const codePush = new CodePush(token)
-        const projectConfig = {
-            ios: {
-                path: 'ios/App'
-            },
-            android: {
-                path: 'android'
-            }
-        }
-        const project = new MobileProject(process.cwd(), projectConfig)
-        await project.load()
-        // if (answers.platform.includes('Android')) await project.android.incrementVersionCode()
-        // if (answers.platform.includes('iOS')) await project.ios.incrementBuild('App')
-        project.commit()
-
-        let meta = String(fs.readFileSync(path.resolve(process.cwd(), 'public', 'meta.js')))
-        if (answers.build === 'YES') {
-            meta = meta.replace(
-                /(window.www_version = )\d+/,
-                `$1${parseInt(/window.www_version = (\d+)/.exec(meta)[1]) + 1}`
-            )
-            fs.writeFileSync(path.resolve(process.cwd(), 'public', 'meta.js'), meta)
-            await build({
-                configFile: 'vite.config.js',
-                mode
-            })
-        }
-        if (answers.platform.includes('Android')) {
-            var bar1 = new ProgressBar('Upload Android Bundle [:bar] :percent', { total: 100 })
-            await sync(capacitorConfig, 'android', null, false)
-            await codePush
-                .release(androidName, answers.type, 'android/app/src/main/assets/public/', '~1.0.0', {}, percent => {
-                    bar1.tick(percent)
-                })
-                .then(res => {
-                    console.log('Upload Android Bundle Success', res)
-                })
-        }
-        if (answers.platform.includes('iOS')) {
-            var bar2 = new ProgressBar('Upload iOS Bundle [:bar] :percent', { total: 100 })
-            await sync(capacitorConfig, 'ios', null, false)
-            await codePush
-                .release(androidName, answers.type, 'ios/App/App/public/', '~1.0.0', {}, percent => {
-                    bar2.tick(percent)
-                })
-                .then(res => {
-                    console.log('Upload iOS Bundle Success', res)
-                })
-        }
-        fs.readdirSync(process.cwd()).forEach(file => {
-            if (/^\w+\.zip$/.test(file)) {
-                fs.unlinkSync(path.resolve(process.cwd(), file))
-            }
-        })
-    })
-    .catch(error => {
-        console.log(error)
-        if (error.isTtyError) {
-            // Prompt couldn't be rendered in the current environment
-        } else {
-            // Something else went wrong
-        }
-    })

+ 0 - 1
index.html

@@ -22,7 +22,6 @@
         onload="if(media!='all')media='all'">
     <!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans"> -->
     <title>走馬短劇</title>
-    <script src="meta.js"></script>
 </head>
 
 <body>

+ 3 - 2
package.json

@@ -31,6 +31,7 @@
     "@capacitor/share": "^5.0.6",
     "@capacitor/splash-screen": "^5.0.6",
     "@capacitor/status-bar": "^5.0.6",
+    "@capgo/capacitor-updater": "^5.3.38",
     "@chenfengyuan/vue-qrcode": "2",
     "@ionic/core": "7",
     "@ionic/vue": "^7.6.0",
@@ -40,7 +41,6 @@
     "@vueuse/core": "^10.7.0",
     "appsflyer-capacitor-plugin": "^6.9.2",
     "axios": "^1.2.0",
-    "capacitor-codepush": "https://github.com/x1ongzhu/capacitor-codepush.git",
     "capacitor-plugin-safe-area": "^2.0.6",
     "date-fns": "^2.29.3",
     "date-fns-tz": "^2.0.0",
@@ -80,8 +80,9 @@
     "@vitejs/plugin-vue": "^4.0.0",
     "@vue/eslint-config-prettier": "^8.0.0",
     "@vue/eslint-config-typescript": "^12.0.0",
+    "ali-oss": "^6.18.1",
+    "archiver": "^6.0.1",
     "autoprefixer": "^10.4.16",
-    "code-push": "^4.1.0",
     "eslint": "^8.22.0",
     "eslint-plugin-vue": "^9.3.0",
     "inquirer": "^9.1.4",

+ 0 - 1
public/meta.js

@@ -1 +0,0 @@
-window.www_version = 1128

BIN
resources/icon-background.png


BIN
resources/icon-foreground.png


BIN
resources/icon-only.png


BIN
resources/splash.png


BIN
resources/splash_dark.png


+ 3 - 45
src/main.js

@@ -20,13 +20,12 @@ import { Locale as VantLocale, Lazyload } from 'vant'
 import vantEnUS from 'vant/es/locale/lang/en-US'
 import { useStorage } from '@vueuse/core'
 import { init as initEruda } from '@/utils/console'
-import { codePush, InstallMode } from 'capacitor-codepush'
-import { SyncStatus } from 'capacitor-codepush/dist/esm/syncStatus'
 import { Network } from '@capacitor/network'
 import { SafeArea } from 'capacitor-plugin-safe-area'
 import qs from 'qs'
 import { App as AppPlugin } from '@capacitor/app'
 import { emitter } from '@/utils/eventBus'
+import { checkUpdate } from '@/plugins/updater'
 
 import 'normalize.css/normalize.css'
 
@@ -67,12 +66,11 @@ app.use(IonicVue)
 app.use(router)
 app.use(createPinia())
 app.use(http)
+VantLocale.use('zh-TW', zhTW)
 app.use(Vant)
 app.use(toast)
 app.mixin(common)
-const packageSynced = ref(false)
-app.provide('packageSynced', packageSynced)
-VantLocale.use('zh-TW', zhTW)
+
 app.use(Lazyload)
 
 // ionic components
@@ -91,44 +89,6 @@ router.isReady().then(() => {
 //     setDefaultOptions({ locale: enUS })
 // }
 const firstRun = useStorage('firstRun', true)
-const checkUpdate = async () => {
-    // if (!location.origin.includes('localhost')) {
-    //     packageSynced.value = true
-    //     return
-    // }
-    // await codePush.notifyApplicationReady()
-    // try {
-    //     console.log('codePush -> checking for update')
-    //     const update = await new Promise((resolve, reject) => {
-    //         codePush.checkForUpdate(
-    //             p => {
-    //                 resolve(p)
-    //             },
-    //             err => {
-    //                 reject(err)
-    //             }
-    //         )
-    //     })
-    //     if (!update) {
-    //         console.log('codePush -> no update available')
-    //     } else {
-    //         console.log('codePush -> there is an update, start download', update)
-    //         const downloadedPackage = await update.download(downloadProgress => {
-    //             console.log(`Downloading ${downloadProgress.receivedBytes} of ${downloadProgress.totalBytes} bytes.`)
-    //         })
-    //         console.log('codePush -> package downloaded at: ' + downloadedPackage.localPath)
-    //         await downloadedPackage.install({
-    //             installMode: InstallMode.IMMEDIATE,
-    //             minimumBackgroundDuration: 120,
-    //             mandatoryInstallMode: InstallMode.IMMEDIATE
-    //         })
-    //         console.log('codePush -> install update success')
-    //     }
-    // } catch (e) {
-    //     console.log('codePush -> an error occurred while checking for updates', e)
-    // }
-    // packageSynced.value = true
-}
 const initAF = async () => {
     const appInfo = await AppPlugin.getInfo()
     if (/\.dev$/.test(appInfo.id)) {
@@ -248,8 +208,6 @@ if (Capacitor.isNativePlatform()) {
             checkUpdate()
         }
     })
-} else {
-    packageSynced.value = true
 }
 
 if (useStorage('showConsole', 0).value > new Date().getTime()) {

+ 33 - 0
src/plugins/updater.js

@@ -0,0 +1,33 @@
+import meta from './updater_meta.json'
+import { CapacitorUpdater } from '@capgo/capacitor-updater'
+import { Capacitor } from '@capacitor/core'
+import axios from 'axios'
+if (Capacitor.isNativePlatform()) {
+    CapacitorUpdater.notifyAppReady()
+}
+window.packageVersion = meta.version
+console.log('meta', meta)
+
+CapacitorUpdater.addListener('download', ({ percent }) => {
+    console.log('download progress:', percent)
+})
+CapacitorUpdater.addListener('downloadFailed', e => {
+    console.log('downloadFailed', e)
+})
+
+const checkUpdate = async (showPrompt = false) => {
+    const { data: remoteMeta } = await axios.get('https://zm-shorts.oss-cn-hangzhou.aliyuncs.com/packages/meta.json', {
+        withCredentials: false
+    })
+    console.log('remoteMeta', remoteMeta)
+    if (remoteMeta.version > meta.version) {
+        const version = await CapacitorUpdater.download({
+            url: remoteMeta.url,
+            version: remoteMeta.version + ''
+        })
+        console.log('version', version)
+        CapacitorUpdater.set(version)
+    }
+}
+
+export { checkUpdate }

+ 1 - 0
src/plugins/updater_meta.json

@@ -0,0 +1 @@
+{"version":35}

+ 51 - 0
vite.config.js

@@ -6,11 +6,62 @@ import { VitePWA } from 'vite-plugin-pwa'
 import legacy from '@vitejs/plugin-legacy'
 import tailwindcss from 'tailwindcss'
 import autoprefixer from 'autoprefixer'
+import archiver from 'archiver'
+import fs from 'fs'
+import OSS from 'ali-oss'
+import { format } from 'date-fns'
+import { Buffer } from 'node:buffer'
 
 // https://vitejs.dev/config/
 export default defineConfig(({ command, mode }) => {
     process.env = { ...process.env, ...loadEnv(mode, process.cwd()) }
     const plugins = [
+        {
+            name: 'build-index',
+            async buildStart(options) {
+                if (mode !== 'app') return
+                const meta = JSON.parse(fs.readFileSync('./src/plugins/updater_meta.json'))
+                meta.version++
+                fs.writeFileSync('./src/plugins/updater_meta.json', JSON.stringify(meta))
+            },
+            async closeBundle(options) {
+                if (mode !== 'app') return
+                const meta = JSON.parse(fs.readFileSync('./src/plugins/updater_meta.json'))
+
+                const sourceDir = 'dist'
+                const outputFilePath = 'dist.zip'
+
+                await new Promise((resolve, reject) => {
+                    const output = fs.createWriteStream(outputFilePath)
+                    output.on('close', function () {
+                        resolve()
+                    })
+                    const archive = archiver('zip')
+                    archive.pipe(output)
+                    archive.directory(sourceDir, false)
+                    archive.finalize()
+                }).catch(e => {
+                    console.log(e)
+                })
+
+                let client = new OSS({
+                    accessKeyId: 'PXzJyah5rZfWHIIH',
+                    accessKeySecret: 'e1MS6j0wypXJrw8CM0hObZu8qKbfah',
+                    region: 'oss-cn-hangzhou',
+                    bucket: 'zm-shorts'
+                })
+                let { url } = await client.put(`packages/${format(new Date(), 'yyyyMMddHHmmss')}.zip`, outputFilePath, {
+                    headers: {
+                        'x-oss-object-acl': 'public-read'
+                    }
+                })
+                url = url.replace('http://', 'https://')
+                console.log('package uploaded: %s', url.replace('http://', 'https://'))
+                await client.put('packages/meta.json', Buffer.from(JSON.stringify({ url, version: meta.version })), {
+                    headers: { 'x-oss-object-acl': 'public-read' }
+                })
+            }
+        },
         vue(),
         viteImagemin({
             gifsicle: {

Fichier diff supprimé car celui-ci est trop grand
+ 289 - 235
yarn.lock


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff