• [技术干货] Flutter悬浮UI的设计Overlay组件-转载
     APP开发经常要遇到的开发场景 有时候我们在开发APP的时候会遇到下面这些需求: 在现有页面上添加浮动的悬浮按钮、气泡或菜单。 实现全局的通知或提示弹窗。 创建自定义的导航栏、底部导航或标签栏。 构建模态对话框或底部弹出菜单。 在屏幕上展示悬浮窗,比如 Flutter 版本的 Toast,任意位置的 PopWindow 等等。 自定义Toast。 在页面顶部悬浮某个widget。 等等。 这些场景都有一个共同特点,需要在当前UI上悬浮显示特定的UI。要用flutter来实现这些效果就要引出今天要学习的Overlay组件。 Overlay 的介绍 当需要在 Flutter 应用中在现有 UI 层上添加新的视图或交互时,可以使用 Overlay 组件。Overlay 允许将一个或多个小部件(称为 OverlayEntry)叠加在应用的现有 UI 上。 Overlay包括两个基本组件:OverlayState和OverlayEntry。OverlayState管理所有OverlayEntry,OverlayEntry定义覆盖层的内容。  Overlay的使用规则 创建一个 Overlay 对象,通常使用 Overlay.of(context) 方法获取当前上下文中的 Overlay 对象。 创建一个或多个 OverlayEntry 对象,这些对象将成为 Overlay 的子项。 将 OverlayEntry 添加到 Overlay 中,通常使用 OverlayEntry 的 insert 或 add 方法。 当需要显示或隐藏叠加层时,调用 OverlayEntry 的 markNeedsBuild 方法,并在 build 方法中定义要显示的小部件。 可选:通过调整 OverlayEntry 的位置、大小和布局参数来控制叠加层的位置和样式。 举例说明 下面通过一个简单的例子来说明:例子要实现点击一个按钮会打开Overlay显示一个FloatingActionButton。  源码 import 'package:flutter/material.dart';  void main() {   runApp(MyApp()); }  class MyApp extends StatelessWidget {   @override   Widget build(BuildContext context) {     return MaterialApp(       home: Scaffold(         appBar: AppBar(           title: Text('Flutter Overlay Example'),         ),         body: Center(           child: ElevatedButton(             child: Text('Open Overlay'),             onPressed: () {               showFloatingButtonOverlay(context);             },           ),         ),       ),     );   } }  void showFloatingButtonOverlay(BuildContext context) {   OverlayState? overlayState = Overlay.of(context);   late OverlayEntry overlayEntry;    // 创建 OverlayEntry   overlayEntry = OverlayEntry(     builder: (BuildContext context) {       return Positioned(         top: 100,         right: 16,         child: FloatingActionButton(           onPressed: () {             // 悬浮按钮被点击             print('Floating Button Clicked');             overlayEntry.remove(); // 移除 OverlayEntry           },           child: Icon(Icons.add),         ),       );     },   );    // 将 OverlayEntry 添加到 Overlay 中   overlayState?.insert(overlayEntry); } 运行结果如图:  例子报错 本来想直接贴正确的代码的,但是觉得这个错误对初学者来说很容易犯,故单独列出来。  报错No Overlay widget found 点击Open Overlay按钮报错No Overlay widget found。如下图  报错原因 该错误提示是因为在使用 Overlay.of(context) 方法时,找不到可用的 Overlay 对象。  解决方法 确保按钮所在的 BuildContext 对象正确。在上述示例中,按钮的 onPressed 回调中使用的 BuildContext 应该是 Scaffold 的上下文,确保按钮在正确的上下文中定义和使用。  确保 Overlay 被正确地放置在应用的组件树中。在上述示例中,Overlay 组件应该在 MaterialApp 或 WidgetsApp 的下方,以确保它们在正确的层次结构中。  修改后的源码 import 'package:flutter/material.dart';  void main() {   runApp(MyApp()); }  class MyApp extends StatelessWidget {   @override   Widget build(BuildContext context) {     return MaterialApp(       home: OverlayExample(), // 使用 OverlayExample 作为主页     );   } }  class OverlayExample extends StatelessWidget {   @override   Widget build(BuildContext context) {     return Scaffold(       appBar: AppBar(         title: Text('Flutter Overlay Example'),       ),       body: Center(         child: ElevatedButton(           child: Text('Open Overlay'),           onPressed: () {             showFloatingButtonOverlay(context);           },         ),       ),     );   } }  void showFloatingButtonOverlay(BuildContext context) {   OverlayState? overlayState = Overlay.of(context);   late OverlayEntry overlayEntry;    // 创建 OverlayEntry   overlayEntry = OverlayEntry(     builder: (BuildContext context) {       return Positioned(         top: 100,         right: 16,         child: FloatingActionButton(           onPressed: () {             // 悬浮按钮被点击             print('Floating Button Clicked');             overlayEntry.remove(); // 移除 OverlayEntry           },           child: Icon(Icons.add),         ),       );     },   );    // 将 OverlayEntry 添加到 Overlay 中   overlayState?.insert(overlayEntry); } ———————————————— 版权声明:本文为CSDN博主「江上清风山间明月」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/yikezhuixun/article/details/131283414 
  • [技术干货] 如何用Android Studio实现登录跳转-转载
     前言 这个项目是我很早的时候写的,现在将其发上来供大家参考。可能存在一些不规范的问题,如有不对,欢迎批评指正。首先需要安装配置好Java开发环境,并选择任意一款Android开发工具进行编程,推荐下载安装Android Studio软件进行程序开发。在开始进行Android编程开发之前需要对Java基础知识有一定的了解和掌握。  一、基本要求 实现一个简单的用户登录界面,功能如下:  1、默认不存储用户信息,默认隐藏密码。  2、能通过勾选框记住密码、显示密码,点击登录后实现页面跳转至主页面。  3、通过“登录”进入主界面,通过“退出”退出APP,主界面通过“返回”返回到登录页面  4、登录界面显示登录的用户名及当前用户的登录时间  二、关键代码分析 1、在进行登录跳转时,manifest.xml必须写入新活动名,否则无法实现跳转  <activity android:name=".WelcomeActivity"/> 2、从SharedPreferences中获取是否记住当前用户的相关参数(登录名及密码),设置账号与密码到文本编辑框,并勾选记住当前用户名与密码  //从SharedPreferences中获取是否记住密码的参数         final SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this);         boolean isRemember = preference.getBoolean("remember_pwd", false);         //设置账号与密码到文本框,并勾选记住密码         if (isRemember) {             username.setText(preference.getString("name", ""));             password.setText(preference.getString("password", ""));             remember_pwd.setChecked(true);         } 3、设置用户名和密码校验;如果校验成功且勾选记住密码,保存密码和用户名,如未勾选,登录成功后清除保存的数据   String inputName = username.getText().toString();                 String pwd = password.getText().toString();                 //进行登录用户名和密码校验                 if (inputName.equals("老王") && pwd.equals("123456789")) {                     SharedPreferences.Editor editor = preference.edit();                     if (remember_pwd.isChecked()) {//记住账号与密码                         editor.putBoolean("remember_pwd", true);                         editor.putString("name", inputName);                         editor.putString("password", pwd);                     } else {//清空数据                         editor.clear();                     }                     editor.apply(); 4、跳转至主界面WelcomeActivity.java   WelcomeActivity.actionStart(MainActivity.this, inputName, pwd); 5、是否显示密码,默认不勾选显示密码  @Override   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {     if (isChecked) {     //如果选中,显示密码       editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());            }      else {     //否则隐藏密码     editText.setTransformationMethod(PasswordTransformationMethod.getInstance());           }        } 6、退出登录  cancel.setOnClickListener(new View.OnClickListener() {                                       @Override                                       public void onClick(View v) {                                           finish();                                       }                                   }); 7、登录成功后,用户名显示  //登录成功后,用户名显示     private void showWelcome() {         Bundle bundle = getIntent().getExtras();         String name = bundle.getString("username");         myWelcome.setText("\n" + name + " 您好!\n    欢迎光临");     }  8、获取当前的登录时间  private void showTime() {         SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");         Date curDate = new Date(System.currentTimeMillis());         //获取当前时间         String str = formatter.format(curDate);         myTime.setText("您的登录时间为:"+str);     } 三、页面代码展示 activity_main.xml:  <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:id="@+id/relativeLayout"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="@drawable/b03533fa828ba61e560f92ebd1da230f324e5901"     tools:context=".MainActivity">       <EditText         android:id="@+id/editText1"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginStart="75dp"         android:layout_marginEnd="32dp"         android:hint="请输入用户名"         app:layout_constraintBottom_toTopOf="@+id/editText2"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintHorizontal_bias="0.0"         app:layout_constraintStart_toStartOf="parent"         android:maxLines="1"         app:layout_constraintTop_toTopOf="parent"         app:layout_constraintVertical_bias="0.972" />       <EditText         android:id="@+id/editText2"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginStart="75dp"         android:layout_marginEnd="32dp"         android:hint="请输入密码"         android:inputType="textPassword"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintHorizontal_bias="0.0"         app:layout_constraintStart_toStartOf="parent"         android:maxLines="1"         app:layout_constraintTop_toTopOf="parent"         app:layout_constraintVertical_bias="0.546" />       <TextView         android:id="@+id/textView2"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginTop="16dp"         android:layout_marginBottom="16dp"         android:text="用户登录"         android:textSize="28sp"         android:textStyle="bold"         app:layout_constraintBottom_toTopOf="@+id/editText1"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toTopOf="parent"         app:layout_constraintVertical_bias="0.89" />       <Button         android:id="@+id/button_login"         style="@style/AlertDialog.AppCompat.Light"         android:layout_width="match_parent"         android:layout_height="45dp"         android:layout_gravity="center_horizontal"         android:layout_marginLeft="30dp"         android:layout_marginTop="32dp"         android:layout_marginRight="30dp"         android:backgroundTint="@android:color/holo_blue_dark"         android:text="登录"         app:layout_constraintEnd_toStartOf="@+id/button_quit"         app:layout_constraintHorizontal_bias="0.0"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toBottomOf="@+id/editText2" />       <Button         android:id="@+id/button_quit"         style="@style/AlertDialog.AppCompat.Light"         android:layout_width="match_parent"         android:layout_height="45dp"         android:layout_gravity="center_horizontal"         android:layout_marginStart="30dp"         android:layout_marginTop="76dp"         android:layout_marginEnd="30dp"         android:text="退出"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toBottomOf="@+id/editText2" />       <CheckBox         android:id="@+id/checkBox1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="显示密码"         app:layout_constraintStart_toStartOf="@+id/button_login"         app:layout_constraintTop_toBottomOf="@+id/editText2" />       <CheckBox         android:id="@+id/checkBox2"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="记住密码"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintHorizontal_bias="0.3"         app:layout_constraintStart_toStartOf="@+id/checkBox1"         app:layout_constraintTop_toBottomOf="@+id/editText2" />       <TextView         android:id="@+id/textView"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginStart="24dp"         android:text="用户:"         android:textSize="20sp"         android:textStyle="bold"         app:layout_constraintBottom_toTopOf="@+id/editText2"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toTopOf="@+id/editText1"         app:layout_constraintVertical_bias="0.37" />       <TextView         android:id="@+id/textView4"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginStart="24dp"         android:text="密码:"         android:textSize="20sp"         android:textStyle="bold"         app:layout_constraintBottom_toBottomOf="@+id/editText2"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toBottomOf="@+id/textView"         app:layout_constraintVertical_bias="0.718" />     </androidx.constraintlayout.widget.ConstraintLayout> welcome.xml:  <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent" android:layout_height="match_parent">       <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="网上购书系统"         android:id="@+id/textView"         android:layout_alignParentTop="true"         android:layout_centerHorizontal="true"         android:textSize="@dimen/abc_text_size_headline_material"         android:textStyle="bold"         android:textColor="@android:color/holo_blue_dark" />       <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:textAppearance="?android:attr/textAppearanceLarge"         android:text="\n您好!\n欢迎光临"         android:id="@+id/myLabelWelcome"         android:layout_below="@+id/textView"         android:layout_centerHorizontal="true"         android:textSize="@dimen/abc_text_size_large_material"         android:textColor="@android:color/holo_red_dark" />       <ImageView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:id="@+id/imageView"         android:src="@drawable/androidwelcomer"         android:layout_below="@+id/myLabelWelcome"         android:layout_centerHorizontal="true" />       <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text=""         android:id="@+id/myLabelTime"         android:layout_below="@+id/textView"         android:layout_centerHorizontal="true"         android:textSize="@dimen/abc_text_size_medium_material" />       <Button         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="返      回"         android:id="@+id/myButtonBack"         android:layout_below="@+id/imageView"         android:layout_centerHorizontal="true"         android:textSize="@dimen/abc_text_size_large_material"         android:onClick="onBackClick" /> </RelativeLayout> ———————————————— 版权声明:本文为CSDN博主「数产小黑娃」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_53860947/article/details/125852035 
  • [其他问题] Android读取大量数据的Excel文件的有效方法
        Android项目需求读取大量数据的excel(.xlsx格式)的内容,但是我这两天去网上搜索到的Apache-poi和jxl去读取excel都不太理想,Apache-poi读取数据量超过一定量的excel时会提示oom,jxl只支持解析.xls(97-2003)格式的文件。    在网上继续搜索相关的问题,但是都没办法解决。使用Apache-poi读取数据时分为用户模式和SAX事件驱动模式,但是看到示例基本都是SpringBoot的项目,在Android项目上使用会出现很多意料之外的问题,个人能力有限,不知道怎么解决。然后easyExcel和monitorjbl示例也是SpringBoot的项目,在android项目上使用也是面临着很多意料之外的问题。请问有什么方法能够做到在android项目上读取大量数据的excel
  • [使用指南] Android API网关 APIG下载demo后,调用接口报错
    将demo https://support.huaweicloud.com/devg-apig/apig-dev-180919068.html 下载下来,运行后请求接口报错
  • [问题求助] Android SDK 引入后跟原项目工程冲突导致编译失败
    照着官网的示例implementation 'com.huaweicloud:esdk-obs-android:3.21.12'结果编译后,产生错误信息java.lang.IllegalArgumentException     at org.objectweb.asm.ClassReader.<init>(Unknown Source)     at org.objectweb.asm.ClassReader.<init>(Unknown Source)     at org.objectweb.asm.ClassReader.<init>(Unknown Source)     at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:142)     at com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeJar(DesugaringClassAnalyzer.java:92)     at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:63)     at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda$getInitalGraphData$4(DesugarIncrementalTransformHelper.java:150)     at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)     at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 尝试过多种方法,依旧无法解决。
  • [技术干货] 微信小程序填写用户头像和昵称实现方法
    开放能力调整公告总体来说就是通过按钮来授权获取用户基础信息的能力都没啦(wx.getUserProfile,wx.getUserInfo都不行了),都要使用新版本的 【头像昵称填写能力】啦。获取头像获取头像代码wxxl部分123<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">  <image class="avatar" src="{{avatarUrl}}"></image></button>js部分1234567891011Page({  data: {    avatarUrl: defaultAvatarUrl,  },  onChooseAvatar(e) {    const { avatarUrl } = e.detail  //获取图片临时路径    this.setData({      avatarUrl,    })  }})适配头像时需要注意的地方此时获取到的头像路径为本地路径,虽然可以在页面上显示,但是并不能直接入库使用,浏览器上是访问不到的。需要上传到我们自己的服务器,后面每次使用都从我们自己的服务器上取。 其实说白了就是之前头像文件我们都是从微信服务器获取的,现在需要去我们自己的服务器获取了。1234567891011121314wx.uploadFile({  url: '我们自己的服务器地址', //仅为示例,非真实的接口地址  filePath: '图片临时路径',  name: 'uploadFile',  //自定义name  success(res) {    console.log('res', res);   //经自己服务器存储后,将地址返回到客户端。  },  fail(err) {    console.log('err', err);  },  complete(cp) {    console.log(cp);  }})获取昵称获取头像代码,将input中的“type”属性设置为‘nickname’,同时对"name"属性设定值,点击提交按钮后根据设置的name值获取对应的value。123456789<form bindsubmit="getUserName"> <!--定义提交事件-->  <view class="cu-form-group">       <view class="title">昵称:</view>       <input placeholder="请输入昵称" type="nickname" name="nickname" maxlength="32"></input>   </view>   <view class="up-bt">       <button form-type="submit" role="button" aria-disabled="false" class="save-bt cu-btn block bg-blue margin-tb-sm lg">更新资料</button>     </view></form>js部分123getUserName(e) {  console.log(e.detail.value.nickname);  //用户输入或者选择的昵称},获取昵称需要注意的地方用户输入或者选择昵称时,会异步对用户输入的内容进行安全监测,若未通过安全监测,微信将清空用户输入的内容,建议开发者通过 form 中form-type 为submit 的button 组件收集用户输入的内容。转载自https://www.jb51.net/article/274818.htm
  • [问题求助] QT5.12.6下使用FFMPEG 4.4.2-Android 出现不同手机无法兼容h264硬件解码的问题
    在Ubuntu18下成功编译了ffmpeg442-Android,尝试在qt中使用硬件解码。qt的环境如下:qt版本:5.12.6qt编译器:Android_for_arm64_v8a_Clang_Qt_5_12_6_for_Android_ARM64_v8a整个硬件解码的代码如下: //1. 根据名称查找解码器的类型 type = av_hwdevice_find_type_by_name(m_HardwareName.data()); if (type == AV_HWDEVICE_TYPE_NONE) { qDebug()<<"未找到解码器的类型:"<<m_HardwareName; fprintf(stderr, "Device type %s is not supported.\n",m_HardwareName.data()); fprintf(stderr, "可用设备类型:"); while((type = av_hwdevice_iterate_types(type)) != AV_HWDEVICE_TYPE_NONE) fprintf(stderr, " %s", av_hwdevice_get_type_name(type)); fprintf(stderr, "\n"); return -1; } qDebug()<<"已经找到解码器:"<<m_HardwareName<<"其枚举值:"<<type; //2. 打开多媒体流,并且获取一些信息 if (avformat_open_input(&input_ctx,m_MediaFile.data(), NULL, NULL) != 0) { qDebug()<<"无法打开输入文件:"<<m_MediaFile; return -1; } //3. 读取媒体文件的数据包以获取流信息 qDebug()<<"读取媒体文件的数据包以获取流信息"; if (avformat_find_stream_info(input_ctx, NULL) < 0) { qDebug()<<"找不到输入流信息:"<<m_MediaFile; return -1; } qDebug()<<"查找视频流信息"; /* 查找视频流信息*/ ret = av_find_best_stream(input_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, &decoder, 0); if (ret < 0) { qDebug()<<"在输入文件中找不到视频流"; return -1; } video_stream = ret; for (i = 0;; i++) { const AVCodecHWConfig *config = avcodec_get_hw_config(decoder, i); if (!config) { qDebug("Decoder %s does not support device type %s.\n", decoder->name, av_hwdevice_get_type_name(type)); return -1; } if (config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX && config->device_type == type) { hw_pix_fmt = config->pix_fmt; break; } } 代码执行到这边的时候,便会出现如下报错:测试发现小米的手机可以正常通过此处代码,而联想、华为无法通过。怀疑是ffmpeg的代码流程及对应不同手机的适配有问题
  • [问题求助] QT 5.12.6 下调用FFMPEG android 4.2.2 出现“Decoder h264 does not support device type mediacodec”的问题
    已经成功编译了 FFMPEG-ANDRIOD 4.2.2,编译的选项如下:#!/bin/bashexport NDK=/home/sqm/ndk/android-ndk-r20b  #NDK的路径TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64function build_android{./configure \--prefix=$PREFIX \--enable-neon \--enable-shared \--enable-gpl \--enable-hwaccels \--enable-runtime-cpudetect \--enable-postproc \--enable-small \--enable-jni \--enable-mediacodec \--enable-decoder=h264_mediacodec \--enable-decoder=hevc_mediacodec \--enable-decoder=mpeg4_mediacodec \--enable-hwaccel=h264_mediacodec \--enable-static \--enable-pic \--enable-avdevice \--disable-doc \--disable-debug  \--enable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-symver \--cross-prefix=$CROSS_PREFIX \--target-os=android \--arch=$ARCH \--cpu=$CPU \--cc=$CC \--cxx=$CXX \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS"make cleanmake -j8make installecho "============================ build android $CPU success =========================="}#arm64-v8aARCH=arm64CPU=armv8-aAPI=21CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clangCXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysrootCROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-march=$CPU"build_android#armv7-aARCH=armCPU=armv7-aAPI=21CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clangCXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysrootCROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-PREFIX=$(pwd)/android/$CPUOPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "build_androidQT 的.pro文件中引用如下:整个工程编译正常,但是一旦调试、打开视频流,就会报如下错误:代码中是在如下地方出现问题:
  • [问题求助] QT5.12.6下调用FFMPEG 4.4.2 andriod 缺少相关库的问题
    qmake中进行如下声明:#指定库文件的路径LIBS += -L$$PWD/ffmepg422_android/arm64/lib -lavcodecLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lavfilterLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lavdeviceLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lavutilLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lavformatLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lpostprocLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lswscaleLIBS += -L$$PWD/ffmepg422_android/arm64/lib -lswresample#指定头文件的路径INCLUDEPATH+=$$PWD/ffmepg422_android/arm64/includecontains(ANDROID_TARGET_ARCH,arm64-v8a) { ANDROID_EXTRA_LIBS = \ $$PWD/ffmepg422_android/arm64/lib/libswscale.so \ $$PWD/ffmepg422_android/arm64/lib/libswresample.so \ $$PWD/ffmepg422_android/arm64/lib/libpostproc.so \ $$PWD/ffmepg422_android/arm64/lib/libclang_rt.ubsan_standalone-aarch64-android.so \ $$PWD/ffmepg422_android/arm64/lib/libavutil.so \ $$PWD/ffmepg422_android/arm64/lib/libavformat.so \ $$PWD/ffmepg422_android/arm64/lib/libavfilter.so \ $$PWD/ffmepg422_android/arm64/lib/libavdevice.so \ $$PWD/ffmepg422_android/arm64/lib/libavcodec.so ANDROID_PACKAGE_SOURCE_DIR = \ $$PWD/android}DISTFILES += \ android/AndroidManifest.xml \ android/build.gradle \ android/gradle/wrapper/gradle-wrapper.jar \ android/gradle/wrapper/gradle-wrapper.properties \ android/gradlew \ android/gradlew.bat \ android/res/values/libs.xml使用Android_for_arm64_v8a_Clang_Qt_5_12_6_for_Android_ARM64_v8a对工程进行编译,出现如下报错:
  • [问题求助] 白名单授权咋样申请
    应用安装后默认加入白名单, 白名单授权咋样申请
  • [问题求助] 鲲鹏920 运行模拟器卡在这里
     emulator -avd  test_7 -skip-adb-auth -gpu auto  -no-window -cores 4 -writable-system -partition-size 16384  -verbose  -qemu  -enable-kvm emulator: Found AVD name 'test_7' emulator: Found AVD target architecture: arm64 emulator: argv[0]: 'emulator'; program directory: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools' emulator: Auto-config: -engine qemu2 (arm64 default) emulator:  Found directory: /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a/  emulator: emuDirName: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/emulator' emulator: try dir /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools emulator: Trying emulator path '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64' emulator: Found target-specific 64-bit emulator binary: /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64 emulator: Adding library search path: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64' emulator: Adding library search path: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/gles_swiftshader' emulator: Adding library search path: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/gles_angle' emulator: Adding library search path: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/gles_angle9' emulator: Adding library search path: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/gles_angle11' emulator: Adding library search path: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/libstdc++' emulator: Adding library search path for Qt: '/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/qt/lib' emulator: Setting Qt plugin search path: QT_QPA_PLATFORM_PLUGIN_PATH=/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib64/qt/plugins emulator: Setting Qt to use software OpenGL: QT_OPENGL=software emulator: Running :/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64 emulator: qemu backend: argv[00] = "/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64" emulator: qemu backend: argv[01] = "-avd" emulator: qemu backend: argv[02] = "test_7" emulator: qemu backend: argv[03] = "-skip-adb-auth" emulator: qemu backend: argv[04] = "-gpu" emulator: qemu backend: argv[05] = "auto" emulator: qemu backend: argv[06] = "-no-window" emulator: qemu backend: argv[07] = "-cores" emulator: qemu backend: argv[08] = "4" emulator: qemu backend: argv[09] = "-writable-system" emulator: qemu backend: argv[10] = "-partition-size" emulator: qemu backend: argv[11] = "16384" emulator: qemu backend: argv[12] = "-verbose" emulator: qemu backend: argv[13] = "-qemu" emulator: qemu backend: argv[14] = "-enable-kvm" emulator: Concatenated backend parameters:  /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64 -avd test_7 -skip-adb-auth -gpu auto -no-window -cores 4 -writable-system -partition-size 16384 -verbose -qemu -enable-kvm emulator: Android virtual device file at: /root/.android/avd/test_7.ini emulator: virtual device content at /root/.android/avd/test_7.avd emulator: virtual device config file: /root/.android/avd/test_7.avd/config.ini emulator: using core hw config path: /root/.android/avd/test_7.avd/hardware-qemu.ini emulator: using snapshot lock path: /root/.android/avd/test_7.avd/snapshot.lock emulator: using multi-instance lock path: /root/.android/avd/test_7.avd/multiinstance.lock emulator: Found AVD target API level: 24 emulator: No build.prop property file found. emulator: No boot.prop property file found. emulator: Cannot find target CPU architecture, defaulting to 'arm' emulator: Cannot find target CPU ABI, defaulting to 'armeabi' emulator: 'magic' skin format detected: 720x1600 emulator: autoconfig: -skin 720x1600 emulator: autoconfig: -skindir (null) emulator: autoconfig: -kernel /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//kernel-ranchu emulator: Target arch = 'arm' emulator: Auto-detect: Kernel image requires new device naming scheme. emulator: Auto-detect: Kernel does not support YAFFS2 partitions. emulator: autoconfig: -ramdisk /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//ramdisk.img emulator: Using initial system image: /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//system.img emulator: No vendor image emulator: autoconfig: -data /root/.android/avd/test_7.avd/userdata-qemu.img emulator: autoconfig: -initdata /root/.android/avd/test_7.avd/userdata.img emulator: autoconfig: -cache /root/.android/avd/test_7.avd/cache.img emulator: Increasing RAM size to 1024MB emulator: VM heap size 0MB is below hardware specified minimum of 256MB,setting it to that value emulator: WARNING: System image is writable emulator: Found 1 DNS servers: 127.0.0.53 defaultIniHostName=/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib/advancedFeaturesCanary.ini emulator: found magic skin width=720 height=1600 bpp=16  Couldn't statvfs() path: No such file or directory Found invalid RAM file. Deleting snapshot emulator: WARNING: encryption is off emulator: CPU Acceleration: working emulator: CPU Acceleration status: KVM (version 12) is installed and usable. setCurrentRenderer: gpuMode=off emulator: GPU emulation is disabled (-no-window without Swiftshader) emuglConfig_setupEnv: config->enabled=0, config->backend=off emulator: Found 1 DNS servers: 127.0.0.53 Content of hardware configuration file:   hw.cpu.arch = arm64   hw.cpu.ncore = 4   hw.ramSize = 1024   hw.screen = multi-touch   hw.mainKeys = false   hw.trackBall = false   hw.keyboard = false   hw.keyboard.lid = false   hw.keyboard.charmap = qwerty2   hw.dPad = false   hw.rotaryInput = false   hw.gsmModem = true   hw.gps = true   hw.battery = true   hw.accelerometer = true   hw.gyroscope = true   hw.audioInput = true   hw.audioOutput = true   hw.sdCard = false   disk.cachePartition = true   disk.cachePartition.path = /root/.android/avd/test_7.avd/cache.img   disk.cachePartition.size = 66m   test.quitAfterBootTimeOut = -1   hw.lcd.width = 720   hw.lcd.height = 1600   hw.lcd.depth = 16   hw.lcd.density = 320   hw.lcd.backlight = true   hw.gpu.enabled = false   hw.gpu.mode = off   hw.initialOrientation = portrait   hw.camera.back = emulated   hw.camera.front = none   vm.heapSize = 256   hw.sensors.light = true   hw.sensors.pressure = true   hw.sensors.humidity = true   hw.sensors.proximity = true   hw.sensors.magnetic_field = true   hw.sensors.magnetic_field_uncalibrated = true   hw.sensors.gyroscope_uncalibrated = true   hw.sensors.orientation = true   hw.sensors.temperature = true   hw.useext4 = true   hw.arc = false   hw.arc.autologin = false   kernel.path = /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//kernel-ranchu   kernel.newDeviceNaming = yes   kernel.supportsYaffs2 = no   disk.ramdisk.path = /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//ramdisk.img   disk.systemPartition.initPath = /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//system.img   disk.systemPartition.size = 16g   disk.vendorPartition.size = 0   disk.dataPartition.path = /root/.android/avd/test_7.avd/userdata-qemu.img   disk.dataPartition.size = 16g   PlayStore.enabled = false   avd.name = test_7   fastboot.forceColdBoot = false . QEMU options list: emulator: argv[00] = "/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64" emulator: argv[01] = "-dns-server" emulator: argv[02] = "127.0.0.53" emulator: argv[03] = "-skip-adb-auth" emulator: argv[04] = "-mem-path" emulator: argv[05] = "/root/.android/avd/test_7.avd/snapshots/default_boot/ram.img" emulator: argv[06] = "-mem-file-shared" emulator: argv[07] = "-serial" emulator: argv[08] = "null" emulator: argv[09] = "-device" emulator: argv[10] = "goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/test_7.avd/data/misc/pstore/pstore.bin" emulator: argv[11] = "-cpu" emulator: argv[12] = "host" emulator: argv[13] = "-enable-kvm" emulator: argv[14] = "-smp" emulator: argv[15] = "cores=4" emulator: argv[16] = "-m" emulator: argv[17] = "1024" emulator: argv[18] = "-lcd-density" emulator: argv[19] = "320" emulator: argv[20] = "-nodefaults" emulator: argv[21] = "-kernel" emulator: argv[22] = "/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//kernel-ranchu" emulator: argv[23] = "-initrd" emulator: argv[24] = "/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//ramdisk.img" emulator: argv[25] = "-drive" emulator: argv[26] = "index=0,id=userdata,file=/root/.android/avd/test_7.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=2097152" emulator: argv[27] = "-device" emulator: argv[28] = "virtio-blk-device,drive=userdata" emulator: argv[29] = "-drive" emulator: argv[30] = "index=1,id=cache,file=/root/.android/avd/test_7.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576" emulator: argv[31] = "-device" emulator: argv[32] = "virtio-blk-device,drive=cache" emulator: argv[33] = "-drive" emulator: argv[34] = "index=2,id=system,file=/root/.android/avd/test_7.avd/system.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576" emulator: argv[35] = "-device" emulator: argv[36] = "virtio-blk-device,drive=system" emulator: argv[37] = "-netdev" emulator: argv[38] = "user,id=mynet" emulator: argv[39] = "-device" emulator: argv[40] = "virtio-net-device,netdev=mynet" emulator: argv[41] = "-device" emulator: argv[42] = "virtio-rng-device" emulator: argv[43] = "-show-cursor" emulator: argv[44] = "-nographic" emulator: argv[45] = "-monitor" emulator: argv[46] = "none" emulator: argv[47] = "-L" emulator: argv[48] = "/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib/pc-bios" emulator: argv[49] = "-enable-kvm" emulator: argv[50] = "-append" emulator: argv[51] = "qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATORstandalone keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 androidboot.selinux=permissive console=0 android.checkjni=1 qemu.gles=0 qemu.opengles.version=131072 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m" emulator: argv[52] = "-android-hw" emulator: argv[53] = "/root/.android/avd/test_7.avd/hardware-qemu.ini" Concatenated QEMU options:  /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64 -dns-server 127.0.0.53 -skip-adb-auth -mem-path /root/.android/avd/test_7.avd/snapshots/default_boot/ram.img -mem-file-shared -serial null -device goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/test_7.avd/data/misc/pstore/pstore.bin -cpu host -enable-kvm -smp cores=4 -m 1024 -lcd-density 320 -nodefaults -kernel /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//kernel-ranchu -initrd /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//ramdisk.img -drive index=0,id=userdata,file=/root/.android/avd/test_7.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=2097152 -device virtio-blk-device,drive=userdata -drive index=1,id=cache,file=/root/.android/avd/test_7.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=cache -drive index=2,id=system,file=/root/.android/avd/test_7.avd/system.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-device,drive=system -netdev user,id=mynet -device virtio-net-device,netdev=mynet -device virtio-rng-device -show-cursor -nographic -monitor none -L /home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib/pc-bios -enable-kvm -append 'qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATORstandalone keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 androidboot.selinux=permissive console=0 android.checkjni=1 qemu.gles=0 qemu.opengles.version=131072 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m' -android-hw /root/.android/avd/test_7.avd/hardware-qemu.ini emulator: Starting QEMU main loop argv[0]=/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/qemu/linux-aarch64/qemu-system-aarch64 argv[1]=-dns-server argv[2]=127.0.0.53 argv[3]=-skip-adb-auth argv[4]=-mem-path argv[5]=/root/.android/avd/test_7.avd/snapshots/default_boot/ram.img argv[6]=-mem-file-shared argv[7]=-serial argv[8]=null argv[9]=-device argv[10]=goldfish_pstore,addr=0xff018000,size=0x10000,file=/root/.android/avd/test_7.avd/data/misc/pstore/pstore.bin argv[11]=-cpu argv[12]=host argv[13]=-enable-kvm argv[14]=-smp argv[15]=cores=4 argv[16]=-m argv[17]=1024 argv[18]=-lcd-density argv[19]=320 argv[20]=-nodefaults argv[21]=-kernel argv[22]=/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//kernel-ranchu argv[23]=-initrd argv[24]=/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/system-images/android-24/default/arm64-v8a//ramdisk.img argv[25]=-drive argv[26]=index=0,id=userdata,file=/root/.android/avd/test_7.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=2097152 argv[27]=-device argv[28]=virtio-blk-device,drive=userdata argv[29]=-drive argv[30]=index=1,id=cache,file=/root/.android/avd/test_7.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 argv[31]=-device argv[32]=virtio-blk-device,drive=cache argv[33]=-drive argv[34]=index=2,id=system,file=/root/.android/avd/test_7.avd/system.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 argv[35]=-device argv[36]=virtio-blk-device,drive=system argv[37]=-netdev argv[38]=user,id=mynet argv[39]=-device argv[40]=virtio-net-device,netdev=mynet argv[41]=-device argv[42]=virtio-rng-device argv[43]=-show-cursor argv[44]=-nographic argv[45]=-monitor argv[46]=none argv[47]=-L argv[48]=/home/crossevery/myandroidsdk/android-sdk-linux_920/android-sdk-linux/tools/lib/pc-bios argv[49]=-enable-kvm argv[50]=-append argv[51]=qemu=1 no_timer_check androidboot.hardware=ranchu androidboot.serialno=EMULATORstandalone keep_bootcon earlyprintk=ttyAMA0 android.qemud=1 androidboot.selinux=permissive console=0 android.checkjni=1 qemu.gles=0 qemu.opengles.version=131072 loop.max_part=7 ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000 qemu.dalvik.vm.heapsize=256m argv[52]=-android-hw argv[53]=/root/.android/avd/test_7.avd/hardware-qemu.ini emulator: registered 'boot-properties' qemud service emulator: Adding boot property: 'ro.opengles.version' = '131072' emulator: Adding boot property: 'qemu.sf.fake_camera' = 'back' emulator: Adding boot property: 'dalvik.vm.heapsize' = '256m' emulator: Adding boot property: 'qemu.hw.mainkeys' = '0' emulator: Adding boot property: 'qemu.sf.lcd_density' = '320' emulator: goldfish_events.have-dpad: false emulator: goldfish_events.have-trackball: false emulator: goldfish_events.have-camera: true emulator: goldfish_events.have-keyboard: false emulator: goldfish_events.have-lidswitch: false emulator: goldfish_events.have-tabletmode: false emulator: goldfish_events.have-touch: false emulator: goldfish_events.have-multitouch: true ranchu_init pulseaudio: pa_context_connect() failed pulseaudio: Reason: Connection refused pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver arm_load_kernel arm_load_kernel->qemu_register_reset arm_load_kernel->qemu_register_reset arm_load_kernel->qemu_register_reset arm_load_kernel->qemu_register_reset arm_load_kernel over emulator: control console listening on port 5554, ADB on port 5555 Not using any http proxy emulator: Adding boot property: 'qemu.timezone' = 'Etc/UTC' emulator: android_hw_fingerprint_init: fingerprint qemud listen service initialized  arm_load_kernel_notify00 kernel_size00=-1 kernel_size11=8314368 is_linux00=1 initrd_size00=-1 initrd_size11=1453693 have_dtb00 arm_load_kernel_notify55 warn: address_space_rw,addr=0 warn: address_space_rw,addr=0 warn: address_space_rw,addr=0 error: kvm run failed Invalid argument error: kvm run failed Invalid argument error: kvm run failed Invalid argument PC=0000000040000000  SP=0000000000000000 X00=0000000000000000 X01=0000000000000000 X02=0000000000000000 X03=0000000000000000 X04=0000000000000000 X05=0000000000000000 X06=0000000000000000 X07=0000000000000000 X08=0000000000000000 X09=0000000000000000 X10=0000000000000000 X11=0000000000000000 X12=0000000000000000 X13=0000000000000000 X14=0000000000000000 X15=0000000000000000 X16=0000000000000000 X17=0000000000000000 X18=0000000000000000 X19=0000000000000000 X20=0000000000000000 X21=0000000000000000 X22=0000000000000000 X23=0000000000000000 X24=0000000000000000 X25=0000000000000000 X26=0000000000000000 X27=0000000000000000 X28=0000000000000000 X29=0000000000000000 X30=0000000000000000 PSTATE=400003c5 -Z-- EL1h error: kvm run failed Invalid argument PC=0000000000000000  SP=0000000000000000 X00=0000000000000000 X01=0000000000000000 X02=0000000000000000 X03=0000000000000000 X04=0000000000000000 X05=0000000000000000 X06=0000000000000000 X07=0000000000000000 X08=0000000000000000 X09=0000000000000000 X10=0000000000000000 X11=0000000000000000 X12=0000000000000000 X13=0000000000000000 X14=0000000000000000 X15=0000000000000000 X16=0000000000000000 X17=0000000000000000 X18=0000000000000000 X19=0000000000000000 X20=0000000000000000 X21=0000000000000000 X22=0000000000000000 X23=0000000000000000 X24=0000000000000000 X25=0000000000000000 X26=0000000000000000 X27=0000000000000000 X28=0000000000000000 X29=0000000000000000 X30=0000000000000000 PSTATE=400003c5 -Z-- EL1h PC=0000000000000000  SP=0000000000000000 X00=0000000000000000 X01=0000000000000000 X02=0000000000000000 X03=0000000000000000 X04=0000000000000000 X05=0000000000000000 X06=0000000000000000 X07=0000000000000000 X08=0000000000000000 X09=0000000000000000 X10=0000000000000000 X11=0000000000000000 X12=0000000000000000 X13=0000000000000000 X14=0000000000000000 X15=0000000000000000 X16=0000000000000000 X17=0000000000000000 X18=0000000000000000 X19=0000000000000000 X20=0000000000000000 X21=0000000000000000 X22=0000000000000000 X23=0000000000000000 X24=0000000000000000 X25=0000000000000000 X26=0000000000000000 X27=0000000000000000 X28=0000000000000000 X29=0000000000000000 X30=0000000000000000 PSTATE=400003c5 -Z-- EL1h PC=0000000000000000  SP=0000000000000000 X00=0000000000000000 X01=0000000000000000 X02=0000000000000000 X03=0000000000000000 X04=0000000000000000 X05=0000000000000000 X06=0000000000000000 X07=0000000000000000 X08=0000000000000000 X09=0000000000000000 X10=0000000000000000 X11=0000000000000000 X12=0000000000000000 X13=0000000000000000 X14=0000000000000000 X15=0000000000000000 X16=0000000000000000 X17=0000000000000000 X18=0000000000000000 X19=0000000000000000 X20=0000000000000000 X21=0000000000000000 X22=0000000000000000 X23=0000000000000000 X24=0000000000000000 X25=0000000000000000 X26=0000000000000000 X27=0000000000000000 X28=0000000000000000 X29=0000000000000000 X30=0000000000000000 PSTATE=400003c5 -Z-- EL1h  
  • 求大佬帮忙看看 此包名 com.hysteria.leaf 属于哪方SDK 如何解决啊
    求告知 谢谢大佬们了
  • 华为开发者大会2022,发布鸿蒙开发套件-转载
     11月4日,华为开发者大会2022(Together)在东莞松山湖揭开帷幕,分享了分布式能力、原子化服务、AI、地图、音视频、隐私安全等技术成果,同时基于声明式开发体系发布了鸿蒙开发套件,展示了鸿蒙生态的全新格局。  华为常务董事、终端BG CEO、智能汽车解决方案BU CEO余承东在大会上表示:“经过四年的发展,依托鸿蒙更具生命力的底座,鸿蒙生态已经日渐成熟,更包容、更开放、更具创新力,我们希望与全球开发者一起创新照见未来,共建鸿蒙世界。”    华为常务董事、终端BG CEO、智能汽车解决方案BU CEO余承东   鸿蒙这四年,成绩斐然 2019年,HarmonyOS正式面世; 2020年,华为面向智能硬件生态伙伴发布全新品牌和开放平台——鸿蒙智联; 2021年,智能手机等多种终端全面搭载HarmonyOS,实现同一套系统能力适配多种终端; 2022年,伴随着智能家居、智慧办公、智慧出行、运动健康、影音娱乐五大场景体验持续进化,搭载HarmonyOS的华为设备已达3.2亿。 截至目前,鸿蒙智联已有合作伙伴超2200+,产品发货量超2.5亿;鸿蒙生态开发者超200万+,HarmonyOS原子化服务达50000个;HMS Core开放25030个API,近4万款应用走向全球市场。  此外,华为持续投入鸿蒙生态人才建设,联合清华大学等166所国内高校开设HarmonyOS课程,为2万+学生开发者提供丰富的学习资源,教育部产学合作项目鸿蒙生态方向项目已累计支持95项。  当下,华为正围绕五大场景,通过技术、30000+API、鸿蒙开发套件,构造鸿蒙新世界,使能千行百业加速数字化转型。据华为终端BG首席运营官何刚介绍,华为正在将HarmonyOS的分布式能力、原子化服务、AI、地图、音视频、隐私安全等创新技术和能力开放给开发者。开发者的黄金时代已经到来。    华为终端BG首席运营官、Marketing与销售服务部总裁 何刚  分布式能力是HarmonyOS作为面向万物互联的操作系统最核心能力,支撑超级终端、多设备通信共享、超级桌面等功能。基于分布式软总线、端云协同等能力,让生态设备之间即连即用,操作简单便捷,所有设备协同交互统一风格,并为用户带来内容的跨设备实时同步、畅连语音、视频共享等体验。 轻量化服务是应用生态的重要部分,HarmonyOS原子化服务改变了用户获取服务的方式,为用户带来系统级、卡片化、多入口、跨设备、主动服务的创新体验。即用即走、易于分享、与App共享代码、无需重复开发等特性,将应用化繁为简。 HarmonyOS全场景AI能力使能视频剪辑、阅读、语音助手等体验全面提升,让知识和服务的获取更简单。本次大会上发布了全球首个多语种权威知识的检索生成模型WebBrain,可实现端到端的权威知识的搜索与生成,让阅读和搜问答成为一件容易的事。 在地图能力方面,华为推出全新3D实景地图,通过2500张照片,仅需30分钟即可快速构建出5平方公里的超精细数字世界,并现场展示了令人惊艳的实景3D版东莞溪流背坡村地图,打开Petal出行即可体验。同时,带来更高精度的导航和大场景高精度云端实时渲染能力。 在超高清音视频方面,HarmonyOS通过HDR Vivid和Audio Vivid,配合多种设备为用户带来超高清音视频体验,并正式开放创作工具插件Petal Vivid,帮助内容创作者在三维空间实现全链路高清空间音频创作,还原音乐现场。 在隐私安全方面,HarmonyOS构建全方位安全防护架构,包括芯片安全、系统安全、纯净鸿蒙生态,从开发、发布、运行阶段进行全流程安全管理,保障开发者应用不被篡改仿冒,使消费者获得更加纯净的应用体验。   基于声明式开发体系推出鸿蒙开发套件,帮助开发者发挥潜力 过去一年,HarmonyOS收到了100,000+开发者反馈。分析这些反馈之后,华为终端BG软件部总裁龚体提出了华为面向万物互联时代应用与服务开发的三大理念,与开发者共建鸿蒙生态。“一次开发,多端部署”帮助开发者降低门槛,提升效率;“可分可合,自由流转”可实现跨端连续服务、多端协同;“统一生态,原生智能”是指HarmonyOS与OpenHarmony统一生态,与三方框架共生共荣,HarmonyOS提供分层,简单易用的AI能力,供开发者快速集成,利用系统预置的强大的AI能力,降低智能应用的开发门槛。  华为终端BG软件部 总裁 龚体  为帮助开发者更高效开发应用,快速加入鸿蒙生态,华为从“设计->开发->测试->上架”,端到端切换声明式开发系统,并将应用开发套件升级为“鸿蒙开发套件”,这是HarmonyOS确定以声明式开发体系为方向,应用全面鸿蒙化的一个里程碑。  HarmonyOS Design为HarmonyOS应用开发提供体验一致的高效设计工具,设计资源免费开放,支持开发者快速调用; 更简洁高效的开发语言ArkTS可以降低开发代码量,使应用开发效率提升30%; ArkCompiler进行编译运行机制优化,实现了业界首个动态类型语言AOT编译模式,显著缩短应用启动运行时间; ArkUI渲染机制简化界面渲染算法,显著提升应用界面滑动加载速度; 开发、测试工具及应用上架分发服务也配套声明式开发体系全面升级,实现高效开发、快速测试、一键上架分发。 此外,华为发布了HarmonyOS 3.1开发者尝鲜版本,SDK全面升级ArkTS声明式应用开发。HarmonyOS 3.1将支持1万+ArkTS APIs,拥有声明式UI、应用开发框架、分布式系统服务、多媒体、WEB、通信等多种能力。同时HarmonyOS 3.1 SDK兼容OpenHarmony API能力,华为将持续投入OpenHarmony开源项目共建。  自HarmonyOS发布以来,华为在技术创新、能力开放、产业合作等领域的努力和成果我们看得见,希望华为继续将核心的技术与能力开放给开发者,创造更多可能,实现共赢。 ———————————————— 版权声明:本文为CSDN博主「CSDN资讯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/csdnnews/article/details/127695411 
  • [技术干货] 华为携手去哪儿、九牧等企业,共论鸿蒙生态发展蓝图-转载
     11月5日,在华为开发者大会2022(Together)上,华为携手中软国际、九牧集团、深开鸿、开鸿智谷、去哪儿、鸿湖万联6家鸿蒙合作伙伴代表,分享了基于OpenHarmony技术底座,以及HarmonyOS 的新成果、新应用,展示鸿蒙生态的蓬勃发展和未来趋势。  目前,HarmonyOS生态底座成绩斐然:搭载HarmonyOS的华为设备达3.2亿,较比去年同期提升113%;鸿蒙智联产品发货量超2.5亿,较比去年同期提升212%。  华为终端业务OEM生态产品领域总经理杨海松在致辞中表示,HarmonyOS自诞生之日起,就带着开放、共赢的基因,而不是一个封闭的体系。作为全球首款开源的分布式泛终端操作系统,OpenHarmony具有分布式、全场景的技术优势,可以广泛应用于金融、教育、工业等行业。鸿蒙生态本质就是与合作伙伴分享利益、合作共赢。   随后,六位鸿蒙生态企业代表分享了在鸿蒙生态的心路历程。  中软国际AIG市场部总经理黄志航提到,数字经济是推动经济发展的新动力,物联网是数字化必经之路。目前中软国际正致力于发力国产智能物联网,并基于OpenHarmony产业生态,联合深开鸿创新研发1个数字底座——KaihongOS,1个超级终端管理平台,赋能N个行业应用场景。面向智联网领域,国产化操作系统KaihongOS下链智能终端设备,上承数字软件生态,聚合超级终端管理平台,推动千行百业自主创新发展。  九牧集团高级副总裁林晓伟表示,作为行业首家进入华为全屋智能家居的卫浴品牌,早在2016年,九牧就与华为开展智慧卫浴跨界合作;2019年,九牧联合华为、电信等共同打造行业首个5G智慧产业园;2021年,九牧又率先加入鸿蒙智联生态圈大家庭。九牧将携手华为在数智卫浴场景中持续发力,为全球用户创造美好家居生活新体验。  深开鸿总裁周子翔认为,在万物智联时代,企业需要扎根业务场景,以核心技术结合行业痛点,推动千行百业智慧化变革,共同向万物智联迈进。深开鸿以打造万物智联核心技术、定义万物智联标准、引领万物智联时代发展为目标,以“(1+1)×N”战略为牵引,持续深耕万物智联根技术——KaihongOS和超级设备管理平台,真正实现万物智联时代“联”和“智”,助推产业数智化升级。  开鸿智谷总裁解伟俊指出,基于“在鸿OS”统一操作系统和多款鸿蒙化教育终端,开鸿智谷教育产品解决方案已在湖南、广东试点应用,在教育行业引发了关注,教育生态成功冲破了“坚冰”。同时,开鸿智谷基于公路在鸿OS打造“在鸿控制器”替代传统 PLC,与华为智慧公路军团合作,打造了山东高速鸿蒙智慧隧道样板点,给交通公路行业带来了更智能、更安全、更经济的发展解决方案。  去哪儿旅行市场营销部渠道营销总经理邱雨表示,去哪儿网在鸿蒙分布式能力赋能下,着眼于解决用户痛点,以“让服务找人更精准,人找服务更便捷”为突破口,运用鸿蒙服务卡片寻求新突破实现出行闭环,打造出“智慧出行2.0”模式。自合作以来,去哪儿借助鸿蒙服务卡片日均访问量达200万以上。得益于华为负一屏智能推荐及小艺建议推荐,用户数显著增长。  鸿湖万联产品&研发管理部总经理段威指出,鸿湖万联坚持走强“芯”铸魂自主之路,以SwanLinkOS为催化器,制定了多套从芯片到应用的OpenHarmony解决方案。通过自主可控商用产品、商用软件发行版、OpenHarmony开发板“三箭齐发”锚定创新发展新目标,为信息技术自主生态建设提供“根”技术。  经过三年多的发展和沉淀,鸿蒙正在为各行各业的伙伴搭建一个智能终端操作系统的数字底座,以创新开放生态,为伙伴打开新流量、新入口、新世界。鸿蒙概念的先进性,决定了它有更多的可能性,也决定了它是万物互联时代的重要选项。鸿蒙生态,未来可期。 ———————————————— 版权声明:本文为CSDN博主「开源头条」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/csdnopensource/article/details/127712831 
  • [技术干货] 【云手机】【Android9】【EdXposed】一读就懂一看就会的实践教程
    What Why How鉴于Xposed的作者停更,版本仅支持到Android7, 我们想要在Android9上继续使用Xposed的强大改机和hook能力,就需要另想办法。查阅了大量资料,浏览了大量的博客,发现基本都是真机上的实践,在云手机上不太适用,而想要在云手机上使用,我们可以参考真机的实践并做一些适当的调整。Android9真机上很多人使用 Magisk + Riru + EdXposed,先通过刷机安装Magisk,然后在用Magisk的配套应用安装Riru框架和EdXposed框架,这里面使用Magisk的主要目的是利用其能力获得root权限并具备system分区的读写权限,然后安装并加载作为Magisk插件模块的Riru和EdXposed。在云手机上我们可以不用Magisk去专门获取root权限,直接分析Riru和EdXposed的被安装和加载过程,然后模拟其过程,直接将Riru框架和EdXposed框架相关的文件(jar包、动态链接库so、配置文件等)推进云手机的目标目录即可。笔者实践所用的环境:Windows 64位AndroidStudio(4.1.2版本)具体的实践操作:重点提示:如果不需要修改源码,也可以直接去下载产物,从产物里提取出我们要的。我这里是利用源码自己编译构建出产物。先下载EdXposed、Riru和EdXposedManager的源码- EdXposed (https://github.com/ElderDrivers/EdXposed/tree/v0.4.6.4), 我使用的是v0.4.6.4版本。- Riru(cid:link_2) , 我使用的是v21.3版本。- EdXposedManager(cid:link_0) , 我使用的是v4.5.7版本。再编译EdXposed编译的时候一定要注意AndroidStudio的版本,如果版本过低会在Sync的时候会出现问题,建议使用V4.1.2+的版本,gradle版本和gradle plugin版本都使用源码中默认的即可。Sync成功后,执行gradle的task(:edxp-core:zipSandhookRelease)进行编译构建打包。构建产物是个zip压缩包在edxp-core/release/目录下。- gradle task:- 产物:接着编译Riru同样需要注意AndroidStuio的版本,使用源码默认的gradle和gradle plugin的版本。Sync成功后,执行gradle的task(:module:assembleRelease)进行编译构建打包。构建产物在工程根目录的out目录下。- gradle task:- 产物:接着编译EdXposedManager这个编译构建比较简单,编译产物是个apk文件在app/build/outputs/release目录下。提取构建产物- 解压EdXposed的构建产物中的zip包,从中提取出system文件夹(里面包含framework、lib和lib64)和module.prop文件。(这里有个关键点需要注意的就是产物里有个customize.sh脚本,我们可以参考其实现,将产物的名称进行随机数处理,可以避免被应用检测到。我这里为了方便阅读,没有执行这一步。) - 从Riru的构建产物中的out/magisk_module/system/下的lib和lib64分别提取到libmemtrack.so。整合产物文件 按照以下目录结构进行整理前面提取的产物文件 推送整理好的产物到云手机将前面按照目录整理好的产物文件push到云手机的一个临时目录,如/data/local/tmp/下,然后将system和data分别执行cp -rf 到根目录。重启云手机安装EdXposedManager.apk到云手机将EdXposedManager的构建产物apk文件安装到云手机,启动后可以看到EdXposed框架已安装并激活成功。- 下图为EdXposedManager安装成功- 下图为EdXposed安装并激活成功- 下图为华为云手机Android9系统OK, 搞定,其他版本的也是类似思路可以自己动手实践下~
总条数:181 到第
上滑加载中