多端开发框架

含义:通过一套代码编译成在 H5/微信小程序/React Native/百度小程序/支付宝小程序等端运行的代码。

技术简介:Taro,uniapp

Taro是一个开放式跨端跨框架解决方案,支持使用ReactVue.js、Nerv等框架来开发小程序、H5、react Native等应用。[3]

跨平台开发:

含义:跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合开发高度抽象的模型系统。诸如PHP和易语言,都已做到了跨平台。它们将可以在多种系统下开发,运行和维护。 [1]

技术简介:fluter

flutter

含义:绘图引擎渲染:flutter,Flutter 是由 Google 开发的,一个跨平台 UI 解决方案.;Flutter是一款 Google 开源的 SDK,可跨平台地为移动端,Web 端,桌面端构建高性能的应用。虽然但是我们着重于 flutter 的移动端跨平台开发功能。

优势:一套代码,直接产出 Android + iOS 两个平台的应用。 这是跨平台开发框架的共同优势,不再多说。

工具:  Android Studio:Android集成开发工具,Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。

flutter打包成安卓app

创建项目

flutter create 项目名

添加包命令

flutter pub add wifi_iot

运行命令

flutter run --no-sound-null-safety    

打包命令

flutter build apk --no-sound-null-safety

导包错误:(Target of URI doesn’t exist)

flutter packages get

flutter创建安卓项目,webinpappview嵌入网址,并且需要申请相机和麦克风权限

依赖项:

dependencies:
flutter:
sdk: flutter
webview_flutter: ^0.3.10+4
flutter_inappwebview: ^5.3.2
permission_handler: 5.1.0+2
permission: 0.1.7
oktoast: 2.3.2
flutter_easyloading: ^3.0.5
#^6.1.6
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.5
   <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
<uses-permission android:name="android.permission.AUDIO_CAPTURE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 麦克风权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!--.接收启动完成的广播权限-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:permission_handler/permission_handler.dart'; Future main() async {
WidgetsFlutterBinding.ensureInitialized();
// await Permission.microphone.request();
// await Permission.camera.request(); // 同时申请多个权限:
await [
Permission.microphone,
Permission.camera,
].request();
runApp(const MyApp());
} class MyApp extends StatefulWidget {
const MyApp({super.key}); @override
// ignore: library_private_types_in_public_api, unnecessary_new
_MyAppState createState() => new _MyAppState();
} class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return const MaterialApp(home: InAppWebViewPage());
}
} class InAppWebViewPage extends StatefulWidget {
const InAppWebViewPage({super.key}); @override
// ignore: library_private_types_in_public_api, unnecessary_new
_InAppWebViewPageState createState() => new _InAppWebViewPageState();
} class _InAppWebViewPageState extends State<InAppWebViewPage> {
// ignore: unused_field
late InAppWebViewController _webViewController; @override
Widget build(BuildContext context) {
return Scaffold(
// ignore: avoid_unnecessary_containers
body: Container(
child: Column(children: <Widget>[
Expanded(
// ignore: avoid_unnecessary_containers
child: Container(
child: InAppWebView(
initialUrlRequest: URLRequest(
url: Uri.parse("https://kh.tyzfchina.com.cn:4433")),
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
mediaPlaybackRequiresUserGesture: false,
),
),
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
androidOnPermissionRequest: (InAppWebViewController controller,
String origin, List<String> resources) async {
return PermissionRequestResponse(
resources: resources,
action: PermissionRequestResponseAction.GRANT);
}), //该事件在WebView请求访问指定资源(即安卓原生WebChromeClient.onPermissionRequest event )的权限时触发。
),
),
])));
}
}

报错解决方案

flutter打包报错 Build failed due to use of deprecated Android v1 embedding.

原因:由于使用了已弃用的 Android v1 嵌入,构建失败。

解决:android/app/src/main下的找到AndroidManifest.xml修改application标签内容如下

<application
android:name="${applicationName}" //修改之前的android:name="io.flutter.app.FlutterApplication"为这样
android:label="flutter_nest_page_view"
android:icon="@mipmap/ic_launcher">
<meta-data //添加这个meta-data标签内容
android:name="flutterEmbedding"
android:value="2" />
...
</application>

Flutter 3.3.6 中FlatButton, RaisedButton, & OutlineButton找不到

原因:

FlatButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); RaisedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); OutlineButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
TextButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); ElevatedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
); OutlinedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);

flutter Execution failed for task ‘:audioplayers:compileReleaseKotlin‘.

android->build.gradle文件,修改ext.kotlin_version = ‘1.5.10’

Error: Member not found: ’packageRoot’ in Flutter

flutter pub upgrade

最新文章

  1. 获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息
  2. SQLServer并发问题,先SELECT后UPDATE,避免并发脏读情况解决
  3. Ubuntu16.04 apache2 wsgi 部署django
  4. 将某个Qt4项目升级到Qt5遇到的问题[转]
  5. sql- 别名alias(as)
  6. 横向滚动条展示 css
  7. JAVA使用原始HttpURLConnection发送POST数据
  8. 速卖通api--获取商品信息
  9. 【HDOJ】2526 浪漫手机
  10. onethink微博插件雏形记
  11. Flex移动应用程序开发的技巧和窍门(四)
  12. 微信小程序中在swiper-item中遍历循环添加多个数据内容(微信小程序交流群:604788754)
  13. 【网络流24题22】最长k可重线段集问题
  14. tcp/ip协议详解
  15. struts2-剩余
  16. PyCharm中快速给选中的代码加上{}、&lt;&gt;、()、[]
  17. cocos2d-x 弹出对话框
  18. 55. 45. Jump Game II *HARD*
  19. BCP 基本语法
  20. 另一个SqlParameterCollection中已包含SqlParameter(转)

热门文章

  1. 【Go】发送请求
  2. 实验一-Password engine-加密API研究
  3. STP理论基础
  4. java开发微信APP支付
  5. DC约束笔记
  6. 小白之Python-基础中的基础05
  7. M1 安装apache tomcat
  8. winform高dpi问题探索
  9. 安装netbense时提示在此计算机中找不到Java SE开发工具包(JDK)
  10. vue请求插件axios响应拦截302