自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力的八戒

左手代码,右手艺术

  • 博客(168)
  • 资源 (24)
  • 收藏
  • 关注

原创 uiautomator实现控件查找与点击

android自动化测试

2022-12-17 13:51:24 594 1

原创 ndk之C调用java方法以及动态注册

一、静态注册和动态注册ndk开发需要在java层和native层相互调用代码,如何确定native方法与jni函数之间的映射关系呢?这就涉及到jni函数的注册,注册方式有两种:静态注册和动态注册。静态注册采用基于约定的命名规则(Java_开头,后接类的全限定名加下划线,方法名这三个组成部分组成,如下代码所示),可以通过javah或IDE自动生成native方法对应的函数声明。优点是简单;缺点是不灵活,修改java类名或jni方法名时,需要同步修改对应的native函数命名。extern "C"JN

2022-01-30 16:55:27 1996

原创 AS Arctic Fox配置360加固命令行模式gradle插件

在Gradle中创建自己定义插件,Gradle提供了三种方式:在build.gradle脚本中直接使用在buildSrc中使用在独立Module中使用本文介绍的是第三种,第三种方式的插件可以上传到本地或者网络上供其它工程或者项目使用一、配置流程1.1插件module代码编写新建一个module,java module或者android library module都可以,反正后面会修改插件module的build.gradle文件,去掉相关依赖。在插件module的main目录下新建groo

2022-01-24 20:20:23 2236 1

原创 mmap实现进程内写数据和读数据

使用mmap函数可以实现内存映射,腾讯的mmkv就是基于mmap函数实现的匿名共享内存实现的,android中的binder也用到了mmap函数。本文在同一个进程内(进程和子进程间)实现了一个mmap共享内容的demo。首先声明一个mmap java工具类BinderHelper.java//BinderHelper.javapackage com.example.mmapapp;public class BinderHelper { // Used to load the 'native

2022-01-07 20:33:45 2176

原创 dialog token null is not valid; is your activity running源码分析

