首页 文章 精选 留言 我的

精选列表

搜索[开发者工具],共10000篇文章
优秀的个人博客,低调大师

Android开发者指南(18) —— Web Apps Overview

Web Apps Overview 译者署名:happyjiahan 审核:铁骑_PuLee 版本:Android 3.2 r1 在android上发布一个应用程序一般有两种方式:一种是基于客户端模式(Client-Side模式)的应用程序(基于客户端的应用程序需要用AndroidSDK来开发,并且需要在用户的设备上安装一个以.apk为后缀名的文件),另一种是基于浏览器的web应用程序(基于浏览器的应用程序的开发需要遵循web标准,通过一个web浏览器来访问你开发的应用程序,不需要在用户的设备上安装其他任何程序)。 图1.你可以通过两种方式向用户提供你的web内容:一种是通过传统的浏览器的方式,另一种则是通过在Android的应用程序的布局文件中包含一个WebView组件的方式来实现。 那么在你的软件开发过程中,你究竟是应该选择基于客户端的模式(C/S)还是基于浏览器的模式(B/S)呢?其实这个问题要考虑很多个因素,要视你所开发的软件来确定选择哪种模式更合适。这不是我们当前讨论的重点,下面我们来看一下Android为我们提供了哪些方便我们进行web程序开发的支持吧! *支持一系列视窗属性,这些属性允许你根据屏幕的大小正确的确定你的web程序的窗口大小。 *支持css和javascript特性,这些特性能使你可以根据屏幕的像素密度来使用不同的样式和图片资源。 因此,在你决定为android开发一个web应用的时候,可以先不考虑支持多种屏幕方面的问题。因为让你的web页面在各种android设备的屏幕上有很好的效果已经很容易了。 Android提供的另外一个很好的特性就是你现在不必纯粹的在客户端或者纯粹的在web上构建你的应用,你可以将这两者融合在一起。你可以开发一个基于客户端的android应用,但是在这个应用中嵌入了一些web页面(你可以在你的android应用中使用WebView)。图1形象化的展示了你如何通过浏览器或者android应用程序来访问web页面。然而,你不应该开发一个android应用简单到只是为了运行web网站。与此相反,嵌入到你的android应用程序中的web页面应该是专门为某种应用场景设计的。你也可以在android应用程序和你的web页面之间定义一个接口,这个接口允许你web页面中的javascript调用你的android应用程序中的API。 从Android 1.0开始,WebView已经能够在android应用程序的布局文件中嵌入web内容并通过javascript调用android api。在android增加了对不同分辨率的屏幕的支持后,android 2.0在WebKit框架中添加了允许在网页中指定视窗属性的支持,并且能够查询屏幕的分辨率,这样就能够更好的修改上文提到的那些样式和图片资源。因为这些特性都是Android中WebKit框架的一部分,所以不管是Android浏览器还是WebView在视图接口和屏幕分辨率方面都具有相同的特性。 如果你想为Android设备开发web应用,你应该阅读下面的文档: Targeting Screens from Web Apps 如何让你的web应用能够非常合适的呈现在Android设备上,并且能够支持多种屏幕分辨率呢?如果你正在创建一个的web应用并且希望自己的应用至少能够在Android设备上运行(假设你的应用完全部署在网络上),特别是如果你针对的是移动终端或者打算使用WebView,那么这个文档介绍的信息对你来说非常重要。 Building Web Apps in WebView 如何使用WebView将网页嵌入到Android应用中以及如何使用JavaScript调用Android API。 Debugging Web Apps 如何使用JavaScript控制台API调试web应用。 Best Practices for Web Apps 它列举了一系列你应该遵循的实践技巧,帮助你创建出可以在Android设备上高效运行的web应用。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/628187,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android开发者指南(7) —— App Install Location

