feat: replace with native Android empty-shell UI (Main/Settings + stub ServerClient/WatchBridge)
This commit is contained in:
@@ -1,7 +0,0 @@
|
|||||||
/.nyc_output
|
|
||||||
/coverage
|
|
||||||
/node_modules
|
|
||||||
/tests/fixtures
|
|
||||||
/sign
|
|
||||||
/dist
|
|
||||||
/build
|
|
||||||
+9
-15
@@ -1,16 +1,10 @@
|
|||||||
node_modules
|
.gradle/
|
||||||
build
|
build/
|
||||||
dist
|
local.properties
|
||||||
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
||||||
|
|
||||||
*.log
|
|
||||||
*.iml
|
|
||||||
.idea/
|
.idea/
|
||||||
.vscode/
|
*.iml
|
||||||
|
.DS_Store
|
||||||
.nyc_output
|
*.log
|
||||||
/coverage
|
captures/
|
||||||
|
.externalNativeBuild/
|
||||||
/logs
|
.cxx/
|
||||||
|
|||||||
@@ -1,13 +1,26 @@
|
|||||||
## 快速上手
|
# DSHWatchPhone(手机端 / 原生 Android)
|
||||||
|
|
||||||
您可通过运行 `npm run start` 后,使用快应用引擎扫描二维码快速开发。
|
DSHWatch 手机客户端空壳。后续接入:
|
||||||
|
|
||||||
## 了解更多
|
- DSHWatch_Server(或 dsh-watch 插件直连)WebSocket。
|
||||||
|
- 小米穿戴 SDK(Wearable / MessageApi)作为手表 BLE 互联对端。
|
||||||
|
- 作为手表网关,把服务器状态/事件转发给 DSHWatch,并把手表指令转发回服务器。
|
||||||
|
|
||||||
你可以通过我们的[官方文档](https://doc.quickapp.cn/)熟悉和了解快应用。
|
## 当前为 UI 空壳
|
||||||
|
|
||||||
可以通过我们[快应用官方示例项目](https://github.com/quickappcn/sample),快速掌握
|
- MainActivity:状态页(刷新 / 设置入口)。
|
||||||
api 和组件的用法
|
- SettingsActivity:服务器地址 / userId / token 表单。
|
||||||
|
- WatchBridge.java / ServerClient.java:占位接口,未接入 SDK。
|
||||||
|
|
||||||
对我们有什么意见,建议或者 bug,可以在这里反馈
|
## 构建
|
||||||
https://github.com/quickappcn/issues
|
|
||||||
|
用 Android Studio 打开本目录(Gradle 会拉取 AGP + AndroidX)。
|
||||||
|
|
||||||
|
- compileSdk 34 / minSdk 26 / targetSdk 34
|
||||||
|
- Java 17
|
||||||
|
|
||||||
|
## 后续接入小米穿戴 SDK
|
||||||
|
|
||||||
|
- 从官方 demo(open-vela packages_apps / interconnect_image_demo 的 android_program)拿 libs/。
|
||||||
|
- 包名与签名需与 DSHWatch(手表 rpk)一致:com.dshwatch.app。
|
||||||
|
- 在 ServerClient 里接 WebSocket,在 WatchBridge 里接 MessageApi。
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
plugins {
|
||||||
|
id 'com.android.application'
|
||||||
|
}
|
||||||
|
android {
|
||||||
|
namespace 'com.dshwatch.app'
|
||||||
|
compileSdk 34
|
||||||
|
defaultConfig {
|
||||||
|
applicationId "com.dshwatch.app"
|
||||||
|
minSdk 26
|
||||||
|
targetSdk 34
|
||||||
|
versionCode 1
|
||||||
|
versionName "0.1.0"
|
||||||
|
}
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
minifyEnabled false
|
||||||
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||||
|
implementation 'com.google.android.material:material:1.9.0'
|
||||||
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||||
|
}
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
# Add project specific ProGuard rules here.
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<application
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:theme="@style/Theme.DSHWatch">
|
||||||
|
<activity
|
||||||
|
android:name=".MainActivity"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<activity
|
||||||
|
android:name=".SettingsActivity"
|
||||||
|
android:exported="false" />
|
||||||
|
</application>
|
||||||
|
</manifest>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.dshwatch.app;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
|
TextView status = findViewById(R.id.status_text);
|
||||||
|
status.setText(getString(R.string.status_disconnected));
|
||||||
|
|
||||||
|
Button settings = findViewById(R.id.btn_settings);
|
||||||
|
settings.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Button refresh = findViewById(R.id.btn_refresh);
|
||||||
|
refresh.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// 空壳:后续调用 ServerClient 拉取 Harness 状态
|
||||||
|
status.setText(R.string.status_disconnected);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.dshwatch.app;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Harness 服务器客户端(空壳)。
|
||||||
|
* 后续接入 WebSocket(OkHttp ws),通过 DSHWatch_Server 或直连 dsh-watch 插件,
|
||||||
|
* 实现 harness.status / session.prompt / session.list 等 RPC。
|
||||||
|
*/
|
||||||
|
public class ServerClient {
|
||||||
|
private String serverUrl;
|
||||||
|
private String userId;
|
||||||
|
private String token;
|
||||||
|
|
||||||
|
public ServerClient(String serverUrl, String userId, String token) {
|
||||||
|
this.serverUrl = serverUrl;
|
||||||
|
this.userId = userId;
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect() {
|
||||||
|
// 空壳:TODO 实现 WebSocket 握手 + 请求/响应 + 事件回调
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendRequest(String method, String paramsJson, Callback cb) {
|
||||||
|
// 空壳:TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Callback {
|
||||||
|
void onResult(String json);
|
||||||
|
void onError(String message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.dshwatch.app;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
public class SettingsActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private EditText serverUrl;
|
||||||
|
private EditText userId;
|
||||||
|
private EditText token;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_settings);
|
||||||
|
|
||||||
|
serverUrl = findViewById(R.id.input_server);
|
||||||
|
userId = findViewById(R.id.input_user);
|
||||||
|
token = findViewById(R.id.input_token);
|
||||||
|
|
||||||
|
Button save = findViewById(R.id.btn_save);
|
||||||
|
save.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// 空壳:后续持久化到 SharedPreferences / 安全存储
|
||||||
|
Toast.makeText(SettingsActivity.this, "保存(空壳): " + serverUrl.getText(), Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.dshwatch.app;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手表 BLE 互联桥(空壳)。
|
||||||
|
* 后续接入小米穿戴 SDK:Wearable / MessageApi / sendMessage / addListener,
|
||||||
|
* 用于把手表(DSHWatch) 与手机端双向转发。
|
||||||
|
*/
|
||||||
|
public interface WatchBridge {
|
||||||
|
/** 连接手表(小米穿戴服务) */
|
||||||
|
void connect();
|
||||||
|
/** 发送消息给手表 */
|
||||||
|
void sendToWatch(String json);
|
||||||
|
/** 接收来自手表的消息 */
|
||||||
|
String onWatchMessage(String json);
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="24dp"
|
||||||
|
android:background="@color/deep_blue">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/app_name"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="24sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/status_text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="24dp"
|
||||||
|
android:text="@string/status_disconnected"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_refresh"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:text="@string/btn_refresh" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_settings"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:text="@string/btn_settings" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="32dp"
|
||||||
|
android:text="@string/shell_hint"
|
||||||
|
android:textColor="@color/light_blue"
|
||||||
|
android:textSize="13sp" />
|
||||||
|
</LinearLayout>
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="24dp"
|
||||||
|
android:background="@color/deep_blue">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/settings_title"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="22sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:text="@string/label_server"
|
||||||
|
android:textColor="@color/light_blue" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/input_server"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_server"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textColorHint="@color/light_blue" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:text="@string/label_user"
|
||||||
|
android:textColor="@color/light_blue" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/input_user"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_user"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textColorHint="@color/light_blue" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:text="@string/label_token"
|
||||||
|
android:textColor="@color/light_blue" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/input_token"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_token"
|
||||||
|
android:inputType="textPassword"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textColorHint="@color/light_blue" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_save"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="24dp"
|
||||||
|
android:text="@string/btn_save" />
|
||||||
|
</LinearLayout>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="deep_blue">#0B1220</color>
|
||||||
|
<color name="white">#FFFFFF</color>
|
||||||
|
<color name="light_blue">#B7C8E8</color>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="app_name">DSHWatch Phone</string>
|
||||||
|
<string name="status_disconnected">未连接(空壳)</string>
|
||||||
|
<string name="btn_refresh">刷新状态</string>
|
||||||
|
<string name="btn_settings">设置</string>
|
||||||
|
<string name="settings_title">设置</string>
|
||||||
|
<string name="label_server">服务器地址</string>
|
||||||
|
<string name="hint_server">ws://host:port</string>
|
||||||
|
<string name="label_user">用户ID</string>
|
||||||
|
<string name="hint_user">userId</string>
|
||||||
|
<string name="label_token">Token</string>
|
||||||
|
<string name="hint_token">token</string>
|
||||||
|
<string name="btn_save">保存(空壳)</string>
|
||||||
|
<string name="shell_hint">空壳 UI:后续接入 DSHWatch_Server + 小米穿戴 SDK(BLE 网关)。</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<style name="Theme.DSHWatch" parent="Theme.MaterialComponents.DayNight.NoActionBar">
|
||||||
|
<item name="colorPrimary">#33B4FF</item>
|
||||||
|
<item name="colorPrimaryDark">#0B1220</item>
|
||||||
|
<item name="colorAccent">#33B4FF</item>
|
||||||
|
<item name="android:windowBackground">@color/deep_blue</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
plugins {
|
||||||
|
id 'com.android.application' version '8.5.2' apply false
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
|
||||||
|
android.useAndroidX=true
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "DSHWatchPhone",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.10"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"start": "aiot start --watch",
|
|
||||||
"build": "aiot build",
|
|
||||||
"release": "aiot release",
|
|
||||||
"lint": "eslint --format codeframe --fix --ext .ux,.js src/"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@aiot-toolkit/jsc": "^1.0.3",
|
|
||||||
"aiot-toolkit": "^2.0.5"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencyResolutionManagement {
|
||||||
|
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rootProject.name = "DSHWatchPhone"
|
||||||
|
include ':app'
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<template>
|
|
||||||
<!-- template里只能有一个根节点 -->
|
|
||||||
<div class="demo-page">
|
|
||||||
<text>{{text}}</text>
|
|
||||||
<text>{{des}}</text>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
private: {
|
|
||||||
text: '欢迎使用快应用卡片',
|
|
||||||
des: '卡片是一种轻量级的快应用,快应用卡片使快应用能够在其他app和系统里提供可扩展的app功能'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.demo-page {
|
|
||||||
flex: 1;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB |
@@ -1,48 +0,0 @@
|
|||||||
<template>
|
|
||||||
<!-- template里只能有一个根节点 -->
|
|
||||||
<div class="demo-page">
|
|
||||||
<text class="title">欢迎打开{{title}}</text>
|
|
||||||
<!-- 点击跳转详情页 -->
|
|
||||||
<input class="btn" type="button" value="跳转到详情页" onclick="routeDetail" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import router from '@system.router'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// 页面级组件的数据模型,影响传入数据的覆盖机制:private内定义的属性不允许被覆盖
|
|
||||||
private: {
|
|
||||||
title: '示例页面'
|
|
||||||
},
|
|
||||||
routeDetail () {
|
|
||||||
// 跳转到应用内的某个页面,router用法详见:文档->接口->页面路由
|
|
||||||
router.push ({
|
|
||||||
uri: '/DemoDetail'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.demo-page {
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 40px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
width: 550px;
|
|
||||||
height: 86px;
|
|
||||||
margin-top: 75px;
|
|
||||||
border-radius: 43px;
|
|
||||||
background-color: #09ba07;
|
|
||||||
font-size: 30px;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
<template>
|
|
||||||
<!-- template里只能有一个根节点 -->
|
|
||||||
<div class="demo-page">
|
|
||||||
<text class="title">{{text}}</text>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
private: {
|
|
||||||
text: '欢迎打开详情页'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.demo-page {
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 40px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
<script>
|
|
||||||
/**
|
|
||||||
* @file 应用级别的配置,供所有页面公用
|
|
||||||
* 可在app.ux导出公用变量
|
|
||||||
* 其他src目录下的ux文件使用this.$app.$def.<paramName>即可调用此处导出的变量
|
|
||||||
* 文档地址: https://doc.quickapp.cn/framework/source-file.html#appux
|
|
||||||
*/
|
|
||||||
|
|
||||||
// 引入全局函数定义文件global.js
|
|
||||||
import './global'
|
|
||||||
|
|
||||||
export default {}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file 全局能力的配置与获取
|
|
||||||
* 文档地址:https://doc.quickapp.cn/tutorial/framework/optimization-skills.html#%E4%BD%BF%E7%94%A8-globaljs
|
|
||||||
*/
|
|
||||||
|
|
||||||
function getGlobalRef() {
|
|
||||||
return Object.getPrototypeOf(global) || global
|
|
||||||
}
|
|
||||||
|
|
||||||
const quickappGlobal = getGlobalRef()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置全局(被APP与Page共享)数据;
|
|
||||||
* @param key {string}
|
|
||||||
* @param val {*}
|
|
||||||
*/
|
|
||||||
function setGlobalData(key, val) {
|
|
||||||
quickappGlobal[key] = val
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取全局(被APP与Page共享)数据;
|
|
||||||
* @param key {string}
|
|
||||||
* @return {*}
|
|
||||||
*/
|
|
||||||
function getGlobalData(key) {
|
|
||||||
return quickappGlobal[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 两个方法默认定义在全局
|
|
||||||
setGlobalData('setGlobalData', setGlobalData)
|
|
||||||
setGlobalData('getGlobalData', getGlobalData)
|
|
||||||
|
|
||||||
export { setGlobalData, getGlobalData }
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
{
|
|
||||||
"package": "com.application.demo",
|
|
||||||
"name": "DSHWatchPhone",
|
|
||||||
"versionName": "1.0.0",
|
|
||||||
"versionCode": 1,
|
|
||||||
"minPlatformVersion": 1070,
|
|
||||||
"icon": "/Common/logo.png",
|
|
||||||
"deviceTypeList": [
|
|
||||||
"phone"
|
|
||||||
],
|
|
||||||
"features": [
|
|
||||||
{
|
|
||||||
"name": "system.prompt"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "system.router"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "system.shortcut"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"origin": "*"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"config": {
|
|
||||||
"logLevel": "log"
|
|
||||||
},
|
|
||||||
"router": {
|
|
||||||
"entry": "Demo",
|
|
||||||
"pages": {
|
|
||||||
"Demo": {
|
|
||||||
"component": "index"
|
|
||||||
},
|
|
||||||
"DemoDetail": {
|
|
||||||
"component": "index"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"widgets": {
|
|
||||||
"CardDemo": {
|
|
||||||
"name": "CardDemo",
|
|
||||||
"description": "快应用卡片展示",
|
|
||||||
"component": "index",
|
|
||||||
"path": "/CardDemo",
|
|
||||||
"features": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"display": {
|
|
||||||
"titleBarBackgroundColor": "#f2f2f2",
|
|
||||||
"titleBarTextColor": "#414141",
|
|
||||||
"menu": false,
|
|
||||||
"menuBarData": {
|
|
||||||
"menuBar": true
|
|
||||||
},
|
|
||||||
"pages": {
|
|
||||||
"Demo": {
|
|
||||||
"titleBarText": "示例页"
|
|
||||||
},
|
|
||||||
"DemoDetail": {
|
|
||||||
"titleBarText": "详情页"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"doc": "https://doc.quickapp.cn/framework/sitemap.html",
|
|
||||||
"rules": [{ "rule": "enable", "page": "*" }]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user