精华内容
下载资源
问答
  • 初识Android:10年的时候,我无意之中认识了一位程序员,经他的引导走进了编程的黑暗世界之中,当时选择学什么语言确实是个比较纠结的过程。他是做Android的,推荐我去跟他,我理性的分析了我自身的状况,毕业几年...

    编程语言是个随互联网时代发展逐步更新的产物,面对互联网更新换代的速度,程序员们如何根据时代的变化选择不同的编程工具,选取适应互联网发展的方向才能与时俱进。

    初识Android:

    10年的时候,我无意之中认识了一位程序员,经他的引导走进了编程的黑暗世界之中,当时选择学什么语言确实是个比较纠结的过程。他是做Android的,推荐我去跟他学,我理性的分析了我自身的状况,毕业几年没接触过了编程开发,脑子怕已经生锈了,面向对象是个比较易于理解的形式;分析互联网语言编程应用范围,最直接的不过于编程语言的排名了,又通过咨询了些大学同学,了解了java是企业应用比较广泛的语言,

    14.html

    所以就选择了Java;还有如果学了Java,即使以后再转Android也会比较容易,这想法不幸让我后来的行动言中了;自己在社会几年后发觉学习的自觉性没有那么强了,就报了个培训班,俗话说师傅领进门,修行在个人,确实是。我报班就是为了踏入程序员的大门,熟悉一些编程思想后,自己再吃点苦,努点力就能行了。

    正当Android开发应用在互联网上如火如荼的时候,我还是禁不住诱惑,选择了转语言。

    首先,是因为Android的基础也是Java;

    其次,是在之前的工作中经常要和Android打交道,最开始接触到和Android相关的就是webview+html了,网页与Android程序之间的交互,也让我对Android产生了浓厚的兴趣。

    我的Android学习方法:

    1.注重基础知识的学习;

    在工作之余我买了一本李刚的《疯狂Android讲义》,熟悉了些基础的控件使用,Android的一些基础的API,如果你Java基础不太好,可以也看看李刚的《疯狂Java讲义》。一开始不懂没关系,每个控件自己都要实操下比较好,加深下印象,比如TextView,你可以熟悉下如何设置字体、颜色、大小,Button你可以熟悉下如何更换背景、文字、圆角等等,这样学好基础对以后的高级开发才能更加游刃有余。

    2.结合案例Demo实际操作;

    我们手机中的每一个应用都是由一个个的控件组合而成的,我们可以结合案例实现某一个功能,一个功能当中会涉及到很多的Android知识,页面如何布局、页面间如何传值、本地存储如何实现,一开始我们不要求大而全,我们先做到精而细,这样一个个的螺丝钉我们磨好了才能组装变形金刚。遇到问题解决问题,不懂得就去查谷歌,去查CSDN,开源中国,技术论坛,多加些开发者交流群,找开源代码学习就去github,熟能生巧。

    3.自己尝试做一个APP;

    螺丝钉磨好了,砖头、水泥都准备好了,我们就可以自己尝试盖大楼了。可以先做些轻应用,最简单的办法的就是找你手机里的应用,从第一个页面开始去一点点模仿,去思考他的功能是如何实现的,复制出一个近似于它的Demo程序,注意应用当中的每个细节,细节可能就是一个难点,凡是难点,万能的网络皆有答案。没有答案,那你就要做Number one!

    做Android之前我一边面试Android,一边去系统的自学了些基础开发,半个月时间就进入了Android程序员的行列之中了。

    Android-UI开发入门比较简单,如果想研究底层框架,还是要多学习源码。

    这就是我转Android的一个学习过程想法,希望对象从事Android开发的朋友有所帮助,有兴趣交流开发技术的可以看下公众号,微码农:wxdroid,程序员朋友的交流社区,后期会更新自己录制的完整的Android视频自学实战教程。

    微码农,一个码农的开发经历日记。

    展开全文
  • 入职新公司后如何快速上手项目

    千次阅读 多人点赞 2021-07-23 00:01:44
    什么非要让你给数据库的表和字段加上注释前言一、真实经历 前言 最近连续接触到俩个新项目,虽说一个是Phalcpn框架、另一个原生。让我恐吓的不是代码,而是数据库。 所以说本文的主题是为什么非得给数据库的表和...

    前言

    程序员这个行业的流动性是非常高的,每进入一家新公司,工作内容都是全新的。

    假如你是刚毕业没关系,如果你有3年以上的工作经验,就不可能让你长时间慢慢地熟悉这个项目。

    只能在最短的时间内,快速了解项目,快速上手。

    接下来咔咔就用自己的经验和大家聊聊入职一家工作后应该如何快速上手。

    一、正式上岗

    第一天根据Offer的入职时间到人事报到完成入职手续。

    当你完成入职手续后,人事会把你带到你的工位,此时你的岗位已被确定,下一步就是正式开始工作。

    你需要下载所有工作所需的环境,这里咔咔建议大家都注册一个谷歌账号,将平时用到的东西都保存到标签里边。

    这样无论换电脑还是换工作都能直接登录谷歌账号进行书签同步,可以快速完成所有前期工作。

    然后去找你的组长或者主管要开发资料,开发资料无非就是接口文档、数据库信息、代码库、代码规范、建表规范这几种,开发需要这几个资料也就行了。

    在获取资料之后,首先将代码拉下来,根据文档先使项目运行,如果该项目在运行过程中出现任何问题,需要对其记录,因为你不可能只部署这一次,将这些记录下来便于你后期查阅。

    如果你根本把项目运行不起来,此时就不要自己瞎捣鼓了,赶紧去找同组的小伙伴进行救助。别因好面不愿问,不知道怎么弄就问。不怕工作上有问题,就怕你没问题。

    尽量在第一天就把项目在你的本地跑起来,可以做简单的调试工作。

    下班回家后再做一件事,在家里重新搭一份项目以防不时之需。要知道bug可不会专挑你在公司的时间冒出来。

    只要在第一天解决如下问题即可。

    • 配置本地环境
    • 向上级领导索要开发资料
    • 在本地运行并调试项目

    二、考虑做什么而不是怎样做

    你可以想一下在上家公司的工作,要在一个新的项目上开始写东西,要先知道那些东西呢?

    大部分小伙伴反应都是技术,作为开发,当然技术是第一位的,于是一个猛子就扎进了代码中,然后,研究代码实现过程。

    这个方法是不被推荐的,技术方面当然也需要了解, 但是第二天就不应该这样做。

    作为技术都是一个bug一个bug改过来的,在脑海里已经潜移默化了。总在考虑如何做的问题,但我们首先要理解的是做什么

    做什么这个问题,只有产品才能给你最好的解释,所有的业务都是在产品中一点点构建。

    找到产品并获得研发排期。因此,优先级最高的就是业务。了解业务和技术都是你进入一家新公司必备的工作。

    为何要先让你解业务?想象一下,如果让你先阅读代码,然后推演出一个业务,你觉得吃力吗?

    但是,当你了解业务情况时,你可以推演出基本的代码框架。正因为如此,许多公司都会进行入职培训,让你熟悉项目的运作。

    并且一个产品都是协作完成的,所以,还要看看其他组员遇到的问题是如何一起合作完成的,此时就需要了解团队是如何工作的,

    通常,在刚入职的前几天是不会给你安排工作的,这些时间是为了让你充分了解项目和各部门的工作。

    因此,千万不要用这几天的时间来划水。一旦你用来划水,当给你项目排期时就会一无所知,做东西没有思路,无从下手。从而导致心态不好,越来越难融入新的环境中。

    三、拿到数据库应该怎么做

    进来不断接触两个新的项目,虽然一个是Phalcpn框架、另一个是原生。令我恐惧的并非代码,而是数据库。

    通常接到的项目大部分都是之前开发好的,目前的工作或者是优化或者是维护。

    可以毫不夸张地说,咔咔见过一个项目有2500多张表,这是目前为止在项目中遇到过最多的表了。

    在这个项目中,进行了多库连接,将2500张表分别存储到了3个数据库,本身表就很麻烦了,这还分了三个。

    所以说你修改这样的项目,代码估计就五六行,找表得找好久。

    进入正题,假设你拿到的项目数据库是这个样子的。

    数据库表

    这张表结构很熟悉吧!这是MySQL 的系统表,这里只是做个演示。

    假如你接手的项目数据库是这样的,那么你就要好好想一想,是否上辈子做了太多坏事。

    要是真像上图那样的情况,谁也没辙自己加班加点处理吧!

    但是,如果你给数据库中所有的表和字段都添加了注释,则该项目的下一位接手者将变得非常容易上手。

    执行MySQL查询

    select
    TABLE_NAME,
    TABLE_COMMENT
    from
    INFORMATION_SCHEMA.Tables
    where
    table_schema = 'enen''
    

    查询结果

    通过上图可以很清楚地了解每一张表是干什么的!通常的数据库设计都与项目模块关联的。

    即使有出入也不会太大,所以说根据模块来找数据表也是没问题。

    假如你接手一个新项目,拿到这样的数据库会不会很开心呢!

    因此,在日常开发过程中,该给注释给注释不要吝啬你几秒钟的时间,让自己看或接手人看都很友好。

    将所有表的注释整理出来后,大概看一眼都什么意思不用去刻意的记,上手做几天业务就熟悉的差不多了。

    在写业务时必不可少的就是查看表注释,查看表注释的方式非常多,咔咔给大家介绍几种。

    第一种方式就是直接在客户端中查看,十分方便

    使用客户端

    当然你也可以直接使用SQL来查看。

    select 
    COLUMN_NAME 字段名,
    column_comment 字段说明,
    column_type 字段类型
    from information_schema.columns 
    where table_schema = 'enen'
    and table_name = 'fa_admin' ; 
    

    使用SQL语句

    然后可以把使用到的表字段注释复制出来,整理一份你自己的数据库字典,方便后期开发使用。

    四、开始做一些简单的功能

    通常到第四天,你的组长就会给你指派一些简单的任务,此时你应该很兴奋,因为你终于可以参与这个项目了。

    在得到分配的任务之后,对应到项目中简单的过一遍,然后在开发过程中每个任务都写一个实现文档。

    最初的文档可以是标题、需求、相应的代码文件路径、所需的表、字段注释,把这些工作都准备好之后,就别急着开发。那这时候应该怎么做呢?

    首先找到产品对需求,把你对任务的理解跟产品对接一遍,确保无误后再进行开发,这种沟通成本是很小的,几分钟就能解决的事情。

    在公司中每个职位都有各自的工作要做,所以不要在收到需求后就直接去找产品,你要先对需求有一定的了解再去找产品对接。唯有如此,你才能保证工作质量。

    当你开发东西时卡住了怎么办?

    此时,一定要找你的组长或者主管帮忙,一定要把整个需求和你卡住的问题都描述清楚,只要这样可以节约大家的时间。

    别自己瞎搞,延误了工期。也许你问了别人几十分钟就能解决问题,自己弄就需要很久。千万不要有,问过别人就会显的自己菜的心态,既然你能得到offer,那么你的能力就可以胜任这份工作的,否则,你在面试那一轮你就结束了。

    五、如何在一个新的公司中不断得到提升

    技术群里可以看到很多小伙伴离职原因都是在原公司得不到提升,一部分小伙伴是真到了天花板,另一部分小伙伴此处省略…,自己体会哈!!!

    一周无论给你分配多少需求都不要抱怨,分配得越多你就越了解项目,不要只看自己的一亩三分地。只要保持这种心态,你就不会在任何一家公司得不到提升。

    一个项目少说三五人,多则三五十人开发,行业里经常流传一句话在小公司你的技术提升会非常快,因为什么东西都得你来弄,不会也得快速去学,学了就可以直接运用到项目中,这样技术就提升的非常快。但是你在开发人员稍微多一点的团队,你只做你的肯定不会感觉到明显的提升。

    给你需求分派下来后,你要把这个需求所关联的业务都要仔细看,然后想想如果是你开发的话会怎么写。如果开发思想有出入的话,可以想想别人为什么会这么写,肯定有别人的道理,然后对别人写的东西进行细嚼慢咽,直到任督二脉都被打通。

    一段时间后,你就会发现你对整个项目都会非常的熟悉。在线上遇到bug后能够很快的定位到问题。

    上述仅是个人观点,根据情况来定哈!

    如果你把公司项目熟悉得差不多,就需要开始自我提升了,你的技能水平是怎么样的会很快的在工作中展现出来,一定要经常给自己充电,多看、多练、多想。

    坚持学习、坚持写作、坚持分享是咔咔从业以来所秉持的信念。但愿文章在偌大的互联网上能给你带来一点帮助,我是咔咔,下期见。

    展开全文
  • 什么要学习HarmonyOS? 在上一次https://www.cnblogs.com/webor2006/p/14861199.html已经对于HarmonyOS有了一个基本的认识,其中对于它的开发环境也已经搭建好了,不过这里再对“为什么要学习HarmonyOS”这个话题...

    为什么要学习HarmonyOS?

    在上一次鸿蒙系统,我要拥抱你~~已经对于HarmonyOS有了一个基本的认识,其中对于它的开发环境也已经搭建好了,不过这里再对“为什么要学习HarmonyOS”这个话题先再啰嗦一下。

    HarmonyOS对软件开发行业的影响:

    • 一个面向全场景的分布式微内核的操作系统;
      其中啥叫“微内核”呢?相比基于Linux(宏内核)的Android操作系统,基于微内核的HarmonyOS,更安全,更稳定,可维护性更好,其中宏内核和微内核的区别在于:
      1、宏内核是把很多功能都放在了内核当中了,往往要在Linux增加一个设备需要重新编译一下内核,不像window驱动既插既用,因为Linux将很多驱动都做在了内核当中了;
      2、而微内核就比较小,它只把关键的部分(如任务调度、内存管理等)放在了内核中,而像设备的管理、图片管理之类的都是放在了内核之外了,那么带来的好处除了内核小之外,还更加安全,因为内核是稳定的,不稳定的基本都是在内核之外。
      其中华为对于全场景的定义为:
    • 华为生态中有来自全球的180万开发者;
    • HarmonyOS有望成为全球第三大移动应用生态;

    对于这么一个系统,对其其它的一个竞争对手厂家来说肯定也是感兴趣的,但是对于这些厂商来说你觉得会放心去使用一个华为竞争对手的产品么?华为为了打消其它厂商的顾虑,华为成立了开源基金会,这样其它的厂商就可以参考进来,就会公平的使用HarmonyOS了,在2020年9月10日OpenHarmony(开放原子开源基金云https://www.openharmony.cn/)开源了HarmonyOS 2.0,而OpenHarmony的一个开源路标是这样的:

    • 2020年9月10日:面向内存128KB~128MB终端设备;
    • 2021年4月:面向内存128MB~4GB终端设备;
    • 2021年10月:面向4GB以上所有设备;

    随着HarmonyOS逐步开源,其对软件行业的影响也只有越来越大的,所以做为开发者提前了解它也是非常有必要的。

    HarmonyOS开发者的影响:

    对终端开发者的影响:

    • HarmonyOS天生支持IOT:
      啥叫IOT:
    • HarmonyOS不仅可以开发手机应用而且可以开发应用于物联网的智能终端应用;
    • 终端开发者可以通过HarmonyOS来开发智能物联网的软件,并将其应用到智能设备上【对于未来各大智能硬件的公司肯定都会拥抱HarmonyOS的】;
    • 终端开发者可以通过HarmonyOS来拓宽就业场景;

    对非移动端开发者的影响:

    • 对于HarmonyOS来讲无论是Android开发者、IOS开发者还是前端或后端开发者,大家都是零基础,起跑线一样;
    • 非移动端开发者可以借助HarmonyOS来快速上手移动端开发实现弯道超车; 

    为什么要学习HarmonyOS?

    • 学习门槛低,因为支持Java和JS语言进行开发。
    • 应用场景广:
      1、手机所需软件;
      2、TV所需软件;
      3、穿戴设备所需软件;
      4、智能家居所需软件;
      5、车载软件;
      6、...
    • 对新技术保持敏感
    • 为未来布局

    如何能快速上手?

    这里强调的是“快速上手”,因为可以建立起一个自信心,当然你也可以上官网一点点去学习,但是效率会比较慢,所以这里看一下要想快速上手,则可分为以下几个步骤。

    对HamonyOS有个整体的认识:

    • 架构了解
    • 和其它系统的异同(系统层面、包的结构、开发方式的异同等)
    • 利用现有的知识进行类比学习(比如你已经掌握了Android开发,则可以用它进行类比)
    • 搭建开发环境(这块咱们在上一次已经搞定了)
    • 开发工具使用技巧

    掌握HamonyOS开发的必备基础:

    • 掌握布局知识
      由于HamonyOS的开发方式有两种,一种是使用Java语言,另一种是使用JS语言,所以其布局知识就得分别进行掌握了。
    • 掌握页面和应用生命周期
    • 掌握页面跳转和传参
    • 调试技巧

    掌握HamonyOS进阶知识:

    • 如何自定义列表?
    • 掌握多线程与并发
    • 掌握JSON解析技巧
    • 掌握HamonyOS网络通信基础
    • 构建和打包

    这里少了一个数据保存相关的知识对吧,是因为暂时先不了解它,因为对于这个快速系列最终的项目不涉及到数据库相关的技术,所以这里先略过。

    通过一个小项目进行实战巩固:

    这里的快速上手项目是应用在一个穿戴的手表上的,具体的效果如下:

    那为啥不以手机APP为例呢?其实以什么平台运行不是重点,因为华为HarmonyOS的理念就是编写一次代码多平台运行,

    关于这个特点在未来的学习中再来体会,而对于学习知识点来说没任何的影响,所以,这块不用太过纠结平台,目前入门以能学知识为主。

    HarmonyOS架构解析:

    鸿蒙OS技术架构:

    关于这块可以参考官网https://developer.harmonyos.com/cn/docs/documentation/doc-guides/harmonyos-overview-0000000000011903,这里简单再梳理一下,先把官方的架构图给贴出来:

    而对于整个架构最清晰的了解可以参考官方给的这个视频:https://developer.huawei.com/consumer/cn/training/detail/101605600905237027,反正我看完之后真的是感觉好强大。。

    其中可以看到,相比Linux系统架构而言,这里多了一个第二层:系统服务层,这一层之前是集成在Linux内核层的,这也体现了Harmonyos中的微内核。

    内核层:

    目前有两个内核子系统:

    • Linux Kernel:为了兼容Android APP
    • LiteOS:为物联网硬件设备而生的内核

    目前使用的是Linux Kernel,之后可能还会开发有其它的一些内核子系统,既然未来会不断扩展多个子内核系统,那么肯定需要将行为进行抽象吧,不然不好管理,于是乎就有它出现了:

    这样在上层调用时就不用管具体是用的啥内核了,扩展性非常强。其截一个官方视频的说明,大概就能感知这个内核层的强大:

    另外还有一个驱动子系统:

    系统服务层:

    然后上一层就是系统服务层了,其中可以看到,原来Linux内核层的一些东西就抽出来了:

    其中还有一个很新颖的东东:“方舟多语言运行时子系统”,它是干嘛用的呢?它是可以跟方舟编译器结合起来用的,我们知道Java它不是直接生成机器指令在硬件上来运行,而是生成一个字节码在JVM中来运行,其性能就远不如机器指令的运行效率了,当然Android后来也做了一些相关的优化,比如引入了Android ART虚拟机,但是对于一些功能比如任务调度还是得借助于内核来完成,所以其性能效果也不尽如人意,但是对于这个方舟编译器,简单来说就是它可以把不同的编程语言(java、js、c、c++),都能用方舟编译器将其生成机器指令,直接在操作系统的内核层来直接运行,性能大大提升。

    框架层:

    这也是咱们写应用程序需要使用的框架。

    用户程序框架:是管理整个应用执行流程的,比如应用的载入,资源的回收等;

    UI框架:这里就有两套,一套是针对Java,一套是针对JS的;

    Ability框架:这个是Harmonyos非常关键的概念,字面意思是“能力”的意思,其实做应用开发就是给设备赋予某种能力,所以这个框架就表达了一个应用程序所具备的功能。

    有了这三个框架,咱们就可以基于它们来构建上层应用了。

    应用层:

    它是构建以FA(Feature Ability)/PA(Particle Ability)为基础组成的应用(包括系统应用和三方应用):

    这里的FA和PA是HarmonyOS应用的基本组成单元,能够实现特定的业务功能,所以一个HarmonyOS的应用程序的组成元素可以为:

    也就是一个应用可以包含一个或多个FA/PA,FA是有UI界面的(类似于Android中的Activity),而PA是无UI界面的(类似于Android中的Service),这里拿一个视频通话应用为例:

    "视频通话主界面FA(Entry FA)":提供UI界面以便于用户交互;

    然后三个PA为应用提供不同的处理能力,而比较屌的功能来了:FA/PA是可以按需下载、加载和运行,其中:

    基于FA/PA构建的新型应用生态,能够实现三方服务跨设备智能分发,提供一致、高效的用户体验,这里还是以视频通话app为例:

    对于手机平台而言,则会下载所有FA/PA:

    但是!!!对于智慧屏平台来说,如果该平台不支持视频美颜和超级夜景能力的话,那么只会按需下载一个PA了:

    是不是有一点像Android App Bundle的思想呢?

    鸿蒙OS技术架构 VS Android架构:

    上面对于鸿蒙OS的整体架构有了整体认识之后,接下来来类比一下Android的架构:

    对于它俩的区别,说两点:

    1、整体看,都基于了Linux内核进行设计的,不过HarmonyOS是基于微内核,难度更大,但是更加稳定,这个在华为开发者大会上也曾提及过,Android的内核代码有1亿多行,而HarmonyOS也就二千多行,所以Android很难保证不同设备的流畅度。

    2、HarmonyOS相比Android是采用了一个分布式架构,这也是首次在移动端使用了分布式架构,对于这样的架构的好处就是就可以无缝的切换终端协同的体验,开发者可以像开发同一端设备一样开发跨终端的分布式应用,这点听着也挺牛的!!!

    HarmonyOS和Android深度对比: 

    HarmonyOS APP工程结构:

    先来看一下官网给的一张图:

    HarmonyOS有两个不同类型的构建产物:

    • App Pack:Application Package,简称APP,是Harmony OS应用的发布形态,它是由一个或多个HAP(Harmony OS Ability Package)包以及描述APP Pack属性的pack.info文件组成;
    • HAP:是Ability的部署包,Harmony OS应用代码围绕Ability组件展开,它是由一个或多个Ability组成;

    一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature两种类型:

    • Entry:应用的主模块,一个APP中,对于同一设备类型必须有且只有一个entry类型的Hap,可独立安装运行;
    • Feature:应用的动态特性模块,一个APP可以包含一个或多个feature类型的HAP,也可以不含;

    工程目录结构对比:

    采用Java开发的HarmonyOS的工程目录结构和Android有些类似,都包含:

    其对照关系表如下:

    而HarmonryOS的JS的目录结构如下:

    • pages目录:pages文件夹下可以包含1个或多个页面,每个页面都需要创建一个文件夹(如图中的index)。页面文件夹下主要包含3种文件类型:css、js和html文件。
      1、pages > index > index.html文件:html文件定义了页面的布局结构,使用到的组件,以及这些组件的层级关系。
      2、pages > index > index.css文件:css文件定义了页面的样式和布局,包含样式选择器和各种样式属性等。
      3、pages > index > index.js文件:js文件描述了页面的行为逻辑,此文件里定义了页面里所用到的所有的逻辑关系,比如数据,事件等。
    • app.js文件:全局的JavaScript逻辑文件和应用的生命周期管理。

    安装包内部对比:

    对于Android开发的人伙伴应该都知道它最终打出来的包是个apk,那么对于HarmonyOS应用它的安装包到底是什么呢?

    采用HarmonyOS开发的应用会被构建成.hap,hap是由代码、资源、第三方库及应用配置文件组成的模块包。不同的hap可以被部署到不同类型的设备上,那hap的内部结构又是怎样子的呢? 咱们以上一次用到的一个工程为例,在编译之后会生成一个.hap的安装包,如下:

    然后它不像Android studio能直接双击就能在DevEco-Studio查看.hap中的内容,此时咱们需要将.hap更改成一个apk,然后用Android Studio打开看一下:

    其中看到.apk木有,它就是为了兼容Android app而生的:

    asserts:

    项目中的静态资源会被归档在该目录下,里面主要存放的是项目entry/resources/目录下的文件:

    对应apk中的res与resources.arsc的集合:

    classes.dex:

    项目中的Java代码对应的构建产物,它是由多个.class文件处理后的产物:

    对应apk中的.dex:

    entry_debug_singed_entry.apk:

    项目构建出的用于在Android设备上运行的产物,HarmonyOS开发出的应用能够兼容Android的奥秘也就是因为有它的存在。

    config.json:

    项目的配置文件,用于声明应用的Ability,以及应用所需权限信息,详见应用配置文件,对应apk中的AndroidManifest.xml:

    清单文件对比:

    android的清单文件是manifest.xml对吧,而harmonyOS则是config.json:那咱们以同一款应用对比一下它们之间的差异:

    config.json:

    {
        "app": {
            "apiVersion": {
                "compatible": 4, 
                "releaseType": "Release", 
                "target": 5
            }, 
            "vendor": "example", 
            "bundleName": "com.example.helloworldwithjava", 
            "version": {
                "code": 1000000, 
                "name": "1.0.0"
            }
        }, 
        "deviceConfig": { }, 
        "module": {
            "abilities": [
                {
                    "iconId": 16777219, 
                    "skills": [
                        {
                            "entities": [
                                "entity.system.home"
                            ], 
                            "actions": [
                                "action.system.home"
                            ]
                        }
                    ], 
                    "orientation": "unspecified", 
                    "descriptionId": 16777218, 
                    "labelId": 16777216, 
                    "icon": "$media:icon", 
                    "name": "com.example.helloworldwithjava.MainAbility", 
                    "description": "$string:mainability_description", 
                    "label": "$string:entry_MainAbility", 
                    "type": "page", 
                    "homeAbility": true, 
                    "launchType": "standard"
                }
            ], 
            "deviceType": [
                "phone"
            ], 
            "mainAbility": "com.example.helloworldwithjava.MainAbility", 
            "distro": {
                "moduleType": "entry", 
                "installationFree": true, 
                "deliveryWithInstall": true, 
                "moduleName": "entry"
            }, 
            "package": "com.example.helloworldwithjava", 
            "name": ".MyApplication"
        }
    }
    

    可以看到它是由"app"、"deviceConfig"、"module"三个部分组成,缺一不可:

    • app:表示应用的全局配置信息,同一个应用的不同HAP包的“app”配置必须保持一致;
      1、bundleName:对应清单中的package,应用的包名:

      2、vendor:开发商的描述,可以缺省,在Apk中的清单中没有对应的。

      3、version:app的版本信息,对应清单中的版本信息:

      4、apiVersion:对应于清单中的minsdkverison和targetsdkversion:

    • deviceConfig:表示应用在具体设备上的配置信息;
    • module:表示HAP包的配置信息。该标签下的配置只对当前HAP包生效;
      1、package:

      类似于Android module中的包名。 

      2、name:对应于Android中的Application的名字:

      3、reqCapabilities:表示要求设备提供的能力:

      4、reqPermissions:表示申请的权限,对应的Android清单中的use-permission

      5、deviceType:表示允许Ability所运行的设备类型,因为华为的HarmonyOS是运行在全场景下的:

      6、distro:是创建应用时系统为咱们生成的,不可缺省,是hap发布应用时的描述。

      7、abilities:表示每个ability的信息描述,里面接受一个数组,类似于Android清单中Activity的配置:


      这里对关键属性进行一个说明:

      orientation:支持横竖屏
      icon:应用对应的icon,看一下它引用图片的用法,跟Android有一点区别:

      type:表示Ability的类型,page表示有界面的,service表示无界面的,data类似于Android的ContentProvider

      launchType:启动模式。

    AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:versionCode="1000000"
        android:versionName="1.0.0"
        android:compileSdkVersion="29"
        android:compileSdkVersionCodename="10"
        package="com.example.helloworldwithjava"
        platformBuildVersionCode="29"
        platformBuildVersionName="10">
    
        <uses-feature
            android:name="zidane.software.ability"
            android:required="false" />
    
        <uses-sdk
            android:minSdkVersion="26"
            android:targetSdkVersion="29" />
    
        <application
            android:label="@ref/0x7f020000"
            android:icon="@ref/0x7f010000"
            android:name="com.example.helloworldwithjava.ShellMyApplication"
            android:persistent="false"
            android:debuggable="true"
            android:allowBackup="false"
            android:usesCleartextTraffic="false"
            android:directBootAware="false">
    
            <meta-data
                android:name="permZA"
                android:value="true" />
    
            <activity
                android:label="@ref/0x7f020000"
                android:icon="@ref/0x7f010000"
                android:name="com.example.helloworldwithjava.MainAbilityShellActivity"
                android:exported="true"
                android:launchMode="0"
                android:screenOrientation="-1" />
        </application>
    </manifest>
    

    HarmonyOS需要的技术栈:

    对于开发HarmonyOS需要的技术栈这里看一个图:

    关注个人公众号,获得实时推送

    展开全文
  • 初学Python如何快速上手?最全学习路线是什么?Python入门简单、功能强大,吸引了很多人入行。想要快速系统的学好Python,一个完整的学习路线必不可少,比如你需要从基础到高阶递进式学习、需要掌握企业所用的技术、...

    初学Python如何快速上手?最全学习路线是什么?Python入门简单、功能强大,吸引了很多人入行。想要快速系统的学好Python,一个完整的学习路线必不可少,比如你需要从基础到高阶递进式学习、需要掌握企业所用的技术、需要积累一定的项目经验等。接下来就给大家分享初学者必看的最全Python学习路线。

    image

    Python基础与Linux数据库。这是Python的入门阶段,也是帮助零基础学员打好基础的重要阶段。你需要掌握Python基本语法规则及变量、逻辑控制、内置数据结构、文件操作、高级函数、模块、常用标准库模块、函数、异常处理、MySQL使用、协程等知识点。

    学习目标:掌握Python基础语法,具备基础的编程能力;掌握Linux基本操作命令,掌握MySQL进阶内容,完成银行自动提款机系统实战、英汉词典、歌词解析器等项目。

    WEB全栈。这一部分主要学习Web前端相关技术,你需要掌握HTML、CSS、JavaScript、jQuery、BootStrap、Web开发基础、VUE、Flask Views、Flask模板、 数据库操作、Flask配置等知识。

    学习目标:掌握WEB前端技术内容,掌握WEB后端框架,熟练使用Flask、Tornado、Django,可以完成数据监控后台的项目。

    数据分析+人工智能。这部分主要是学习爬虫相关的知识点,你需要掌握数据抓取、数据提取、数据存储、爬虫并发、动态网页抓取、scrapy框架、分布式爬虫、爬虫攻防、数据结构、算法等知识。

    学习目标:可以掌握爬虫、数据采集,数据机构与算法进阶和人工智能技术。可以完成爬虫攻防、图片马赛克、电影推荐系统、地震预测、人工智能项目等阶段项目。

    高级进阶。这是Python高级知识点,你需要学习项目开发流程、部署、高并发、性能调优、Go语言基础、区块链入门等内容。

    学习目标:可以掌握自动化运维与区块链开发技术,可以完成自动化运维项目、区块链等项目。

    通过以上内容可以了解到,想要快速掌握Python知识,我们需要学习很多知识点,为了保证自己具备求职竞争力,我们还需要具备一定的项目实战经验。想要同时掌握理论并积攒实战经验,选择专业学习是一个不错的决定。

    你要不要也来试试,用 Python 测测你和女神的颜值差距(仅供娱乐,请勿联想) 如果真的遇到好的同事,那算你走运,加油,抓紧学到手。
    python、爬虫技巧资源分享Q群:766610200
    包含python, pythonweb、爬虫、数据分析等Python技巧,以及人工智能、大数据、数据挖掘、自动化办公等的学习方法。
    打造从零基础到项目开发上手实战全方位解析!
    点击:加入

    展开全文
  • 快速上手SpringBoot

    2021-12-02 21:21:49
    快速上手SpringBoot SpringBoot开发团队认为...如果你的环境和上述环境不同,可能在操作界面和操作过程中略有不同,只要软件匹配兼容即可(说到这个Idea和Maven,它们两个还真不是什么版本都能搭到一起的,说多了都是
  • 学习内容涉及电子、信息技术、计算机三大知识板块,其培养方向有些院校涉及三个方向,如无线通讯、图像传输与处理、信息电子技术等,下面是学习啦小编给大家带来的电子信息科学与技术专业怎么样、学什么、前景好吗...
  • 我们知道,信息技术课程标准远远落后于信息技术的发展,所以在各个省区的信息技术课本里面,已经学习的一些信息技术,在课程标准方式没有体现出来的,那么各个省区出现的小学六年级信息技术课本,到底有哪些新知识...
  • #好书推荐##好书奇遇季#《Unity 2020游戏开发快速上手》京东当当天猫都有发售。 Unity是由Unity Technologies开发互动内容的多平台综合型开发工具,不仅在游戏开发、动画制作方面应用广泛,而且越来越多地应用于...
  • 经验分享:如何快速上手公司的项目代码

    千次阅读 多人点赞 2020-12-25 21:43:03
    但是在解决这些问题的过程中,可以让你对项目的技术路线有个大致的了解,例如所使用的开发框架、使用的库、数据库服务器等信息。 项目跑起来之后,可以比较直观地看到项目的功能模块,让你对公司业务也有一个初步...
  • 人一步上手Vite2

    2021-03-23 00:20:15
    Vite2自2月17号份发布之后,收获了前端圈的一片哀嚎:不动了……不不不,你得!不仅是因为Vite2全新的插件结构,丝滑的开发体验以及和Vue3的完美结合,而且Vite2作为最新的...
  • 15岁不上学了可以学什么技术2021-01-28 14:35:17文/董玉莹随着教育的普及,读书受到越来越多的人的重视。但是,还是有很多人不喜欢读书,尤其是初中生,在15岁的年纪左右就不上学了。那么,15岁不上学能干什么呢?...
  • “极简k8s入门”系列教程是一套帮助学习者快速入门k8s的视频教程;适合对容器技术感兴趣但不熟悉容器技术的学习者学习;帮助学习者快速上手,能够使用k8s进行应用部署及管理
  • 大家从电子信息工程技术这几个字也能感受到主要还是学习电子为主,是的没错我们接触更多的是通过编写程序烧录的硬件。 第一步 C语言,C语言大家可能看网上说指针挺难的。我在这里跟你说,等你学会压根不是一回事,...
  • 据统计,Python人才需求量每日...越来越多人听说Python前景好,容易上手都来Python。那么,Python真的容易上手吗?能撇开那些天花乱坠的假大空,单纯从技术角度解释一下吗?下面给大家详细解释一下。因为Python的...
  • Elasticsearch快速上手

    2021-07-18 16:03:22
    Elasticsearch快速入门 学习背景 由于最近工作需要,需要大量使用elasticsearch代替mysql数据库进行数据存储和查询操作,但是目前关于相关的学习文档较少,官方文档看着也较为费劲。所以记录一下我的学习记录。...
  • unity3d笔记-快速上手

    2021-09-30 14:09:02
    回到目录 快速上手 根据官方给的教程可以快速入门 开始 没什么好说的,直接通过传送门进入教程学习 回到目录
  • 分步骤实施: 放低姿态,虚心请教老员工。熟悉整个项目的流程,这时不要问细节; 静下心来,整理相关流程并确认。 细心熟悉整个项目。比如源代码。 源代码的话,可以先生成...设计文档熟悉,知道这个项目有哪些技术,你
  • 在2018年第56届国际计算语言协会(ACL)年会开幕式上,ACL的主席Marti Hearst宣布创建亚太区域分会(AACL,The Asia-Pacific Chapter of Association for Computational Linguistics),计划在2020年举行首次会议...
  • 80 80 80 平均成绩 80 80 80 6.4 合并行和合并列 当我们要把n个行或者列合并起来的时候,我们就需要用到rowspan和colspan属性 表格的横向合并 rowspan距离说明 合并行 姓名: 小明 喜欢水果:...
  • 面对前端最火的两个框架, React 还是 Vue ?这可能是每个前端人都曾纠结过的问题。不过,现在你不用纠结了——因为很多公司都是两个框架都有大量的应用,取决于不同团队的技术选型,特别...
  • 好书也多,上榜书更多,真是万物复苏,好书排排站,刚给大家推荐完Linux新书,又迎来周志华教授“西瓜书”《机器学习》公式完全解析指南的《机器学习公式详解》,还有最受程序员喜欢的《Python编程快速上手 ...
  • app开发技术方案对比 app开发主要有几种技术方案如下: 原生开发 原生开发简介 原生(native)开发从定义上来说 一般是指用原生开发语言开发,原生开发语言就是开发整个系统时使用的编程语言。 对于iOS来说就是...
  • Android Jetpack Compose 超快速上手指南

    多人点赞 2021-04-20 17:50:19
    Compose 介绍 Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度(可以参考几乎...这篇文章不回去解释过多的原理与技巧,只要是让你能够快速上手开发项目。 目前.
  • pyttsx3 快速上手之:语音合成播报

    千次阅读 2021-10-07 17:10:23
    Python pyttsx3 快速上手之:语音合成播报 安装 pyttsx3: API封装 API使用 博主热门文章推荐: pyttsx3 是python中最常用的文字转语音库,使用方便,功能较为完整 安装 pyttsx3: 首先安装 pyttsx3 lib: pip ...
  • 文章目录Vue3快速上手1.Vue3简介2.Vue3带来了什么1.性能的提升2.源码的升级3.拥抱TypeScript4.新的特性一、创建Vue3.0工程1.使用 vue-cli 创建2.使用 vite 创建二、常用 Composition API1.拉开序幕的setup2.ref函数3...
  • 相信很多人也和我一样,只知道自己过java语言,但是还没有确定自己在未来工作中是向前端发展还是向后端发展。 如果你是在校学生,当你完了java课程后并不意味着java的学习就结束了,这仅仅只是意味着你完了...
  • 扫描下方二维码,添加 AI有道小助手微信,可申请入群,并获得2020完整技术文章合集PDF(一定要备注:入群 + 地点 + 学校/公司。例如:入群+上海+复旦。 长按扫码,申请入群 (添加人数较多,请耐心等待) 感谢你...
  • C++ 什么程度可以找工作?

    千次阅读 2021-07-22 00:44:58
    置顶/星标公众号????,硬核文章第一时间送达!链接 |https://www.zhihu.com/question/400543720至少需要哪些知识?需要掌握到什么程度呢?https...
  • 什么程度才算是过关呢?达内小编认为至少要掌握以下两个方面的内容: a)Java基础语法:具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习...
  • 服务器维护需要学什么 内容精选换一换云容器实例(Cloud Container Instance,CCI)服务提供Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。Serverless是一种架构理念,是指...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,929
精华内容 39,571
关键字:

学什么技术上手快