Android笔记

2026-7-17

原始笔记链接:https://cloud.seatable.cn/dtable/external-links/59b453a8639945478de2/

0766 JS Bridge 调用安卓接口

基本原理:通过全局变量+事件驱动,使得安卓系统和JS可以互相通信,在安卓应用内部可以嵌入 JS 代码或网页

1、初始化全局变量链接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 如果是安卓端登录,初始化 JSBridge
if (window.mobileLogin) {
  initWebViewJSBridge();
}

function initWebViewJSBridge() {
  connectWebViewJavascriptBridge(function (bridge) {
    bridge.init();
  });
}

function connectWebViewJavascriptBridge(callback) {
  // 如果JS已经初始化,那么调用回调函数 bridge.init
  if (window.WebViewJavascriptBridge && window.WebViewJavascriptBridge.inited) {
    callback(window.WebViewJavascriptBridge);
  }
  // 如果没有初始化,等待发送消息
  else {
    document.addEventListener('WebViewJavascriptBridgeReady',
      function () {
        callback(window.WebViewJavascriptBridge);
      },
      false);
  }
}

2、JS给安卓发消息,通过全局变量,给安卓传参(包括消息类型,数据内容)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function playAndroidMedia(index, urls) {
    window.WebViewJavascriptBridge.callHandler('playMediaFile',
        JSON.stringify({ index, urls })
    );
}

function openAndroidComment(data) {
  window.WebViewJavascriptBridge.callHandler('callAndroidFunction', JSON.stringify(
    {
      v: 2,
      action: ANDROID_ACTIONS.COMMENT,
      data: JSON.stringify(data),
    }
  ));
}

3、安卓给 JS 发消息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
window.WebViewJavascriptBridge.registerHandler('callJsFunction', (data, responseCallback) => {
  // JS 先解析安卓的数据
  const parsedData = JSON.parse(data);

  // 执行对应的操作
  const execActionSucceed = this.handleAction(parsedData);

  // 如果操作成功,那么回调函数给安卓信息
  if (execActionSucceed) {
    responseCallback(JSON.stringify({ success: true }));
  }
});

目前的调试办法是前端先完成代码,然后安卓同事集成到安卓开发环境去调试

0826 flutter 框架构建应用

https://docs.flutter.cn/get-started/install/macos/web

Flutter 类似 react-native,就是一套代码,可以开发出多个终端的 UI 框架。

编程语言:Flutter 使用 Dart 语言 https://dart.cn/ 和 JS 差距不大(单独介绍)

Flutter 可以用一套代码,同时编译出 安卓,IOS,网页的效果(需要 Android Studio, Xcode 等开发平台)

  • android 和 ios 目录分别包含了用于 Android 和 iOS 平台的原生项目配置文件,Flutter 在构建应用时会根据这些文件进行相应的适配和打包工作。

  • lib 目录是存放 Flutter 代码的核心区域,主要的 UI 构建、业务逻辑等代码都在这里编写,其中 main.dart 是整个应用的入口文件。

  • test 目录用于存放应用的测试代码。

  • pubspec.yaml 是项目的配置文件,用于管理项目的依赖包、指定应用的名称、版本等信息,类似其他语言项目中的 package.json 等文件。

1
2
3
4
5
6
7
8
my_app/
├── android/
├── ios/
├── lib/
│   └── main.dart
├── test/
├── pubspec.yaml
└── README.md

类似的产品还有京东的 taro 用于编译各种小程序

有时间可以直接使用 AI 去完成(关键是还需要安卓平台,IOS 平台,还需要服务器等等各种东西)

具体组件和代码实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My Flutter App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('My App'),
        ),
        body: Center(
          child: Text('Hello, World!'),
        ),
      ),
    );
  }
}

0767 安卓手机上搭建服务器

参考链接:https://blog.csdn.net/weixin_43975684/article/details/105599292

0、手机设置中,打开安装任意软件

1、在安卓机上下载 KSWEB 这个软件,类似 lamp 软件(现在下载需要授权)

2、开启 mysql apache nginx php 基本功能的服务器

3、把代码放在对应的目录中,可以实现局域网内部访问

4、内网穿透,外网可以访问服务器(存在安全问题,测试环境没问题)