精华内容
下载资源
问答
  • 作为安卓开发者,除了Bug,经常会碰到下面这些问题: 应用卡顿,丢帧,屏幕画面撕裂,操作界面刷新缓慢,UI不美观,布局混乱…这些问题频发的话,年后可能就不用来了。 开发App的时候,你是否会觉得界面卡顿?...

    除了Bug,最让你头疼的问题是什么?单身?秃头?996?面试造火箭,工作拧螺丝?

    作为安卓开发者,除了Bug,经常会碰到下面这些问题:

    应用卡顿,丢帧,屏幕画面撕裂,操作界面刷新缓慢,UI不美观,布局混乱…这些问题频发的话,年后可能就不用来了。

    开发App的时候,你是否会觉得界面卡顿?尤其是自定义View的时候。

    Android 应用的卡顿、丢帧等,这些影响用户体验的因素绝大部分都与 16ms 这个值有关。Android 设备的刷新率也是 60Hz,Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果超过了16ms,我们则认为发生了卡顿。

    目录

    (1)必备Java基础
    (2)设计思想解读开源框架
    (3)360°全方位性能优化
    (4)Android框架体系架构
    (5)NDK模块开发
    (6)Flutter学习进阶
    (7)微信小程序开发

    七大模块目录一览

    一、架构师必备Java基础

    1、深入理解Java泛型
    2、注解深入浅出
    3、并发编程
    4、数据传输与序列化
    5、Java虚拟机原理
    6、高效IO

    二、设计思想解读开源框架

    1、热修复设计
    2、插件化框架设计
    3、组件化框架设计
    4、图片加载框架
    5、网络访问框架设计
    6、RXJava响应式编程框架设计

    三、360°全方位性能调优

    1、设计思想与代码质量优化

    2、程序性能优化

    • 启动速度与执行效率优化
    • 布局检测与优化
    • 内存优化
    • 耗电优化
    • 网络传输与数据储存优化
    • APK大小优化

    3、开发效率优化

    • 分布式版本控制系统Git
    • 自动化构建系统Gradle

    四、Android框架体系架构

    1、高级UI晋升
    2、Android内核组件
    3、大型项目必备IPC
    4、数据持久与序列化
    5、Framework内核解析

    五、NDK模块开发(音视频系列)

    1、NDK开发之C/C++入门
    2、JNI模块开发
    3、Linux编程
    4、底层图片处理
    5、音视频开发
    6、机器学习

    六、Flutter学习进阶

    1、Flutter跨平台开发概述
    2、Windows中Flutter开发环境搭建
    3、编写你的第一个Flutter APP
    4、Flutter Dart语言系统入门

    七、微信小程序开发

    1、小程序概述及入门
    2、小程序UI开发
    3、API操作
    4、购物商场项目实战

    学习福利

    【Android 详细知识点思维脑图(技能树)】

    其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

    虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

    这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

    由于篇幅有限,这里以图片的形式给大家展示一小部分。

    详细整理在GitHub可以见;

    Android架构视频+BAT面试专题PDF+学习笔记​

    91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

    网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

    展开全文
  • 之前手比较贱,想试试最小dp最大可以调多少,主要是想方便提取文字,我的小米8调成800还可以,之后脑子一热调成1200。然后直接弹回桌面然后就黑屏了,之后自动开机就进入了recovery,然后开机就会直接进recovery。...
  • 狂点击,OK它会提示你需要再点几下进入开发者模式 通过数据线连接电脑,以Android studio 开发软件为例,只需要点击运行按钮,手机上会出现提示,允许USB调试?选择是 好了, 程序就会出现在你手机上了。 ...
    1. 打开 设 置 -> 关于手机找到 版本号
    2. 狂点击,OK它会提示你需要再点几下进入开发者模式
    3. 通过数据线连接电脑,以Android studio 开发软件为例,只需要点击运行按钮,手机上会出现提示,允许USB调试?选择是
    4. 好了, 程序就会出现在你手机上了。
    展开全文
  • Android 使用开发者模式允许模拟位置

    千次阅读 2020-05-10 13:45:27
    uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:na...
    1. 添加权限
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <!-- Android 10 需要, 后台读取位置信息 -->
        <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
        <!-- 模拟位置 -->
        <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"
            tools:ignore="MockLocation,ProtectedPermissions" />
    
    2. 获取位置管理者
            // 获取位置管理服务
           val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
    
    3. 添加请求位置更新
    locationManager?.requestLocationUpdates(
                LocationManager.GPS_PROVIDER,
                1000L,
                10F,
                object :
                    LocationListener {
                    override fun onStatusChanged(provider: String, status: Int, extras: Bundle) {
                        debug("onStatusChanged")
                    }
    
                    @SuppressLint("MissingPermission")
                    override fun onProviderEnabled(provider: String) {
                        debug("onProviderEnabled")
                        val lastKnownLocation = locationManager?.getLastKnownLocation(provider)
                        upData(lastKnownLocation)
                    }
    
                    override fun onProviderDisabled(provider: String) {
                        debug("onProviderDisabled")
                    }
    
                    override fun onLocationChanged(location: Location) {
                        // 当GPS定位信息发生改变时,更新位置
                        debug("onLocationChanged")
                        upData(location)
                    }
                })
    
    4. 判断是否允许模拟位置
            // 判断是否开启允许模拟位置
            // Android 6.0以下,通过Setting.Secure.ALLOW_MOCK_LOCATION判断
            // Android 6.0及以上,需要【选择模拟位置信息应用】,未找到方法,因此通过addTestProvider是否可用判断
            var canMockPosition =
                (Settings.Secure.getInt(contentResolver, Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0)
                        || Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
    
    
    5. 添加测试位置提供
                    // gps 提供
                    val providerStr = LocationManager.GPS_PROVIDER
                    // 位置提供者
                    val provider = locationManager?.getProvider(providerStr)
                    if (null != provider) {
                        // 添加测试位置提供
                        locationManager?.addTestProvider(
                            provider.name,
                            provider.requiresNetwork(),
                            provider.requiresSatellite(),
                            provider.requiresCell(),
                            provider.hasMonetaryCost(),
                            provider.supportsAltitude(),
                            provider.supportsSpeed(),
                            provider.supportsBearing(),
                            provider.powerRequirement,
                            provider.accuracy
                        )
                    } else {
                        locationManager?.addTestProvider(
                            providerStr, true, true, false,
                            false, true, true, true, Criteria.POWER_HIGH,
                            Criteria.ACCURACY_FINE
                        )
                    }
                    // 设置测试提供可用
                    locationManager?.setTestProviderEnabled(providerStr, true)
                    // 设置测试提供状态
                    locationManager?.setTestProviderStatus(
                        providerStr,
                        LocationProvider.AVAILABLE,
                        null,
                        System.currentTimeMillis()
                    )
                    // 模拟位置可用
                    hasAddTestProvider = true
    
    6. 打印位置信息
    
        private fun upData(location: Location?) {
            if (location != null) {
                val sb = StringBuilder()
                sb.append("实时的位置信息:\n")
                sb.append("经度:")
                sb.append(location.longitude)
                sb.append("\n纬度:")
                sb.append(location.latitude)
                sb.append("\n高度:")
                sb.append(location.altitude)
                sb.append("\n速度:")
                sb.append(location.speed)
                sb.append("\n方向:")
                sb.append(location.bearing)
                sb.append("\n当地时间:")
                sb.append(location.time)
    
                val geocoder = Geocoder(this)
                val address = geocoder.getFromLocation(location.latitude, location.longitude, 1)[0]
                sb.append("\n国家: ")
                sb.append(address.countryName)
                sb.append("\n城市: ")
                sb.append(address.locality)
                var i = 0
                val addressLine: String? = address.getAddressLine(i)
                while (addressLine.isNullOrEmpty()) {
                    sb.append("\n街道$i:")
                    sb.append(addressLine)
                    i++
                }
                debug(sb.toString())
    
                updateLocation(location)
            }
        }
    
    7. 更新位置
        /**
         * 更新位置
         */
        private fun updateLocation(location: Location) {
            thread {
                while (true) {
                    Thread.sleep(1000)
    
                    if (hasAddTestProvider) {
                        val providerStr = LocationManager.GPS_PROVIDER
                        val mockLocation = Location(providerStr)
    //                    mockLocation.latitude = location.latitude + 0.002715f// 维度(度)
    //                    mockLocation.longitude = location.longitude - 0.0051f // 经度(度)
                        mockLocation.latitude = 43.870168
                        mockLocation.longitude = 87.562230
                        mockLocation.altitude = location.altitude // 高程(米)
                        mockLocation.bearing = location.bearing // 方向(度)
                        mockLocation.speed = location.speed //速度(米/秒)
                        mockLocation.accuracy = location.accuracy // 精度(米)
                        mockLocation.time = Date().time // 本地时间
                        mockLocation.elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos()
                        locationManager?.setTestProviderLocation(providerStr, mockLocation)
                    } else {
                        debug("hasAddTestProvider: $hasAddTestProvider")
                    }
                }
            }
        }
    

    注: 需要开启开发者模式及选择模拟位置信息应用

    项目地址

    展开全文
  • USB开发者模式 安卓 adb操作 + 安装

    千次阅读 2019-06-27 18:01:23
    USB开发者模式 安卓 adb操作 + 安装 这是adb 安装!!!!!!!!!!!! 不是gdb 安装 adb 下载地址 下载 : ADB Kits (525 KB) 和 ADB Driver Installer 先 安装 ADB Driver Installer 1 .手机插上电脑 打开...

    USB开发者模式 安卓 adb操作 + 安装
    这是adb 安装!!!!!!!!!!!! 不是gdb

    • 安装 adb
      下载地址
      下载 :
      ADB Kits (525 KB) 和 ADB Driver Installer

      先 安装 ADB Driver Installer

      1 .手机插上电脑 打开手机开发者模式 开启USB 调试
      2 . 打开ADB 软件 选择 你的手机 安装
      在这里插入图片描述
      这里 显示OK 代表 ADB 安装成功

      然后 解压 ADB Kits (525 KB)
      用 dos 进入解压目录 或者 配置环境变量
      将手机与PC连接,手机中询问是否调试,一直点同意。PC中打开cmd 输入

    adb devices
    

    显示 如下信息 代表 安装成功
    在这里插入图片描述
    adb 命令操作文档

    官方文档
    ADB 操作命令详解及用法大全
    玩转ADB命令(ADB命令使用大全)

    展开全文
  • android开发者选项

    千次阅读 2019-05-07 17:33:52
    默认User版本没有“开发者选项”,我们可以通过点击版本号7次来显示开发者模式,今天来看下代码中是如何处理的: 首先是 ackages/apps/Settings/src/com/android/settings/Settings.java的初始化处理: 布尔值...
  • Android开发者模式前言打开开发者模式打开USB调试授权 前言 首先放个google官方链接:配置设备上的开发者选项 对于刚入坑的同学来说,调试Android软件略微有点麻烦,经常遇到模拟器无法调试App的问题,所以写篇文章...
  • 不过那个文章不够细致,开发者模式配置其实分两步走。下面我以我的小米举个例子(手机为英文模式,不过我会作中文讲解,看懂是瞬间的事情。) 第一大步: 首先点击 My device(我的设备) 然后点击 All spe
  • 添加如下代码 ...--- a/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/development/DevelopmentSettings.java +++ b/vendor/mediatek/proprietary/packages/apps/MtkS...
  • 1. 将Chromium OS置为开发者模式 2. 开发者模式下进入系统,使用谷歌账号登录后,开启Google Play商店 3. 配置Chromium OS的防火墙使之接受adb连接传入 4. 打开ADB调试 5. 从开发机器进行adb connect 1. 将...
  • (一)Q之前的版本,关于开发这模式是否显示 默认user版本不显示开发者选项这一栏,需要通过连续点击版本号7次来显示. packages\apps\Settings\src\com\android\settings\DeviceInfoSettings.java static final int...
  • Android开发者选项里的主要功能详解

    千次阅读 2018-07-21 17:59:23
    Android开发者选项里的主要功能详解 第一项:提交错误报告。这个不需多说,提交当前设备状态的信息以邮件形式发送。 第二项:桌面备份密码。在这里可以设置或更改桌面完整备份的密码,据估计是谷歌在线备份的相关...
  •  首先根据自己的手机型号百度打开开发者模式,  我的是vivo,设置---》更多设置--》关于手机--》软件版本号连续点击会提示开启开发者模式。  并在开发者选项里打开USB调试。 二.Android Studio设置  在...
  • Google为了方便开发者调试Android程序专门开发了开发者选项功能,能够让开发者方便快捷调试Android应用程序。对于一般用户无需关注,所以往往开发者选项在新版本中都会隐藏,需要特殊操作才会展示入口,比如连续点击...
  • 方法1 private static String getSystemProperty(String key, String defaultValue) { ... clazz= Class.forName("android.os.SystemProperties"); Method get = clazz.getMethod("get", String.class
  • 调出开发者模式中的坐标

    千次阅读 2017-04-07 10:19:08
    adb shell settings put system pointer_location 1
  • 可能有些小伙伴还不知道手机的开发者模式能干啥,其实我也只常用几个,哈哈. 1.开启开发者模式: 这个简单.进设置,一般是关于手机,然后狂点版本号就好了. 有些手机会隐藏开发者模式功能,就得去拨号界面拨号 比如vivo是:...
  •  对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现“玄学曲线”的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个说不清道不明的东西——流畅度。到底多流畅才叫流畅,多卡...
  • 搭载 Android 9(API 级别 28)或更高版本的设备包含一个名为 System Tracing 的系统级应用。此应用类似于systrace命令行实用工具,但允许您直接从测试设备本身录制跟踪记录,而无需插入设备并通过 ADB 连接到该设备...
  • 本文基于Android5.1 packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java @Override public void onResume() { super.onResume(); if (mUnavailable) { // Show error message ...
  • android 如何用代码关闭 开发者模式 注意是关闭 而且使用代码关闭 手机系统 4.4.4
  • 20210427瑞芯微RK3399在Android10下进入开发者模式 2021/4/27 10:30 开发板:中山市天启智能科技有限公司AIO-3399J https://www.t-firefly.com/doc/download/31.html SDK:版本号Android10.0 往上拉! 图片 ...
  • 设置-关于手机-连续点击版本 打开开发者模式的功能实现 long[] mHits = new long[3]; @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.get...
  • android开发模式不能正常开启的问题

    千次阅读 2018-04-23 11:35:57
    前阵子,我打算在真机测试程序,几经周折,就是没得一点反应,...1. 设置开发模式,这里贴一个百度经验,转载:https://jingyan.baidu.com/article/851fbc37cce3213e1e15ab5a.html 另外一篇帖子:https://blog.csd...
  • Android手机开发者模式

    千次阅读 2018-07-24 17:57:04
    开发者模式 USB调试 USB调试(安全设置)
  • 安卓手机开启开发者选项

    千次阅读 2019-12-18 16:42:17
    一般我们将安卓手机通过数据线连接到电脑,会提示将手机用于干什么,有传输文件选项,充电选项,开发者调试选项。我们选择充电之后,再不会出现这个提示。有的手机开发者选项不会显示在设置界面,需要通过一些特殊...
  • 进入adb所在的目录 cd /Users/shaiding.wang/Library/Android/sdk/platform-tools
  • 判断当前是否已经开启开发者调试模式: boolean enableAdb = (Settings.Secure.getInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0) > 0); if(enableAdb){ Toast.makeText(this, "enable", 1).sho
  • Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关,从中整理出15个对日常Android开发...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,120
精华内容 41,648
关键字:

安卓开发者模式