精华内容
下载资源
问答
  • 安卓跨平台开发实践

    万次阅读 2019-01-18 10:59:58
    移动端目前市面上主流的平台主要有Android和IOS两大平台,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native,阿里的Weex,Cordova,以及今年Google开发者大会上...

    移动端目前市面上主流的平台主要有Android和IOS两大平台,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native,阿里的Weex,Cordova,以及今年Google开发者大会上介绍的Flutter框架。这些框架各有优缺点,但是到目前为止都没有大规模的推广开来,在我看来主要有一下几个原因:

    1、开发者生态圈还不够成熟,RN是三大跨平台框架关注人最多,生态最活跃的框架, 但是到目前为止也没有到1.0版本(最新的release是0.57.8),更别说后来者的Weex和Flutter了。生态不成熟,意味着开发文档少,可以使用的开源控件少,比如在RN上想做一个最基本的下拉刷新和上拉加载更多的listview都比较费劲。Weex已经贡献给Apache,已经很久没有更新release了。Flutter现在还在beta版本,其发展还有待观察。

    2、性能问题,虽然这几大框架都对渲染性能做了优化,但是相比原生还是差一些,RN和weex都自己实现来了一个浏览器内核(JSCore),因此多了一层js解析,渲染会慢一些。比如RN的listview如果数据量太大就会出现卡顿。Flutter虽然自带绘制引擎,但是跟原生比起来还是有一些距离。

    3、兼容问题,虽然这三大平台的初衷都是为了跨平台(Write/Learn once, run everywhere),但是实际应用中还是需要耗费很多的精力去兼容和适配,比如RN在Android低端机器上表现就不尽如人意,连曾经RN的坚实拥护者Airbnb都宣布放弃使用RN了。

    4、开发集成成本,三个框架都需要学习新的语言React,vue,dart,weex的最大优势就是入门简单,但是版本迭代慢,RN上手门槛高,开发调试难度大,集成RN和weex框架还会加入很多so文件,增加安装包的大小至少在10M左右,这还不包括第三方的library。Flutter因为刚出来,应用的还不多,其效果还有待观察。

    但是移动开发的跨平台是大势所趋,可以节省开发成本,提高开发效率,迅速响应业务变化,现在主流的应用还是使用H5和原生的通信来实现跨平台的开发。Android和IOS平台都有自己内置的浏览器内核webkit框架,跨平台的本质就是用H5/JS编写的代码能够分别运行在Android和IOS的WebView中,从而实现了一套代码两个平台都能运行的目的。

     

    在Android平台上要实现Native和JS的通信主要通过WebViewClient和WebChromeClient两个类来实现。WebViewClient的作用是帮助WebView处理各种通知,事件请求,其主要的方法有:onLoadResource,onPageStart,onPageFinished,onReceiveError,shouldOverrideUrlLoading等方法;WebChromeClient处理JS页面的事件响应,比如网页中的对话框,网页图标,网站标题,网页的加载进度等事件,对应的响应方法有onJsAlert, onJsConfirm, onJsConsole, onProgressChanged, onReceiveIcon, onReceiveTitle等。

    要实现Java和JS通信就要:

    1,解决Java调JS;

    2,JS调Java。

    Java调用JS通过loadUrl和evaluateJavaScript两个方法。

    通过webview.loadUrl(“javascript:alert(‘hello world’)”),可以在android平台将js代码注入到html页面,loadUrl方法可以直接调用js中定义的函数,也可以把android本地的assets目录下的js文件以字符串的形式注入到html页面中,但是这个注入时机一定要等到html页面加载完毕才能做,即在WebViewClient.onPageFinished的回调函数中调用,这样就相当于在html页面中直接引用了js资源文件。对于客户端来说,java调用js本质上是拼接js字符串的过程,但是调用loadUrl不能直接获取js函数的返回值。要实现Java调用js函数后,可以获取js函数的返回值可以使用webview.evaluateJavaScript方法,但是该方法只有在android4.4及以上的版本才可以使用。其他用法和loadUrl一致。

    JS调用Java可以分为三种:1,对象映射;2,URL拦截;3,JS方法拦截。

    对象映射是通过webview.addJavascriptInterface(new JSObject(), “javaObject”),这样可以js代码中可以直接调用javaObject对象,从而实现JS调用Java的功能,但是这个方法在android4.2以下会有安全漏洞,利用反射机制调用Android API getRuntime执行shell命令进行攻击,比如遍历sdcard,发送短信,安装木马APK等。

    URL拦截是指在html页面通过iframe.src,window.open,documention.location或者href,这四种方法都可以在html页面中打开一个连接,从而会触发Java中的WebViewClient.shouldOverrideUrlLoading方法。例如在js中执行

     

    在shouldOverrrideUrlLoading中可以根据约定的协议格式(Scheme)和协议名(Authority)获取从JS中传输过来的数据(Data)。

    在JS中调用alert,console,prompt,confirm等方法就会触发WebChromeClient的onJsAlert,onConsoleMessage,onJsPrompt,onJsConfirm方法的回调。比如在js中可以调用

     

    在onJsPrompt的message中可以获取prompt的内容,然后根据约定的协议格式可以获取数据。

    为了解决JS和Native的通信问题,需要使用一个JSBridge框架(https://github.com/lzyzsd/JsBridge)用来负责H5和Java之间的通信,需要解决的问题:

    1、JS互相Java调用后如何回调,将responseData传递回去;

    2,JS调用Java有三种方法,如果选择哪一种方法比较合适。

    针对问题1,可以在java端和js端定义一个数据结构: Message={callbackId:xxx, handleName:xxx,responseData:xxx,responseId:xxx}。将回调函数保存在callbackId中,当JS或者Java处理完数据回调的时候再讲保存在callbackId的回调函数存放在responseId,相应的回调的数据存放在responseData中,这样就能响应JS或者Java调用后的回调消息。

    Js调用Java的方法虽然有三种,但是addJavaScriptInterface存在安全性问题一般不建议使用,JS中的alert,console方法都会在Html页面比较常用,confirm和prompt虽然不常用但是某些手机系统版本上会有对话框弹出,不通用,所以比较好的选择是url拦截,可以通过iframe.src触发shouldOverrideUrlLoading。

    JsBridge框架的使用主要分为:

    1,在H5页面加载完毕注入一个本地的js文件;

    2,Java代码中注册BridgeHandler,用来处理JS发送过来的消息;

    3,在本地注入的js文件中定义_handleMessageFromNative,用来接收java传递过来的消息;

    4,因为客户端注入js是异步的,所以需要在js文件中注册Event监听器,成功后通知H5。

    Native调用JS,例如通过

    webview.loadUrl(

    "javascript:WebViewJavascriptBridge._handleMessageFromNative('{

    \"callbackId\":\"JAVA_CB_2_559\",\"data\":\"just data from java\"

    }')");

    这样就可以调用JS的handleMessageFromNative方法,传递的数据格式是Message,callBackId响应js的回调,发送前会存储到HashMap中,js回调的时候根据JAVA_CB_2_559找到对应的的回调函数处理js的响应数据,具体流程如下:

     

    Js调用Java,通过sendMessageQueue将传递的信息转换成

    Message= {data: {…}, callbackId: "cb_1_1234"}

    其中callbackId是js的回调函数。然后通过

    iframe.src=’yy://return/_fetchQueue/[{"data":"xxxx","callbackId":"cb_1_4321"}]’,

    触发shouldOverrideUrlLoading方法,java处理完js传递过来的data后,将回调函数cb_1_4321设置到

    Message={responseId: cb_1_4321, responseData:XXX},

    这样在js中就能处理回调函数。具体的流程图如下:

     

    JsBridge框架提供两种Handler方法,registerHandler方法需要传入handler的名字,这样需要IOS,Android,H5三方约定这个名字,因为H5开发的的业务需求变化比较快,而且H5调用原生的方法也是随机的,所以每次都用registerHandler约定名字需要使用全局变量存放这些handler方法名不便于扩展,所以实际开发中使用defaultHanlder,H5调用原生方法的的时候约定一个cmd,即约定data={cmd:xxx,time:data:{…}},只要在原生代码中对cmd命令有对应的功能,那么H5页面就可以随时调用原生的方法。

    JSBridge的改进建议,由于webview调用js方法的时候必须在主线程才能生效,所以偶然会出现java调用js失败。另外,Js调用Java偶尔也会失败,因为iframe机制不能保证每次都能触发shouldOverrideUrlLoading回调。目前JSBridge采用的是url scheme的方式,如果不考虑Android4.2以下,IOS7以下,可以采用的交互,比如直接使用addJavaScriptInterface在JS页面注入一个Native对象,将之前触发u步骤变为使用这个Native对象向Native发送消息。这种方法只是一个可行的方案,实际使用过程中目前的JSBridge方案基本上满足业务需求了。

    作者:周智

    宜信技术学院

     

    展开全文
  • 移动端目前市面上主流的平台主要有Android和IOS两大平台,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native,阿里的Weex,Cordova,以及今年Google开发者大会上...
        

    移动端目前市面上主流的平台主要有Android和IOS两大平台,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native,阿里的Weex,Cordova,以及今年Google开发者大会上介绍的Flutter框架。这些框架各有优缺点,但是到目前为止都没有大规模的推广开来,在我看来主要有一下几个原因:

    1、开发者生态圈还不够成熟,RN是三大跨平台框架关注人最多,生态最活跃的框架, 但是到目前为止也没有到1.0版本(最新的release是0.57.8),更别说后来者的Weex和Flutter了。生态不成熟,意味着开发文档少,可以使用的开源控件少,比如在RN上想做一个最基本的下拉刷新和上拉加载更多的listview都比较费劲。Weex已经贡献给Apache,已经很久没有更新release了。Flutter现在还在beta版本,其发展还有待观察。

    2、性能问题,虽然这几大框架都对渲染性能做了优化,但是相比原生还是差一些,RN和weex都自己实现来了一个浏览器内核(JSCore),因此多了一层js解析,渲染会慢一些。比如RN的listview如果数据量太大就会出现卡顿。Flutter虽然自带绘制引擎,但是跟原生比起来还是有一些距离。

    3、兼容问题,虽然这三大平台的初衷都是为了跨平台(Write/Learn once, run everywhere),但是实际应用中还是需要耗费很多的精力去兼容和适配,比如RN在Android低端机器上表现就不尽如人意,连曾经RN的坚实拥护者Airbnb都宣布放弃使用RN了。

    4、开发集成成本,三个框架都需要学习新的语言React,vue,dart,weex的最大优势就是入门简单,但是版本迭代慢,RN上手门槛高,开发调试难度大,集成RN和weex框架还会加入很多so文件,增加安装包的大小至少在10M左右,这还不包括第三方的library。Flutter因为刚出来,应用的还不多,其效果还有待观察。但是移动开发的跨平台是大势所趋,可以节省开发成本,提高开发效率,迅速响应业务变化,现在主流的应用还是使用H5和原生的通信来实现跨平台的开发。

    Android和IOS平台都有自己内置的浏览器内核webkit框架,跨平台的本质就是用H5/JS编写的代码能够分别运行在Android和IOS的WebView中,从而实现了一套代码两个平台都能运行的目的。

    图片描述
    在Android平台上要实现Native和JS的通信主要通过WebViewClient和WebChromeClient两个类来实现。WebViewClient的作用是帮助WebView处理各种通知,事件请求,其主要的方法有:onLoadResource,onPageStart,onPageFinished,onReceiveError,shouldOverrideUrlLoading等方法;

    WebChromeClient处理JS页面的事件响应,比如网页中的对话框,网页图标,网站标题,网页的加载进度等事件,对应的响应方法有onJsAlert, onJsConfirm, onJsConsole, onProgressChanged, onReceiveIcon, onReceiveTitle等。

    要实现Java和JS通信就要:

    1,解决Java调JS;2,JS调Java。

    Java调用JS通过loadUrl和evaluateJavaScript两个方法。通过webview.loadUrl(“javascript:alert(‘hello world’)”),可以在android平台将js代码注入到html页面,loadUrl方法可以直接调用js中定义的函数,也可以把android本地的assets目录下的js文件以字符串的形式注入到html页面中,但是这个注入时机一定要等到html页面加载完毕才能做,即在WebViewClient.onPageFinished的回调函数中调用,这样就相当于在html页面中直接引用了js资源文件。

    对于客户端来说,java调用js本质上是拼接js字符串的过程,但是调用loadUrl不能直接获取js函数的返回值。要实现Java调用js函数后,可以获取js函数的返回值可以使用webview.evaluateJavaScript方法,但是该方法只有在android4.4及以上的版本才可以使用。其他用法和loadUrl一致。

    JS调用Java可以分为三种:1,对象映射;2,URL拦截;3,JS方法拦截。

    对象映射是通过webview.addJavascriptInterface(new JSObject(), “javaObject”),这样可以js代码中可以直接调用javaObject对象,从而实现JS调用Java的功能,但是这个方法在android4.2以下会有安全漏洞,利用反射机制调用Android API getRuntime执行shell命令进行攻击,比如遍历sdcard,发送短信,安装木马APK等。

    URL拦截是指在html页面通过iframe.src,window.open,documention.location或者href,这四种方法都可以在html页面中打开一个连接,从而会触发Java中的WebViewClient.shouldOverrideUrlLoading方法。例如在js中执行
    图片描述
    在shouldOverrrideUrlLoading中可以根据约定的协议格式(Scheme)和协议名(Authority)获取从JS中传输过来的数据(Data)。

    在JS中调用alert,console,prompt,confirm等方法就会触发WebChromeClient的onJsAlert,onConsoleMessage,onJsPrompt,onJsConfirm方法的回调。比如在js中可以调用
    图片描述
    在onJsPrompt的message中可以获取prompt的内容,然后根据约定的协议格式可以获取数据。

    为了解决JS和Native的通信问题,需要使用一个JSBridge框架(https://github.com/lzyzsd/JsB...)用来负责H5和Java之间的通信,需要解决的问题:

    1、JS互相Java调用后如何回调,将responseData传递回去;

    2,JS调用Java有三种方法,如果选择哪一种方法比较合适。

    针对问题1,可以在java端和js端定义一个数据结构: Message={callbackId:xxx, handleName:xxx,responseData:xxx,responseId:xxx}。将回调函数保存在callbackId中,当JS或者Java处理完数据回调的时候再讲保存在callbackId的回调函数存放在responseId,相应的回调的数据存放在responseData中,这样就能响应JS或者Java调用后的回调消息。

    Js调用Java的方法虽然有三种,但是addJavaScriptInterface存在安全性问题一般不建议使用,JS中的alert,console方法都会在Html页面比较常用,confirm和prompt虽然不常用但是某些手机系统版本上会有对话框弹出,不通用,所以比较好的选择是url拦截,可以通过iframe.src触发shouldOverrideUrlLoading。

    JsBridge框架的使用主要分为:

    1,在H5页面加载完毕注入一个本地的js文件;

    2,Java代码中注册BridgeHandler,用来处理JS发送过来的消息;

    3,在本地注入的js文件中定义_handleMessageFromNative,用来接收java传递过来的消息;

    4,因为客户端注入js是异步的,所以需要在js文件中注册Event监听器,成功后通知H5。

    Native调用JS,例如通过webview.loadUrl("javascript:WebViewJavascriptBridge._handleMessageFromNative('{"callbackId":"JAVA_CB_2_559","data":"just data from java"}')");

    这样就可以调用JS的handleMessageFromNative方法,传递的数据格式是Message,callBackId响应js的回调,发送前会存储到HashMap中,js回调的时候根据JAVA_CB_2_559找到对应的的回调函数处理js的响应数据,具体流程如下:

    图片描述
    Js调用Java,通过sendMessageQueue将传递的信息转换成Message= {data: {…}, callbackId: "cb_1_1234"}其中callbackId是js的回调函数。

    然后通过iframe.src=’yy://return/_fetchQueue/[{"data":"xxxx","callbackId":"cb_1_4321"}]’,触发shouldOverrideUrlLoading方法,java处理完js传递过来的data后,将回调函数cb_1_4321设置到Message={responseId: cb_1_4321, responseData:XXX},这样在js中就能处理回调函数。

    具体的流程图如下:
    图片描述

    JsBridge框架提供两种Handler方法,registerHandler方法需要传入handler的名字,这样需要IOS,Android,H5三方约定这个名字,因为H5开发的的业务需求变化比较快,而且H5调用原生的方法也是随机的,所以每次都用registerHandler约定名字需要使用全局变量存放这些handler方法名不便于扩展,所以实际开发中使用defaultHanlder,H5调用原生方法的的时候约定一个cmd,即约定data={cmd:xxx,time:data:{…}},只要在原生代码中对cmd命令有对应的功能,那么H5页面就可以随时调用原生的方法。

    JSBridge的改进建议,由于webview调用js方法的时候必须在主线程才能生效,所以偶然会出现java调用js失败。

    另外,Js调用Java偶尔也会失败,因为iframe机制不能保证每次都能触发shouldOverrideUrlLoading回调。

    目前JSBridge采用的是url scheme的方式,如果不考虑Android4.2以下,IOS7以下,可以采用的交互,比如直接使用addJavaScriptInterface在JS页面注入一个Native对象,将之前触发u步骤变为使用这个Native对象向Native发送消息。这种方法只是一个可行的方案,实际使用过程中目前的JSBridge方案基本上满足业务需求了。

    作者:周智         宜信技术学院官网:http://college.creditease.cn/...

    展开全文
  • 在.NET Conf 2019 大会的“聚焦Blazor”...Mobile Bindings 项目意在使用 Microsoft Blazor 和.NET for iOS/Android 实现跨平台移动应用开发。类似于 React Native ,Mobile Bindings 同样使用原生 UI 控件提供原...

    在.NET Conf 2019 大会的“聚焦Blazor”活动中,微软正式发布了新的实验性项目 Mobile Blazor Bindings 。Mobile Bindings 项目意在使用 Microsoft Blazor 和.NET for iOS/Android 实现跨平台移动应用开发。类似于 React Native ,Mobile Bindings 同样使用原生 UI 控件提供原生的用户观感体验。

    简而言之,Mobile Blazor Bindings 实现了 Blazor 编程模型向移动端开发的扩展。正如微软.NET 工程师 Eilon Lipton 撰文指出,对于一直使用 XAML、Razor 模板和 Xamarin 构建混合移动端应用的 XAML 和 Xamarin 开发人员,以及使用 Blazor 开发 Web 应用的开发人员而言,Mobile Bindings 独具吸引力。

    Mobile Blazor Binding 的成功与否,取决于开发人员是否愿意在原生移动应用中使用具有 Razor 语法和特性的 Blazor 风格编程模型,去编写标记语言,实现数据绑定。

    Lipton 给出了一段示例代码,直观展示了具有一定 Razor 经验的 Web 开发人员如何使用 Mobile Blazor Bindings 开发移动应用。示例代码定义了一个具有按钮和点击计数器的基本视图。

    c53996695cff67377c81dd8be901d1fe.png

    9802b90a11618b5f0e6e94f8155a6f55.gif
    图片来源:微软官方文档。

    类似于 Razor 组件在混合应用开发中的一般用法,上面的代码段中同时使用了 Xamarin.Forms StackLayout 和原生 C#代码处理 UI 行为。要在 Web 应用中实现同样的基本视图,可使用类似的代码结构,只是 UI 描述需要使用 HTML 标记替代 Xamarin.Forms 标记。

    微软在其.NET Conf 2019 大会上提出,Mobile Blazor Bindings 意在将 Blazor 扩展为一种全栈开发框架。下图清晰阐释了 Blazor 发展的各个维度,以及 Mobile Blazor Bindings 的适用之处。

    be2b705485b94ac4436f8cc4d3ac8e15.png

    图片来源:微软官方文档。

    开发人员对微软的这次官宣反应不一。尽管一些人对 Blazor 工具箱的新功能扩展持欢迎态度,也有一些开发人员对引入.NET 技术创建 UI 所导致开发选择上的复杂性表达了担忧。开发人员将难以在技术投入上做出抉择,团队的发展方向也会深受困扰。一些人进一步担心微软未来将会终止其中一些项目的发展,导致投入其中的开发人员无所适从。

    更具体而言,一些持批评意见的人着重指出,Blazor 的 Web 和移动应用事实上并未共享相同的 UI 定义,削弱了在这两个平台上使用单一编程模型的价值。此外,批评人士希望微软能将 Blazor 的发展重心聚焦于 Progressive Web Apps 和 WebAssembly ,将移动端开发交给 WPF 、 UWP 和 Xamarin 。

    Blazor 基于.NET Standard 2.0 运行,其原生 UI 组件依赖 Xamarin.Forms。Mobile Blazor Bindings在 GitHub 上开源提供,需.NET Core 3.0/3.1 支持。

    展开全文
  • 基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件

    万次阅读 多人点赞 2019-02-27 12:48:36
    基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件 课程介绍 课程地址:https://edu.csdn.net/course/detail/10750 本课程是一个音视频相关的Qt项目的实战教程,涉及Qt开发实际项目的完整流程。基于qt ffmpeg opengl...

    [开源]基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件

    码云地址 https://gitee.com/Barryda/QtScrcpy
    github地址 https://github.com/barry-ran/QtScrcpy

    课程介绍

    课程地址:https://edu.csdn.net/course/detail/10750
    本课程是一个音视频相关的Qt项目的实战教程,涉及Qt开发实际项目的完整流程。基于qt ffmpeg opengl实现了安卓手机实时投屏到电脑端,电脑端键鼠控制安卓手机的功能。可以自定义按键映射从而实现键鼠玩吃鸡手游的效果。基于Qt的跨平台特性,本软件支持windows,linux,mac三大主流平台。本课程适合以下人员:

    • 计算机专业的学生:学习了解公司中实战项目的开发流程,掌握自己的一个实战项目,对于毕业答辩或者找工作在简历中增加实战经验都是非常有帮助的。
    • Qt新手:你可以从中学到如何使用Qt开发一个实际的项目,学习巩固Qt基础知识,使自己的Qt技能更上一层楼。
    • 工作多年的程序员:常年从事Qt或者客户端开发,准备跳槽了发现很多公司要求有音视频相关的技能,那么本课程中的音视频介绍,H264视频解码,opengl渲染yuv等技术点可以带你进入音视频领域。

    这里有绿色包供你下载体验,windows版本绿色包链接:https://pan.baidu.com/s/1C4OVUj4FAHnQSMyzNhBgvA 密码:a5nr 购买课程后,课程全部源码在第二章第4节课件中下载,可到QtScrcpy学员群 901736468 中和同学们学习交流,讲师会在学员群给同学答疑解惑。

    软件介绍

    • 截图

    安卓手机实时投屏到电脑,不是模拟器!不是模拟器!不是模拟器!重要的事情说三遍
    Windows平台展示
    mac平台展示
    linux平台展示

    • 点此查看视频展示
    • 功能
      • 实时同步安卓屏幕到电脑
      • 电脑鼠标键盘实时控制安卓手机
      • 支持游戏映射(键鼠吃鸡)
    • 优点
      • 低延迟:300ms以内,720p吃鸡感觉不到延迟,具体根据视频分辨率有关
      • cpu占用率低:视频渲染使用GPU
      • 高分辨率:可调节,最大支持安卓终端的原生分辨率
      • 跨平台:同时支持win,mac,linux
      • 支持usb+无线连接
    • 新增功能
      • mp4录制
      • 点亮屏幕,调节音量等辅助功能
      • 视频分辨率调节
        技术栈

    • Qt相关技术实战

      • Qt多线程,多进程,自定义事件
      • 网络编程
      • qss自定义界面
      • 键盘鼠标事件处理
    • 音视频

      • 音视频基础知识
      • ffmpeg解码h264为yuv
      • opengl基础
      • opengl渲染yuv

    你的收获

    • 学习巩固Qt开发相关内容,提高使用Qt开发熟练度
    • 掌握基于Qt开发跨平台实战项目的基本流程
    • 掌握音视频相关知识
    • 锻炼独立解决问题的能力,学会搜索
    • 履历中增加音视频项目的经验
    • 提高c++编码实战能力
    • 本项目完整代码,使用QtCreator直接编译运行
    • 加群与志同道合的朋友一起学习QtScrcpy,群聊号码:901736468
      互相交流,共同进步

    技术要求

    • C++必须会
    • 网络编程必须了解:知道tcp协议,会用socket
    • Qt基础最好会,或者其他界面编程经验
    展开全文
  • 基于Qt ffmpeg开发安卓实时投屏软件,将安卓手机视频实时投屏到电脑端,并使用电脑键鼠实时控制安卓手机,还支持键鼠玩吃鸡手游。项目中使用Qt、ffmpeg等开发,涉及多进程、多线程、网络编程、视频解码、视频渲染...
  • 有Android开发3-5年基础,希望突破瓶颈,成为架构师的小伙伴,可以关注我,在我的个人介绍栏目免费获取 或者点击:【点击我的GitHub免费领取】 《Android学习PDF+架构视频+面试文档+源码笔记》来获取学习资料提升...
  • Cordova跨平台Web App开发指南(安卓篇) 打包ios包必须用苹果系统,没钱买IOS设备,这里只介绍Android平台打包 一、Cordova简介’ 在进行Cordova开发之前, 先花点时间了解一下的Cordova的原理和Cordova的框架...
  • 运行模拟器后提示 could not locate the Android debug brige 无法找到安卓的调试桥,请问如何解决,谢谢各位大大 么么哒
  • 有人说mono行,但我安了mono,还是只有c#里面有安卓app的项目,百度也搜不到。。 谁能给我一个详细点的解答啊
  • win10+VS2015 进行跨平台开发安卓的时候,运行了模拟器,但是模拟器不运行我的项目,好纠结..得不到我想要的 Holle word ![图片说明](https://img-ask.csdn.net/upload/201510/12/1444620194_649441.png)
  • GUI跨平台开发

    千次阅读 2019-06-13 22:45:54
    GUI跨平台开发 本文全平台是指:台式电脑系统WINDOWS/LINUX/MAC OS;智能设备系统IOS和安卓。 名称//语言//支持平台//官网 3D游戏引擎:虚幻||C++||全平台+游戏机平台+VR 3D游戏引擎:unity||C#||全平台+游戏...
  • 此文章介绍uni-app跨平台开发时关于安卓的打包到上架的完成流程,同时也会列举在整个过程中的注意事项,阅读文章的前提是是建立在你已经有共可打包的代码和已付费的google play的账号, 2 uni-app 安卓打包流程 ...
  • 基于Qt ffmpeg开发跨平台安卓实时投屏软件 上海字节跳动高级开发工程师...
  • App跨平台开发框架分析

    千次阅读 2017-09-11 20:52:39
    所谓的跨平台app开发就是一套代码写完以后可以多端发布运行到各个平台,比如:安卓、iOS、web。 原生开发是一对一的,安卓、... 目前移动端App有很多都已经采用跨平台开发技术。流行的技术有Html5混合开发和Reat Nativ
  • 不仅如此,就连 .Net 开发框架环境也竟然「开源」并且跨平台支持 Mac 及 Linux 了!! 同时宣布的 Visual Studio 2015 和 .Net 2015 预览版均也开放下载了。作为微软跨平台新战略下的开发工具, VS2015 支持开发...
  • 用QT开发跨平台的浏览器或者其他应用是非常不错的,大家可以积极尝试。 WebView { id: webView anchors.fill: parent url: initialUrl onLoadingChanged: { if (loadRequest.errorString) ...
  • 在使用Delphi 10.3.3或者10.4...Delphi跨平台可视化快速开发软件APP应用 您可以将SDK和NDK文件夹复制到硬盘或另一个硬盘上的任何位置,因为这两个库是通过line命令配置的,就像过去一样,在操作系统... DOS,Linux等
  • 前端javascript通过调用安卓的android java代码.这也是手机跨平台hybrid混合开发app的精髓所在.zip
  • 参考: http://rensanning.iteye.com/category/194870 http://www.coderblog.in/category/mobile/titanium http://rensanning.iteye.com/blog/1457900 http://rensanning.iteye.com/blog/1458752 ...
  • [移动应用]跨平台开发框架

    千次阅读 2019-04-10 12:17:28
    看了Flutter,NativeScript,React Native跨平台框架。 使用 其中React Native使用过,写过一些demo,在iOS和安卓上UI体验感还可以, 而NativeScript体验过,感觉也非常不错,与React Native比较像。 Flutter没有用...
  • 之前我用adt bundle is for windows 做安卓开发,所以,用cocos2dx 也用的windows平台。而不是linux.但普遍认为linux+安卓studio要比winodws+eclipse要好。所以,建议前者。  本来配置好windows下的coco2dx的下的...
  • MLN是一个移动跨平台开发框架,让开发者用一套代码编写Android,iOS应用。MLN设计思路贴近原生开发,客户端开发者的经验,可以Swift迁移到MLN上,轻松构建出跨平台移动应用。 专为客户端开发者设计。 增加包体积极...
  • 移动跨平台开发{一}

    2016-11-09 14:13:26
    微软跨平台移动开发 VS 2015支持C#开发IOS和安卓有两种方式:使用cordova (以前叫做phoneGAP),和xamarin的方式来开发。而两个开发工具并没有集成到VS中去。Cordova开发一些基本的页面应用还行,使用html+css+js的...
  • 所以有 Android 平台存在就会有需求,而利用跨平台开发,能让我们的能力更快的覆盖到 iOS 平台,同时如 ReactNative、Flutter、Weex 等,能够让你逐步接触并熟悉 Web 前端的世界,之后如 uni-app 、myvue 、...
  • 跨平台开发 -- C# 使用 C/C++ 生成的动态链接库 原文:跨平台开发 -- C# 使用 C/C++ 生成的动态链接库 操作环境:Visual Studio 2017 如何实现 使用 C# 进行嵌入式开发? .NET Core 虽然实现了跨...
  • PropertyCross, 帮助开发人员选择跨平台移动开发的框架 #Introduction现在开发者发现自己不得不为各种移动平台( ( iOS,安卓,Windows Phone,。) ) 编写应用程序,其中每个平台都有自己的'本机'开发语言。工具和...
  • 基于Qt ffmpeg开发安卓实时投屏软件,将安卓手机视频实时投屏到电脑端,并使用电脑键鼠实时控制安卓手机,还支持键鼠玩吃鸡手游。项目中使用Qt、ffmpeg等开发,涉及多进程、多线程、网络编程、视频解码、视频渲染...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 943
精华内容 377
关键字:

安卓跨平台开发