正文 自API Level 8开始,你可以允许你的应用安装至扩展存储(例如,SD卡)。这是一个可选功能,你可以在你应用的manifest属性android:installLocation里设定。如果你没设定这个属性,那么你的应用将被安装到内置存储,而且将不允许移动到扩展存储上。 为了允许系统可以在扩展存储上安装你的应用,修改你的manifest文件,在<manifest>元素中包含android:installLocation属性,设置其值为"preferExternal"或"auto"。例如: <manifestxmlns:android=http://schemas.android.com/apk/res/android android:installLocation="preferExternal" ...> 如果你定义了"preferExternal",意味着你要求你的应用安装至扩展存储,但是系统不能保证应用肯定会安装至扩展存储。如果扩展存储没有空间了,系统将把应用安装到内置存储。用户可以在两个位置之间移动你的应用。 如果你定义了"auto",表示你的应用可能会安装在扩展存储,但是对安装位置没有特别的偏好。系统将基于很多因素决定你的应用安装到哪里。用户同样可以将应用在两个位置之间移动。 当你的应用安装在扩展存储上: *只要扩展存储已经挂载在设备上,对应用的性能都没有影响。 *.apk文件保存在扩展存储上,但是所有的用户私有数据,数据库,优化过的.dex文件和释放的原生代码都保存在内置存储空间上。 *存储你应用的唯一容器是被一个随机生成的KEY加密存放的,仅仅能被最初安装的设备进行解密操作。因此,安装在SD卡上的应用仅仅针对一个设备可以工作。 *用户可以通过系统设置移动你的应用到内置存储。 警告:当用户启用USB大容量存储以共享文件给计算机或者通过系统设置卸载SD卡,外置存储从设备卸载并且所有运行在外置存储的应用立刻都被结束。 向后兼容Backward Compatibility 将你的应用安装至扩展存储的功能是运行API Level 8(Android 2.2)及以上版本的设备才有效的。使用API Level 8之前的版本编译的已存在的应用,将一直安装在内置存储,并且无法移动至扩展存储(即使设备上运行的是API Level 8版本的系统)。然而,如果你的应用计划支持低于8的API Level,你可以选择针对API Level 8及更高版本支持此特性,并且继续保持与低于API level 8的设备兼容。 为了允许安装在扩展存储并且保持与API Level 8或更低版本兼容: *在<manifest>元素中,包含值为"auto"或"preferExternal"的android:installLocation属性。 *继续保持你的android:minSdkVersion属性不变(小于8的值)并且确定你的应用代码只使用与此level保持兼容的API。 *为了编译你的应用,更改你的build target为API Level 8。这步操作是必须的,因为旧的Android库无法理解android:installLocation属性,并且当该属性存在时,也不会编译你的应用。 当你的应用安装到API Level低于8的设备上时,android:installLocation属性被忽略,并且应用会被安装至内置存储上。 注意:尽管XML标记,例如这个将被之前的平台忽略,但你还是要小心不要使用API Level 8中的编程API,除非你在你的代码中提供向后兼容。关于在应用代码中创建向后兼容的信息,请参考Backward Compatibility这篇文章。 不应当安装在扩展存储的应用 Applications That Should NOT Install on External Storage 当用户启用USB大容量存储来给他们的计算机共享文件时(卸载或移除扩展存储),任何安装在扩展存储上并正在运行的应用都会被结束。实际上此时系统并不知道应用程序的存在,直到大容量存储关闭,或者扩展存储重新挂载到设备上。除了杀死该应用程序使它对用户不可用,它还会使用更严重地方式中断某些类型的应用程序。为了使你的应用始终如你所期望的那样运行,当你使用了下面任何一种特性,那你就不应当允许你的应用安装到扩展存储上去,以避免产生当扩展存储被卸载时所导致的后果: 服务Services 当扩展存储被卸载时,你正在运行的Service将被结束并且不会再重新启动。你可以注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE广播(broadcast) Intent,当安装在扩展存储上的应用对系统重新有效时,会通知你的应用。在那个时候,你可以重新启动你的Service。 定时服务Alarm Services 你注册到AlarmManager的闹钟会被取消。当扩展存储重新挂载时,你必须手工重新注册。 输入法引擎Input Method Engines 你的输入法(IME)将被替换为默认输入法。当扩展存储重新挂载,用户可以打开系统设置以重新启用你的输入法。 壁纸Live Wallpapers 你正在运行的Live Wallpaper会被替换为默认的。当扩展存储被挂载时,用户可以重新选择Live Wallpaper。 Live Folders 你的Live Folder将被从home屏幕被移除。当扩展存储被挂载上时,用户可以重新添加Live Folder到Home界面。 应用程序部件App Widgets 你的App Widget将被从Home界面移除,当扩展存储被挂载时,在系统重置Home应用之前,用户将无法使用你的App Widget(通常直到系统重启)。 Account Managers 在扩展存储被挂载之前,你使用AccountManager创建的账户都是不可见的。 Sync Adapters 在扩展存储被挂载之前,你的AbstractThreadedSyncAdapter和所有相关的同步功能将无法工作。 Device Administrators 你的DeviceAdminReceiver和它的管理能力会被禁止,这会导致设备功能产生无法预料的结果,这种现象会持续到扩展存储重新挂载为止。 Broadcast Receivers listening for "boot completed" T系统在扩展存储挂载到设备前发送广播ACTION_BOOT_COMPLETED。所以如果你的应用安装到扩展存储上,它拥有也接收不到这个广播。 如果你的应用使用的上面列表中的任何一种特性,那你就不应该允许你的应用安装到扩展存储上去。默认情况下,系统将不允许你的应用安装至扩展存储,所以你不需要担心你已存在的应用。然而,如果你不确定你的应用是否永远不会安装到扩展存储上去,那么你可以通过定义android:installLocation值为"internalOnly"来确保其安装至内置存储。尽管这不会改变默认的行为,但它明确的指出,你的应用只会被安装在内置存储上并且作为提醒你和其他开发人员已经做出决定。 应当安装在扩展存储的应用 Applications That Should Install on External Storage 简单来说,任何没有使用上一章节功能列表中的应用安装在扩展存储上都是安全的。大型的游戏更是常见的应该允许安装至扩展存储的应用类型,因为游戏当处于非激活状态时,通常不需要提供额外的服务。当扩展存储无效后,游戏进程被结束,这并不会带来明显的影响,当存储重新有效后,用户可以重新启动游戏(假设游戏在正常的Activity lifecycle中保存了状态)。 如果你的应用的APK文件大小为几兆(M),那你就需要认真考虑是否启用应用安装至扩展存储了,这样的话用户可以保留他们的内置存储空间。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582281,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS免费开发者账号真机调试

