技术人第一步,必先从搭建知识框架开始!
这个知识框架就好比盖一座房子,它就相当于房屋的整个蓝图,能让你整体看到是个什么样子的,自己在心里也有个数,知道自己以后该往哪地方发力,如何去填补,这一点不止在Android开发,包括其它前端后端都很重要!
接下来偶会尽最大的篇幅把偶的方法论给大家讲清楚,每一个步骤会告诉你为什么这么做以及到底该如何做,也就是说偶不仅告诉你这个道理,更会给你提供切实可行的方案,可以让你马上行动起来!
1.为什么要搭建知识框架呢?大家在学技术的时候,如果没有注重搭建知识框架的话,学到后期的话你就会遇到一个问题,就是会感觉到自己之前学习的知识很乱,不成系统,再加上行业技术更新很快,越往后自己学习的知识会越来越多,而之前的学习又是零散的自己没有整理的,你就会感觉自己所掌握的这些知识是散乱的。
就好像很多点,线可能已经连接成了,但是就是组不成一个面。当大家做一个大一点的项目,需要熟练用到很多相关技术面,甚至会用到组件化技术。如果你长期只使用一些常用的技术点,那么你可能还有很长一段时间要待在小公司搬运代码了。
举个例子,大家平时经常使用的网易云音乐APP,要用到的是UI绘制原理,属性动画原理,还有屏幕适配,布局适配等调优技术,实现音乐播放界面。
这里分享的搭建知识框架两种方式,都是很多技术大佬总结出来的非常好的方式,看你们个人喜好!
第一种:看视频教程来搭建知识框架
这是个通用的方式,可能更加适合那些技术处于初级到中级阶段的朋友,当然,这里偶说一点,偶发现在很多看视频学习的朋友经常会犯这样的一个错误,就是对视频教程的欲望很强导致的松鼠病,什么意思呢?就是很多朋友到处找视频教程,然后各种囤积,顶多是这个看看,那个看看,感觉这个也好那个也好,于是这个也想看,那个也想看,导致的最终结果就是,视频教程倒是收集了不少,可是没有一个真正的看完过,你说,你是不是就是这样的?(此段话太过属实!)
其实这就是学习技术的一大禁忌,它会严重的欺骗你,让你觉得自己学的很多,实则不仅学的很少,而且还拖慢了你的提升的进度!偶告诉你啊,关于视频教程,找一套差不多的就行,就这市面上流传的一些培训班的视频教程,其实都大差不差,只要不是年久失修的那种都行,要知道这就是培训班的啊,所以用来搭建知识框架很合适,找一套就行了,多了没任何好处,现在听偶的,看看你收藏的资料里面是不是有好几套同类型的视频教程,听偶的,留一套,其他的都删除吧!
记住,只留一套用来搭建知识框架,只留一套,一套,就一套(如果你没有的话,可以关注偶以后私信偶偶免费分享一份比较完整的给你)
然后你就靠这套视频教程来搭建知识框架,那么有了这么一套视频教程之后,又该如何去做呢?
这个你要知道,一般这些视频教程都是按照知识点的从前到后,从浅到深的按阶段讲解的,所以你完全可以按照这个视频教程里讲解的顺序去搭建这个知识框架,在搭建知识框架这块,偶看到很多人使用思维导图来搭建,偶也试过这种方式,把各个知识点都整理到思维导图上。
最好找到配套的学习教程,效率会特别高。这里是偶收集的flutter入门到源码实战学习视频包含有代码。
至此,看视频教程搭建知识框架的方式就是这样的了!
2.搜索相关知识或路径,自偶组织知识框架这个方式其实要求就比较高了,这要求你要有一定的搜索能力和组织能力,这个方式的核心就是自己去搜索所需要学习的知识点,然后整理组合,然后组织成一个知识框架。
这样说你可能不理解,偶举一个例子吧,比如说大家学习Android,如果是按照看视频的方式搭建知识框架,那大家只需要找一套视频教程,然后从前往后看,根据所讲建立相应的文件夹就可以形成大家的知识框架。
但是第二种方式不是这样的,因为没有了视频教程作为参考,大家就需要自己去搜索,比如去搜索“学习Android应该掌握哪些知识点?”,“Android需要学习什么”,“Android的学习路径是什么”,然后你就会得到很多的答案,就会有很多人告诉你先学什么,再学什么等,然后多找几个答案,你就会得出一个学习路线,然后按照这个路线建立相应的文件夹,之后再按照文件夹的顺序去逐个学习,可以找单独的视频教程看,也可以上网搜系列博客来学习,这个就自由的多了。
至此,这就是第二种搭建知识框架的方式了!
然后偶必须强调几点:
这个搭建知识框架可不是说你整理好要学习的知识顺序,然后建立相应的文件夹就行了,这所包含的知识你是要真的去学的!学习的时候你一定要记笔记,一定要记笔记,这个很重要最终你的知识框架应该是一个完善的层级文件夹,每个文件夹下有相应知识的学习笔记这样你的知识框架才算真正的搭建完成!后面的发展和提升 都会随着时间水到渠成。复制了图层怎么粘贴,淘宝订单标记怎么取消,vba 怎么动态输入日期格式
如何为安卓应用提供64位原生的支持?
确保您的应用支持 64 位设备
从 2019 年 8 月 1 日开始,您在 Google Play 上发布的应用必须支持 64 位架构。64 位 CPU 能够为您的用户提供更快、更丰富的体验。添加 64 位的应用版本不仅可以提升性能、为未来创新创造条件,还能针对仅支持 64 位架构的设备做好准备。
本指南介绍了如何确保 32 位应用为支持 64 位设备做好准备,供您随时采用。
评估您的应用如果您的应用仅使用以 Java 编程语言或 Kotlin 编写的代码(包括任何库或 SDK),那么就表示该应用已经支持 64 位设备。如果您的应用使用了任何原生代码,或者您不确定自己的应用是否使用了这类代码,那么您需要评估应用并相应采取措施。
您的应用是否使用了原生代码?
首先需要检查您的应用是否使用了任何原生代码。如果您的应用符合以下情况,便是使用了原生代码:
使用了任何 C/C++(原生)代码。与任何第三方原生库关联。通过使用原生库的第三方应用构建程序构建而成。您的应用是否包含 64 位库?
要确定应用是否包含 64 位库,最简单的方法就是检查 APK 文件的结构。在编译时,APK 会与应用所需的所有原生库打包在一起。原生库会根据 ABI 而存储在不同的文件夹中。您的应用无需支持所有 64 位架构,但对于您支持的每种原生 32 位架构,则应用都必须包含相应的 64 位架构。
对于 ARM 架构,32 位库位于 armeabi-v7a 中。对应的 64 位库位于 arm64-v8a 中。
对于 x86 架构,请查找 x86(32 位)和 x86_64(64 位)。
首先要确保这两个文件夹中都有原生库。总结如下:
平台32 位库文件夹64 位库文件夹ARM x86请注意,每个文件夹中的一套库可能完全相同,也可能不完全相同,这取决于您的应用。您应达到的目标是确保您的应用能够在仅支持 64 位架构的环境中正常运行。
通常情况下,同时针对 32 位和 64 位架构编译的 APK 或软件包会具有这两种 ABI 的文件夹,每个文件夹中都有一套相应的原生库。如果您的应用不支持 64 位架构,那么您很可能会看到 32 位 ABI 文件夹,但不会看到 64 位文件夹。
使用 APK 分析器查找原生库
APK 分析器是可用来对所编译的 APK 进行各方面评估的工具。针对大家目前所讨论的情况,大家将使用该工具查找原生库,以确定是否具备 64 位库。
打开 Android Studio,然后打开任一项目。从菜单中依次选择 Build > Analyze APK…选择您要评估的 APK。查看 lib 文件夹,您可以在其中找到所有“.so”文件。如果在您的应用中找不到任何“.so”文件,则说明该应用已经准备好相应的库,您无需采取进一步措施。如果您看到 armeabi-v7a 或 x86,则说明您有 32 位库。
检查是否在 arm64-v8a 或 x86_64 文件夹中也有类似的“.so”文件。
如果您没有任何 arm64-v8a 或 x86_64 库,则需要更新编译流程以开始在 APK 中编译并打包相应工件。
如果您看到 32 位和 64 位的库均已打包到软件包中,则可以跳至在 64 位设备上测试应用。
在解压缩的 APK 中查找原生库
APK 文件的结构类似于 zip 文件,可以像 zip 文件一样解压缩。如果您更喜欢使用命令行或任何其他解压缩工具,也可以采用解压缩 APK 的方法。
只需解压缩 APK 文件(根据您使用的解压缩工具,您可能需要将其重命名为 .zip),然后按照上文中的指南浏览解压缩后的文件,即可确定您的应用是否已经为支持 64 位设备做好准备了。
例如,您可以从命令行中运行如下命令:
请注意,此示例中存在 armeabi-v7a 库和 arm64-v8a 库,这表明该应用支持 64 位架构。
使用 64 位库编译应用
下面针对编译 64 位库做出了相关的说明。不过,需要指出的是,以下内容仅介绍了如何编译在源代码的基础上可编译的代码和库。
如果您使用任何外部 SDK 或库,请确保按照上文所述的步骤使用 64 位版本。如果没有 64 位版本可用,请与相应 SDK 或库的所有者联系,并在规划支持 64 位设备的方案时将这一点考虑在内。
使用 Android Studio 或 Gradle 进行编译
大多数 Android Studio 项目都使用 Gradle 作为底层编译系统,因此本部分适用于使用这两种工具进行编译的情况。针对原生代码进行编译很简单,只需将 arm64-v8a 和/或 x86_64(取决于您要支持的架构)添加到应用的“build.gradle”文件中的 ndk.abiFilters 设置:
使用 CMake 进行编译
如果您的应用是使用 CMake 编译的,则可以通过将 arm64-v8a 传递到“-DANDROID_ABI”参数来编译 64 位 ABI:
在使用 时,此方法无效。请参阅使用 Gradle 进行编译部分。
使用 ndk-build 进行编译
如果您的应用是使用 ndk-build 编译的,则可以通过 变量修改“app.mk”文件,从而编译 64 位 ABI:
在使用 时,此方法无效。请参阅使用 Gradle 进行编译部分。
利用 Android App Bundle 减小大小增加量
为您的应用添加 64 位架构支持可能会导致 APK 的大小增加。大家强烈建议您利用 Android APP Bundle 功能,以尽量减小因在同一 APK 中同时包含 32 位和 64 位原生代码而对 APK 大小产生的影响。
实际上,让应用改用 Android App Bundle 不仅能够降低 APK 大小,甚至能让其变得比现在更小。
游戏开发者
大家知道,迁移第三方游戏引擎是一个耗费人力的过程,并且需要很长的准备时间。庆幸的是,三大最常用的引擎目前都支持 64 位架构:
Unreal(自 2015 年起)Cocos2d(自 2015 年起)Unity(自 2018 年起)Unity 开发者升级到支持的版本
Unity 自版本 2018.2 和 2017.4.16 开始提供 64 位支持。
如果您发现自己使用的 Unity 版本不支持 64 位架构,请确定要升级到的版本,并按照 Unity 提供的指南迁移您的环境,确保将您的应用升级到可编译 64 位库的版本。Unity 建议您升级到该编辑器的最新 LTS 版本,以获取最新的功能和更新。
下面的图表概述了 Unity 的各个版本以及您应该采取的措施:
Unity 版本版本是否支持 64 位架构?建议采取的措施2018.4 (LTS)
✔️
(待发布)确保您的编译设置能够输出 64 位库。2018.3
✔️
确保您的编译设置能够输出 64 位库。2018.2
✔️
确保您的编译设置能够输出 64 位库。2018.1
➖
提供实验性的 64 位支持。2017.4 (LTS)
✔️
自 2017.4.16 起支持 64 位架构。确保您的编译设置能够输出 64 位库。2017.3
✖️
升级到支持 64 位架构的版本。2017.2
✖️
升级到支持 64 位架构的版本。2017.1
✖️
升级到支持 64 位架构的版本。<=5.6
✖️
升级到支持 64 位架构的版本。确保编译设置能够输出 64 位库
如果您使用的 Unity 版本支持 64 位 Android 库,则可以通过调整编译设置来生成 64 位版本的应用。您还需要使用 IL2CPP 后端作为 Scripting Backend(详见此处)。要为编译 64 位架构而设置 Unity 项目,请执行以下操作:
转到 Build Settings,然后确认 Unity 标志是否显示在 Android 平台旁边,以确保您是在针对 Android 进行编译。**如果 Unity 标志未显示在 Android 平台旁边,请选择 Android,然后点击 Switch Platform。点击 Player Settings。
依次转到 Player Settings Panel > Settings for Android > Other Settings > Configuration
将 Scripting Backend 设为 IL2CPP。
依次选择**“Target Architectures”> ARM64 复选框。
照常进行编译!
请注意,在编译 ARM64 架构时,您需要专门针对该平台编译您的所有资源。请按照 Unity 的指南来缩减 APK 大小,同时考虑利用 Android APP Bundle 功能来减小大小增加量。
在 64 位硬件上测试应用
64 位版本的应用应提供与 32 位版本相同的质量和功能集。请对您的应用进行测试,以确保使用最新的 64 位设备的用户能够在您的应用中获得优质的体验。
要开始测试您的应用,您要有支持 64 位架构的设备。时下有很多支持 64 位架构的热门设备,例如 Google 的 Pixel 以及其他旗舰设备。
要测试您的 APK,最简单的方法就是使用 adb 安装该应用。大多数情况下,您可以提供 参数,用以指示要将哪些库安装到设备上。这样在设备上安装该应用时便会仅包含 64 位库。
安装成功后,请照常对应用进行测试,以确保其质量与 32 位版本相同。
如何系统地学习C?
谢邀。
建议先从c语言学习,c++的学习难度很陡。?
由于偶大一也陷入过迷茫,也走过一些弯路,那时候学不会直接记忆代码之类的事情偶都干过,偶也希望偶的这些经验可以对你有所帮助。
首先是一本好的C++书籍(Accelerated C++, C++ Primer),然后以及尽量多的完成书籍的习题,可以帮助完成C++语法的学习。虽然前面的书籍涵盖了标准库,但是不够完善,这个时候你可以选择在线查阅C++标准库这种泛型的学习方式,也可以选择阅读《C++标准库》的方式进行学习。通过这样的步骤,你应该可以完成C++的初步学习了。
然后,由于C++是一门系统级语言,偶想你需要到大三学习操作系统的时候,才会明白栈与堆、内存管理等更深层次的含义。但是,在明白这些概念之前不会妨碍你利用C++做一些事情,比如写一个简单的XML Parser。这个时候,你应该会发现很多问题,如效率,代码规范等,这个时候,你可以研究Effective C++,Google C++ Code Standard等,只有自己犯了错,回过头反省才会更加深刻。
随后,你可以更加深刻的去思考C++,你需要阅读《The Design and Evolution of C++》。这本书的阅读,会教会你很多,是对你影响最大的C++书籍。如果你对C++编译器的一些细节有兴趣,深入C++对象模型可以推荐。如果你对STL的一些实现有兴趣,可以去翻翻STL源代码(很多人推荐STL源码剖析,但是偶没有阅读过,偶没有办法发表是否应该推荐的观点,列出来供你自行判断是否应该阅读)。
到这一步骤,偶想你应该可以称为C++ Programmer了,剩下的就是实践中发现问题,然后补足自己。
此外,由于C++博大精深,应用的范围多如牛毛,特定方向所需要的知识未列举。比如你要研究Android的NDK什么的,那就是属于你后面的事情了。
从个人学习编程语言的经验来看,学习过程中最大的问题是:没有实际项目经验的新手过渡在意对编程语言的语法学习,不停的啃书本,肯德头晕眼花。一个类的成员函数就有无数的门道:重载、覆盖、虚函数、纯虚函数等等。看完觉得可神奇了了,然后不断咒骂怎么搞得这么复杂,吃饱了撑的。
程序语言是用来解决实际问题的,是一种思维表达。语法只是附属品,只是计算机这个电子设备的使用方法。不论看了多少遍使用方法,最后还是要落到使用计算机这个环节。不看一下别人怎么用,自己再实践一下,使用方法永远是纸面上的几个字,永远不知道为啥有这么多的功能,比如那些重载、覆盖、虚函数、纯虚函数显然不是没事儿找事儿硬发明的,每一样都是要解决一个实际问题,当你了解他们为了什么而存在的时候,自然你会觉得“呦,还不错哦”。
举个不太恰当的例子,写代码和写作文一样。当没写过作文前,觉得写作文很难,不知道如何开始。当用大白话写完第一篇作文的时候,觉得写作文也还行,也还能写。写第一篇作文的时候一定很在意语法,当用大白话偶尔夹杂“一望无际”、“万里无云“这种美妙词汇写几篇记叙文后,会觉得写作文也就是那么一会儿事儿。虽然读过几篇大师作品以后再看自己写的还是觉得挺恶心的,不过好歹可以写作文了,至少写个日记门没问题。也许再经过不断修炼,自己也能成为辞藻华美的大师。
题主现在遇到的问题是怎么能开始写大白话的程序。
偶的建议是,学习编程要从“抄”和“改”开始。你可以没吃过猪肉,但你得先见过猪跑。你可以没写过作文,但你要想写作文得先读过文章,然后摘抄人家的文章,把“小红”改成“小明”,把“买冰棍儿”改成“买糖球”等。改几篇之后自然就有感觉了,觉得自己也可以把“小红买冰棍”的故事,改成“小明买糖球并帮妈妈买了酱油”,再改成“小明骑自行车买糖球并帮妈妈买了酱油”,再改成“小明骑自行车买糖球并帮妈妈买了酱油,路上碰到了小红”,再改成“小明骑自行车买糖球并帮妈妈买了酱油,路上碰到了小红,对小红说晚上一起写作业吧”。