Bladeren bron

Merge remote-tracking branch 'origin/dev' into dev

Vanessa 7 maanden geleden
bovenliggende
commit
5ff5f36af7
3 gewijzigde bestanden met toevoegingen van 136 en 0 verwijderingen
  1. 8 0
      kernel/harmony/build-win.sh
  2. 8 0
      kernel/harmony/build.sh
  3. 120 0
      kernel/harmony/kernel.go

+ 8 - 0
kernel/harmony/build-win.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+export GOPROXY=https://goproxy.io
+export CGO_ENABLED=1
+export GOOS=android
+export GOARCH=amd64
+export CC=/mnt/f/ohos-sdk-windows_linux-public/linux/native/llvm/bin/x86_64-unknown-linux-ohos-clang
+go build --tags fts5 -ldflags "-s -w" -buildmode=c-shared -v -o libkernel.so .

+ 8 - 0
kernel/harmony/build.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+export GOPROXY=https://goproxy.io
+export CGO_ENABLED=1
+export GOOS=android
+export GOARCH=arm64
+export CC=/mnt/f/ohos-sdk-windows_linux-public/linux/native/llvm/bin/aarch64-unknown-linux-ohos-clang
+go build --tags fts5 -ldflags "-s -w" -buildmode=c-shared -v -o libkernel.so .

+ 120 - 0
kernel/harmony/kernel.go

@@ -0,0 +1,120 @@
+// SiYuan - Refactor your thinking
+// Copyright (c) 2020-present, b3log.org
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+package main
+
+import (
+	"C"
+	"fmt"
+	"os"
+	"path/filepath"
+	"strings"
+	"time"
+
+	"github.com/siyuan-note/filelock"
+	"github.com/siyuan-note/logging"
+	"github.com/siyuan-note/siyuan/kernel/cache"
+	"github.com/siyuan-note/siyuan/kernel/job"
+	"github.com/siyuan-note/siyuan/kernel/model"
+	"github.com/siyuan-note/siyuan/kernel/server"
+	"github.com/siyuan-note/siyuan/kernel/sql"
+	"github.com/siyuan-note/siyuan/kernel/util"
+)
+
+func StartKernelFast(container, appDir, workspaceBaseDir, localIPs string) {
+	go server.Serve(true)
+}
+
+func StartKernel(container, appDir, workspaceBaseDir, timezoneID, localIPs, lang, osVer string) {
+	SetTimezone(container, appDir, timezoneID)
+	util.Mode = "prod"
+	util.MobileOSVer = osVer
+	util.LocalIPs = strings.Split(localIPs, ",")
+	util.BootMobile(container, appDir, workspaceBaseDir, lang)
+
+	model.InitConf()
+	go server.Serve(false)
+	go func() {
+		model.InitAppearance()
+		sql.InitDatabase(false)
+		sql.InitHistoryDatabase(false)
+		sql.InitAssetContentDatabase(false)
+		sql.SetCaseSensitive(model.Conf.Search.CaseSensitive)
+		sql.SetIndexAssetPath(model.Conf.Search.IndexAssetPath)
+
+		model.BootSyncData()
+		model.InitBoxes()
+		model.LoadFlashcards()
+		util.LoadAssetsTexts()
+
+		util.SetBooted()
+		util.PushClearAllMsg()
+
+		job.StartCron()
+		go model.AutoGenerateFileHistory()
+		go cache.LoadAssets()
+	}()
+}
+
+func Language(num int) string {
+	return model.Conf.Language(num)
+}
+
+func ShowMsg(msg string, timeout int) {
+	util.PushMsg(msg, timeout)
+}
+
+func IsHttpServing() bool {
+	return util.HttpServing
+}
+
+func SetHttpServerPort(port int) {
+	filelock.AndroidServerPort = port
+}
+
+func GetCurrentWorkspacePath() string {
+	return util.WorkspaceDir
+}
+
+func GetAssetAbsPath(asset string) (ret string) {
+	ret, err := model.GetAssetAbsPath(asset)
+	if err != nil {
+		logging.LogErrorf("get asset [%s] abs path failed: %s", asset, err)
+		ret = asset
+	}
+	return
+}
+
+func GetMimeTypeByExt(ext string) string {
+	return util.GetMimeTypeByExt(ext)
+}
+
+func SetTimezone(container, appDir, timezoneID string) {
+	if "ios" == container {
+		os.Setenv("ZONEINFO", filepath.Join(appDir, "app", "zoneinfo.zip"))
+	}
+	z, err := time.LoadLocation(strings.TrimSpace(timezoneID))
+	if err != nil {
+		fmt.Printf("load location failed: %s\n", err)
+		time.Local = time.FixedZone("CST", 8*3600)
+		return
+	}
+	time.Local = z
+}
+
+func DisableFeature(feature string) {
+	util.DisableFeature(feature)
+}