亲测可用很久了,总结一下给童鞋用。 Xcode -> Preferences Paste_Image.png  2.选中添加的账号,打开右下角View Details 3.创建调试签名,对iOS Development点击Create,至此Xcode配置完成. Paste_Image.png 4.连接真机,打开一个工程。Build Settings ->code signing Entitlements为空 ->Code signing Identity选择iOS Developer ->Provisioning Profile选择Automatic Paste_Image.png 5.调试设备选择插入的iPhone, 查看General,修改下Bundle Identifier的内容,例如加个后缀,确保改值未被其他账户使用过,Team选择刚添加的账号,然后开始Fix issue(如果没有黄色警告,可以直接run)fix的过程比较久,如果超时了,重试fix。成功后,黄色警告消失。此时可以run了。 Paste_Image.png 6.iOS9 或更高版本,第一次run可能会Xcode会告诉你因为安全问题,该app无法运行,此时可以看到iPhone里已有app,证书信任下.设置 -> 通用 -> 描述文件与设备管理 -> 开发商应用,自己刚才注册的账号 - > 信任"XXX账号" 7.Xcode配置账号后,也可以用instrument查看真机上run的所有进程 打开'instrument' Paste_Image.png 选好设备和 进程(比如我选了微信) ,选模版(Time profile),没有符号表,看不到具体的函数费时。内存也看不到. 文/蓝新(简书作者) 原文链接:http://www.jianshu.com/p/540e722b8eff 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册