大家直到在android中普通dialog(不是系统级dialog)构造函数的context必须是activity类型的,不能是application类型的context,为什么呢?本文从源码角度来分析下,分为androidX场景和非androidX场景。下面是一个简单的普通dialog弹出,关键在于第一Builder的构造参数是application的context,毫无意外,运行会报错。AlertDialog alertDialog = new AlertDialog.Builder(getAppl

2021-12-11 15:55:32 3228 1

原创 Handler.post不执行

使用HandlerThread的Looper创建一个Handler的对象mIoHandler,然后通过点击事件go触发该mIoHandler的post方法去执行一个Runnable,该Runnable会持有锁等待直到被唤醒(模拟耗时操作),点击事件undo则可以试下唤醒锁等待的功能,代码如下mIoHandlerThread = new HandlerThread("io");mIoHandlerThread.start();mIoHandler = new Handler(mIoHandlerThre

2021-11-23 20:34:40 3513

原创 命令模式以及在android中的使用

一、原理命令模式将任务请求封装成命令对象,命令对象中封装有任务处理者对象,调用者持有这个命令对象,这就使得调用者和处理者没有直接联系,降低了耦合度。同时,根据不同的请求可以参数化命令对象,可以将多个对象放入到集合中排队执行。命令模式的UML图如下,安利一个UML绘制网站https://app.diagrams.net/。命令模式可以适用组合的方式将发出请求的对象和执行请求的对象解耦,这样后面拓展新的命令比较容易;缺点就是会出现过多的具体命令类以及处理者类。二、实践那上课为例吧,现在有个一个调用者-

2021-08-24 20:37:48 367

原创 单例模式以及在android中的使用

一、原理程序中某个对象可能比较消耗内存或者创建多个对象实例会引起运行错乱,此时就要求程序中只有一个该对象的实例,也就是单例模式的由来。为了防止开发者创建多个实例,一般会将单例类的构造器设为私有(private),这样你在其它地方去new单例类会失败;然后创建一个该单例类的静态方法去初始化实例对象并返回实例对象,当然实例对象也要是private static的,这样就必须通过静态方法获取该类的实例对象了。考虑到创建对象的过程并不是原子的,也要兼顾多线程安全问题。二、分类有多种构建单例的方式,它们都有优缺

2021-08-14 16:27:54 1101

原创 高通设备进入高通9008模式

1、通过下面adb 命令进入adb reboot edl2、上面adb 命令进入9008失败的话,设备关机,通融过usb线连上电脑,同时按住音量上键、音量下键和电源键一会,即可进入9008模式附上进入9008成功的电脑端口截图:...

2021-08-12 11:34:57 83732 1

原创 模板方法模式以及在android中的应用

一、原理模板方法模式封装了一个算法(方法)流程的基本步骤,有些步骤的实现已经在父类中实现好,而另外一些步骤则可以推迟到子类中等待子类去具体实现,子类就可以在不改变算法结构的情况下,重新定义算法中的某些步骤。这样做有什么好处呢?首先,体现了面向对象的封装性,一些算法的基本步骤不允许修改,防止子类随意的修改算法流程;其次,对于一些公共代码可以直接将实现封装在父类,这样就起到了代码复用的目的;同时,也可以在父类的封装算法中添加一些钩子,让子类可以适当的改变算法的部分可变流程,增加算法的拓展性。模板方法模式和

2021-08-09 19:59:54 169

原创 View测量流程与困惑

周末重新温习了一下《Android开发艺术探索》的View测量部分,View的尺寸由父容器和控件本身的LayoutParams决定的。父容器调用View的measure方法,View的measure方法接着调用onMeasure方法,在onMeasure方法确定测量宽高后通过setMeasuredDimension方法设置宽高,整个测量流程是measure->onMeasure->setMeasuredDimension。//View.javapublic final void measur

2021-08-02 21:06:27 214 1

原创 责任链模式

一、原理当有两个或两个以上对象有机会处理某个请求时,可以将这些对象添加到一个对象链表,然后对链表中的对象依次遍历,如果某个对象可以处理请求则遍历结束,该请求被这个对象处理消耗掉;否则,如果该对象无法处理请求,就请求链表中的下一个对象,以此类推,这就是责任链模式。责任链模式可以将请求发送者和处理者解耦,请求发送者只和链表头发生联系,这样也便于链表的排序和增删,当然因为循环调用代码调试以及排错可能也麻烦些。android中用到很多责任链模式的地方,比如view事件分发、有序广播、以及okhttp中的拦截器

2021-07-24 20:41:38 122 2

原创 Scheduling restart of crashed service解决方案与源码分析

测试发现一个bug,service中某个方法由于空指针导致程序挂掉,接着触发程序的保活机制触发程序重启,但是这个异常service先启动访问未初始化资源导致程序连续循环重启,log中打印一个信息很关键。ActivityManager: Scheduling restart of crashed service com.shan.mvvm/.MyService in 1000ms for start-requested系统按照程序启动时要求重新启动了service。这就要提到Service的onStar

2021-07-17 10:30:43 10056 1

原创 子线程Looper.loop之后

android规定不允许子线程更新UI,在ViewRootImpl 类中很多操作UI的方法都会调用checkThread()方法检查线程,如果当前线程与创建ViewRootImpl (mThread )的线程不一致就会报“Only the original thread that created a view hierarchy can touch its views”//ViewRootImpl.javavoid checkThread() { if (mThread != Thread.cu

2021-07-05 21:11:14 1070 2

原创 电脑无法通过USB方式访问手机存储

本人电脑是win10系统,偶尔将安卓手机连接到电脑,USB用途选择“文件传输"或者连接方式选择“媒体设备(MTP)”之后,发现电脑无法显示手机图标,而且找不到盘符或移动盘的标志,通过驱动精灵、驱动人生等软件没解决问题,网上搜索了一下找到了解决方案,解决步骤如下:电脑->右键->管理->设备管理器,可以看到便携设备一列的下面MTP前面有个黄色感叹号。...

2021-06-23 21:12:38 13037 3

原创 面向切面编程:aspectJ在Android中的使用

一、 简介和使用场景aspectJ(https://www.eclipse.org/aspectj/)是eclipse社区中的一个开源工具,可以对java编程语言面向切面进行无缝拓展、完全兼容java语言,它可以对关注切点进行优雅处理,比如错误检查与处理、性能优化、监视与日志记录等场景。说到面向切面编程,大家可能会联想到著名的Spring AOP,Spring AOP是基于动态代理模式实现的。代理模式分为静态代理和动态代理,静态代理在编译期修改代码将指定对象注入到代码中,拓展性差、耦合性强;动态代理在运

2021-06-19 17:38:04 1057 5

原创 ThreadLocal和InheritableThreadLocal

一、引子最近在研究fps帧率时候了解到可以通过Choreographer刷新帧率的方法来统计界面刷新帧率,在当前应用确实可以,但是却不能监测其他app(比如QQ、微信、酷我音乐),为什么呢?难道说Choreographer不是全局变量。...

2021-06-12 18:28:49 1218 4

原创 apk的打包和优化

一、打包过程与工具借用下Android 打包流程一文画的apk打包流程图。

2021-06-04 20:07:31 659 1

原创 Android路由

一、模块化和组件化Android开发中,随着功能的不断增加,整个项目越来约庞大,导致代码结构混乱,修改繁琐,管理困难,android模块化开发的思想应运而生。模块化主要时为了解耦,将功能以模块的形式进行封装,模块间通过接口调用形进行通信,不同功能可以由不同的开发人员去开发、维护,每个开发人员只需关注自己负责的模块即可。 简单的模块化开发只需将不同的模块代码放在不同的文家夹路径下即可区分,但是复杂的项目或者便于独立依赖引用的需要可能需要将不同的模块功能放置在不同的library中,此时依赖和接触依赖只需在

2021-06-01 21:21:57 3097 11

原创 手动实现bindview

以前android开发中用到过xUtils3和butterknife框架来动态注册控件id,节省繁琐的findViewById操作,今天就来试着自己写一个findViewById操作包装库。首先需要知道xUtils3和butterknife使用注解在编译时自动生成模板代码来实现的,那么就需要注解,注解之前在《注解》一文中有介绍; 同时为了方便生成java文件可以使用javapoet,javapoet是由squareup公司开源的java代码生成器,可以去github上查看详细文档。1、总览总的工

2021-05-21 20:04:13 686 2

原创 Project Butter与invalidate

一、Project Buttergoogle希望摆脱android UI交互方面的滞后、卡顿问题,在android4.1提出了Project Butter,力争UI如黄油般丝滑。为了确保一致的帧速率,Android 4.1 将Vsync 计时扩展到了所有由 Android 框架完成的绘图和动画中。包括应用渲染、轻触事件、画面构成和显示刷新在内的一切操作均按照 16 毫秒的 Vsync 检测信号同步运行,因此帧不会提前或延迟。Android 4.1 还在图形管道中添加了三重缓冲,以实现更加一致的.

2021-05-12 21:20:25 225 5

原创 anr原因二:BroadcastQueue

本文基于android9.0源码分析。android出现经常与四大组件有紧密联系,主要有四种情况1、activity界面输入事件超时 2、broadcastReceiver发送以及接收事件超时 3、service处理事务超时 4、contentProvider处理事务超时。在上一篇文章《anr原因一:inputDispatcher》中对输入事件的anr源码进行了分析,本文则对broadcastReceiver产生的anr进行分析。一、发送广播先从发送广播说起吧,执行sendBroad

2021-04-29 17:53:35 750 1

原创 anr原因一:inputDispatcher

android出现经常与四大组件有紧密联系,主要有四种情况1、activity界面输入事件超时 2、broadcastReceiver发送以及接收事件超时 3、service处理事务超时 4、contentProvider处理事务超时。先透露一下,anr弹框最终会调用ProcessRecord的appNotResponding方法,搜索源码发现有四个地方调用了ProcessRecord.appNotResponding方法,这也验证了上面的说法。本文只分析activity相关的inputDisp

2021-04-23 15:49:18 2614 1

原创 AccessibilityService事件输入源码

android底层Input事件传递流程一文从源码角度介绍了android底层输入事件的来源与分发,那么本文就专门介绍下无障碍服务的来源与分发。本文基于android9.0源码进行分析,从AccessibilityService绑定到系统服务以及系统服务发送事件消息给AccessibilityService两个过程来分析。1、服务绑定在无障碍服务和悬浮框一文中介绍了应用层实现无障碍服务的一个例子。我们知道应用层要实现无障碍服务首先要创建一个AccessibilityService的子类,并在这个子类

2021-04-21 19:42:37 1195 1

原创 android底层Input事件传递流程

在android事件分发机制一文中介绍了Touch事件的分发,那么Touch事件从哪里来的呢?本文基于android9源码进行分析。一、IMS首先,触摸事件肯定需要驱动去接收,android是在/dev/input节点获取事件。由于WindowManagerService.java(后面简称WMS)负责界面窗口的管理,既然是屏幕事件那么肯定和WMS有关了,WMS是在SystemServer.java的startOtherServices方法中启动的,WMS的构造参数有InputManagerSe

2021-04-16 15:22:35 1130 1

原创 ERROR:STATUS_BROM_CMD_SEND_DA_FALL(0xC0060003)

昨天使用mtk工具SP_Flash_Tool_exe_Windows_v5.2052.00.000刷机失败,提示ERROR:STATUS_BROM_CMD_SEND_DA_FALL(0xC0060003)。上网搜了下,有如下回答1、手机驱动安装不完全我电脑安装驱动精灵和驱动人生扫描驱动,但是并不需要更新,所以不是驱动问题2、windows10电脑不兼容,我的异地同事也是windows10电脑并且使用的是相同版本的SP_Flash_Tool工具,他却可以,所以也不是版本的问题3

2021-04-08 19:40:48 11831 5

原创 RxJava(被)观察者创建与线程调度

本文使用rxjava2版本进行讲解:implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'implementation 'io.reactivex.rxjava2:rxjava:2.1.8'0、 代码实例//被观察者Observable observable= Observable.create(new ObservableOnSubscribe<String>() { @Override public v

2021-04-03 18:06:18 410

原创 okhttp执行与拦截器

本文使用okhttp3源码来讲解1、同步和异步的区别(1)同步方法execute()okHttpBuilder.build().newCall()会创建一个RealCall对象//OkHttpClient.java@Override public Call newCall(Request request) { return RealCall.newRealCall(this, request, false /* for web socket */);}然后看下RealCall的

2021-03-18 20:49:00 265 1

原创 Window相关

1、ViewRootImpl的数量android中Window.java的唯一实现类是PhoneWindow.java,WindowManager.java的实现类是WindowManagerImpl.java,WindowManagerImpl.java中的WindowManagerGlobal用于具体操作View。WindowManagerGlobal.java添加View时会调用ViewRootImpl的setView(view, wparams, panelParentView, userId)

2021-03-15 20:59:27 122

原创 Synchronized锁升级

jdk1.5以及以前的版本Synchronized锁的堵塞和唤醒需要用户态和内核态的切换,比较消耗CPU资源,属于重量级锁以及悲观锁的范畴。从jdk1.6开始,Synchronized锁有了一定的优化,偏向锁和轻量级锁是乐观锁,重量级锁才是悲观锁。偏向锁对象锁会偏向于第一个获得它的线程,考虑到大部分情况是无锁状态,一个线程获取到了某个对象的访问,那么下次大概率还是可以获取到这个对象的访问的,那么此时就不需要加锁,不需要进行同步操作。一个线程获取到只需要在对象的Mark Word上加个01(偏向模

2021-03-15 10:34:04 153

原创 jdk Thread状态与生产者消费者模型

public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runnable * state is executing in the Java virtual machine but it may ...

2021-03-01 17:43:06 161

原创 kotlin中单例类与静态方法

kotlin中内部类和单例类用object修饰,java代码如下:class Demo { private static class SingletonHolder { private static Demo instance = new Demo(); }}转化为kotlin代码如下:internal class Demo { private object SingletonHolder { private val instan

2021-02-22 19:49:13 634 1

原创 Smart cast to ‘TextView!‘ is impossible, because ‘txt‘ is a mutable property

初学kotlin后写了个android demo,但是TextView类型变量txt却提示Smart cast to 'TextView!' is impossible, because 'txt' is a mutable propertythat could have been changed by this time.private var txt: TextView?=nulltxt=findViewById(R.id.txt)txt.setOnClickListener { Toast.

2021-02-13 15:14:53 1679

原创 无障碍服务和悬浮框

一、无障碍服务开启AccessibilityService是一个抽象类,应用需要创建Service来继承AccessibilityService并实现抽象方法。1、创建HongBaoService.java2、AndroidManifest.xml中声明并配置<service android:name="com.yhao.floatwindow.HongBaoService" android:enabled="true" android:exported=

2021-02-05 08:55:26 2783 11

原创 git pull

git pull的默认行为是git fetch + git mergegit pull --rebase则是git fetch + git rebase.git fetch 从远程获取最新版本到本地,不会自动合并分支1、git pull和git pull --rebase提交后分支区别假设共同基线是commit-D,从D分出了master分支和topic分支 A---B---C topic / D---E---F---G master(1)git pull

2021-01-23 15:16:43 3267

原创 git revert

git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…​git revert --continuegit revert --quitgit revert --abortgit-revert - 反做版本库中已经存在的提交记录,默认情况下反做某条记录后会产生一条新的记录。通过-n参数可以避免再次产生一条提交记录-m指定回滚的父节点(当回滚.

2021-01-15 17:23:42 1256 2

原创 数据双向绑定:DataBinding VS Livedata+ViewModel

一、DataBindingDataBinding是选择一个可以修改的控件,比如EditText、CheckBox等,对比单向绑定,需要多一个=符号,并且变量模型使用ObservableField,就能保证View层和ViewModel层的状态同步了。BaseObservable 单向绑定,在中间又要写注解,又要加注解,然后还得用notifyPropertyChanged();和notifyChange();进行刷新。这样整体下来是比较麻烦的,所以,可以用ObservableField...

2020-12-26 19:06:47 3687 1

原创 android studio Live Templates

android studio中有一些模板可以加快开发者的开发效率,比如下面android自带的模板,输入const就会提示常量定义模板,具体内容在Templates text中展示,还有fbc,foreach等,可能大家平时没注意。当然,开发者也可以自定义模板。1、位置通过Settings ->Editor -> Live Templates可以进入模板展示界面2、创建模板组既然是自己自定义模板,那就创建一个模板组吧,方面后续创建多个模板3、创建模板模板组

2020-11-07 17:45:21 285

原创 FileProvider安装应用

一、权限相关1、“未知来源”应用ndroid8.0及其以上系统,为了申请“未知来源”,需要在清单文件添加权限<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>然后代码中动态申请public void setInstallPermission(){ boolean haveInstallPermission; if(Build.VERSION.SDK_INT

2020-10-30 20:38:01 1674

原创 C++类的前向声明

前向声明和#include类似,但是#include会增加编译时间,而且#include文件中可能有很多用不到的功能模块。1、对于未定义的类,使用前要先前向声明,前向声明后只能使用对象指针以及对象引用,不能直接使用对象,更不能访问对象细节#include<stdio.h>//class B;//注释掉前置声明会报错class A{public : void func_A(B &b); void printA(){ printf("pri

2020-10-01 17:07:58 1071

2005-2021信息系统项目管理师历年真题(含上午题、案例分析、论文)试题和答案.7z

2005-2021信息系统项目管理师历年真题(含上午题、案例分析、论文)试题和答案

2021-08-03

aspectj-1.9.6.jar.7z

aspectj-1.9.6.jar.7z

2021-06-25

Camera2Demo2.7z

YUV_420_888是YUV_420的一个大类,android camera2的ImageReader中设置了YUV_420_888后具体返回数据U和V是单独处于不同平面还是相同平面交叉排列要看具体的设备了,一般来说pixelStride=1表示独占一个平面(一般Y平面就只有Y数据),pixelStride=2则表示U和V是交叉排列。 最近工作中发现ImageReader设置了特定尺寸后,实际返回的数据并不是之前设定的尺寸。

2020-08-20

Android.mk编译内置无源码apk

有个编译好的第三方apk,合入到系统中,在packages\apps目录创建文件夹wukong,将第三方wukong.apk拷贝到wukong文件夹下,并在wukong文件夹创建Android.mk

2020-08-18

python-3.8.3.exe.7z

python安装包,适用于为windows,32位和64位都兼容,

2020-06-15

androidqzt_downcc.com.zip

android中设置字体库 Typeface typeFace = Typeface.createFromAsset(this.getAssets(), "fonts/xx.ttf"); textView.setTypeface(typeFace); textView.setText("帅气");

2019-09-18

factory.zip

阅读设计模式之禅以及大话设计模式,写个demo加深印象,可以参考作者文章原 《简单工厂模式、工厂方法模式和抽象工厂模式》https://blog.csdn.net/u013795543/article/details/100173672

2019-08-31

OPENGL ES 3.0编程指南 原书第2版 中文版.7z

android OpenGL ES学习必备书籍,从基本到三角形四边形绘制到离屏渲染应有尽有,很适合零基础入门

2019-07-12

framework.jar

android源码编译后生成的./out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar,可以作为android引用库

2018-09-17

android自定义View扫描人脸效果

本文利用SrcIn实现一个人脸扫描的效果,步骤如下: 1、准备两个人脸照片(一明一暗),暗照片作为背景,亮照片作为src前景显示 2、然后通过SrcIn用一个透明矩形框(Dst)与亮照片(src)取交集即可得出一个亮照片的局部区域 3、再给透明矩形一个上下的速度,即可达到扫描的效果

2018-08-04

android自定义View之气球碰撞效果

算法步骤: 1、小球数量ballCount,可以设个最大值,在这个阈值内去随机数 2、小球圆心随机坐标(mX,mY)以及半径radius 3、小球在x方向和y方向的随机速度mSpeedX,mSpeedY 4、本次效果小球默认白色,通过alpha设置透明度,实际你们也可以通过随机颜色值达到五彩频繁的小球效果。 5、初始时给每个小球一个初始随机位置(不能超出屏幕)以及初始随机速度。 6、每个一段时间计算一下小球位置并刷新一下界面,当小球到达屏幕边沿则速度设为当前相反数达到反弹的效果。

2018-07-14

android加载大图

故事要从一场面试说起,当问到如何加载一个大图而不会发生OOM,这里有两种途径,一、降采样大图;二、局部加载大图 由于android内存的限制,andoid系统给每个应用分配的内存是有限的,当直接加载一个占用内存加大的图片时就会发生OOM. 一、降采样大图 主要是利用BitmapFactory.Options对象的inSampleSize参数,根据空间尺寸与大图尺寸的比率来缩小大图,从而显示大图的缩略图。 二、局部加载大图 主要利用BitmapRegionDecoder类的decodeRegion方法来加载局部区域,通过重写View的onTouchEvent方法监听手指滑动事件,更新显示区域。

2018-07-02

高通烧写软件

软件太大,存到百度云,附件是下载链接 高通烧写系统最坑,这就需要拼手速啦,准备好系统刷机包 1、软件安装以后,找到安装目录,双击.\Qualcomm\QPST\bin\QFIL.exe打开工具 2、工具主界面Select Build Type有两个选项(Flat Build和Meta Build),在不知道选择哪种烧写类型时先选择Flat Build试试吧,不行再换Meta Build 3、工具主界面Select Programmer选择.elf文件 4、工具主界面点击”LoadXML“选择xml文件,此时”Download"按钮不可以点击 4、手机关机,同时按音量上键、下键和开机键后通过usb连上电脑,此时电脑上会显示手机端口并且”Download"按钮可以点击,点击”Download"按钮后看到下面Status栏开始烧写了,迅速松开音量上键、下键和开机键

2018-06-06

展讯烧写工具

sprd烧写系统相对于qcom简单一些,比mtk稍微复杂,准备好系统刷机包 1、双击.\Bin\ResearchDownload.exe打开工具 2、工具主界面点击左上角第一个按钮“Load packet”选择pac展讯rom包 3、pac包load完成后,点击“Start downloading"按钮 4、手机关机,同时按音量下键和开机键(有些手机是音量上键和开机键)后通过usb连上电脑自动开始烧写

2018-06-06

mtk系统烧写工具

mtk烧写系统相对于sprd和qcom简单一些,需要准备好系统刷机包 1、双击./SP_Flash_Tool_exe_Windows_v5.1744.00.000/flash_tool.exe打开工具 2、工具主界面的Download-Agent一栏维持默认(.\SP_Flash_Tool_exe_Windows_v5.1744.00.000\MTK_AllInOne_DA.bin),不用手动选择了 3、Scatter-loading File一栏需要你手动选择刷机解压包里的scatter.txt文件 4、下面选择“Firmware Upgrade" 5、手机关机,通过usb连上电脑,点击“Download"开始烧写

2018-06-05

开发工具jdk1.9第4部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传

2017-11-12

开发工具jdk1.9第3部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传

2017-11-12

开发工具jdk1.9第二部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传,cdsn强制每个资源要2分,操蛋

2017-11-12

开发工具jdk1.9第1部分

拓展了javafx.scene.control包,如增加了javafx.scene.control.Alert等类 源文件384M,分为4部分上传,其他部不要资源分额

2017-11-12

Handler,Looper和Message

Handler,Looper和Message的理解和练习

2017-08-04

ViewPager和Fragment的简单使用

ViewPager和Fragment的简单使用

2016-12-09

EventBus demo

实现service和activity之间的消息传递

2016-10-15

Sercie的aidl学习

Sercie的aidl学习

2016-10-11

Service基础学习笔记

个人学习笔记,仅供参考

2016-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除