- 博客(20)
- 资源 (6)
- 收藏
- 关注
原创 应用的主线程和binder线程是如何启动的
kernel启动后,init进程会通过init rc配置脚本启动编译为app_process的二进制可执行文件,启动后的进程名为zygote。zygote会启动虚拟机环境,然后fork出system_server进程,进入Java世界。system_server是Android的系统进程,各大服务AMS、PMS、WMS等都运行在这个进程中。1 system_server 进程发送fork请求启动四大组件时,如果应用进程不存在,就会走到AMS创建应用进程的过程,这个进程是从zygote fork出来的
2022-03-25 17:06:55
4255
原创 去掉系统原生模块的一种新方法
1 修改模块的Android.mk文件见过最蠢的方法,更新模块、移植都不方便2 修改PRODUCT_PACKAGES一般的做法,暴力删除build、device下PRODUCT_PACKAGES的对应模块,缺点是分散,很难删干净,移植不方便3 新方法a 定义一个变量PRODUCT_DEL_PACKAGES在build/core/product.mk中b 将需要删除的模块赋值给这个变量PRODUCT_DEL_PACKAGES += Browser2c 在build的makefile文件中处
2022-03-18 17:04:59
795
原创 Android设备安装150个应用后开机耗时分析优化
设备安装150个应用后,开机耗时增加7s,主要是PMS扫描/data/app,耗时6.5s。分析发现,主要耗时在scanPackageNewLI 解析apk文件commitReconciledScanResultLocked 将解析到的组件添加到PMSbacktrace如下:frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.javascanDirTracedLI |-->
2022-03-11 18:03:21
2945
原创 CLion调试Android 11 Native代码
1 下载并编译sources代码需要在自己电脑上编译,生成CMakeLists.txt和符号表。2 CLion配置2.1 导入第一步的代码到CLionAOSP Native代码导入IDE(CLion).2.2 设置远程调试Run -> Edit Configurations点击+号,选择GDB Remote Debug按下图配置,设置GDB路径、端口号、符号目录、路径映射3 Debug运行中的进程3.1 设置端口转发,attach进程pidadb forw
2020-12-16 16:16:00
2994
3
原创 AOSP Native代码导入IDE(CLion)
AOSP可以很容易的导入到Android Studio,可以很舒服的跳转、调试,但是仅限于Java,Native代码连跳转都不行。JB有一款C/C++的IDE CLion,很自然想到能不能导入到CLion呢?1 编译要让 IDE 正确地建立索引,我们需要让 IDE 能正确地知道源文件、头文件、宏定义等各种数据。CLion是基于CMake的,AOSP的Soong可以生成CMakeLists.txt,build目录下有文档build/soong/docs/clion.md// 打开开关,编译时生成C
2020-06-10 10:28:30
4113
1
原创 Android P(9.0) 关闭DEXPREOPT后每次开机都DEXOPT导致开机很久
最近开发Android P(9.0), 关闭WITH_DEXPREOPT(不关闭的话,编译framework或者services生成的jar包不能直接push到机器,影响开发效率,不知到有没有方法解决这个问题)后,发现每次开机都要很久。接下来我们一步一步分析第一步,看Log10:12:30.474 1338 1338 I SystemServer: UpdatePackagesIfNe...
2018-12-07 18:12:06
7349
5
原创 MachineLearning笔记week6 机器学习系统设计
6.1 Evaluating a HypothesisOnce we have done some trouble shooting for errors in our predictions by: - Getting more training examples - Trying smaller sets of features - Trying additional feature...
2018-06-26 18:03:47
514
原创 MachineLearning笔记week5 NeuralNetworkLearning
5.1 Cost FunctionLet’s first define a few variables that we will need to use:L = total number of layers in the networkslsls_l = number of units (not counting bias unit) in layer lllK = number o...
2018-06-21 18:16:15
315
原创 MachineLearning笔记week4 NeuralNetworks
4.1 Model Representation ILet’s examine how we will represent a hypothesis function using neural networks. At a very simple level, neurons are basically computational units that take inputs (dendrit...
2018-06-21 18:08:31
275
原创 MachineLearning笔记week3 Classification
3.1 ClassificationTo attemp classification, one method is to use linear regression and map all redictions greater than 0.5 as 1 and all less than 0.5 as a 0. However, this method doesn’t work well b...
2018-06-15 11:31:30
425
原创 MachineLearning笔记week2 Linear Regression
2.1 Multiple FeaturesLinear regression with multiple variables is also known as “multivariate linear regression”.We now introduce notation for equations where we can have any number of input varia...
2018-06-08 09:23:00
293
原创 MachineLearning笔记week1
1.1 Supervised LearningIn supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is ralationship between the input and the...
2018-05-11 10:45:50
349
原创 Ubuntu .bashrc个人配置
// Android sdk ndk路径export ANDROID_HOME="~/bin/android/sdk/"export ANDROID_SDK_ROOT=$ANDROID_HOMEexport NDK_ROOT=$ANDROID_HOME/ndk-bundleexport PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platfor...
2018-02-24 11:33:38
4153
原创 节电助手
为了延长电池的续航时间,节电助手会降低设备的性能,并限制振动、位置信息服务和大部分后台流量。对于电子邮件、聊天工具等依赖于同步功能的应用,可能要打开这类应用时才能收到新信息。 节电助手会在设备充电时自动关闭。Created with Raphaël 2.1.0设置节电模式的调用过程PowerManagerPowerManagerIPowerManagerIPowerManagerPowerMana
2016-09-06 15:52:33
891
原创 Android Studio修改应用包名
修改app/build.gradle的ApplicationId就可以了。 http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
2016-05-10 11:46:41
373
原创 android 源码编译导入library project
修改launcher,需要依赖一个library project:password,无法直接在源码中编译。google出来的结果没有合适的方法,最后在源码packageses/apps/Email中找到了答案。需要修改2个文件:launcher的Android.mk、password的Android.mkmakefile文件目录为:launcher/password/Android.mklaunc
2015-05-22 19:07:44
1174
原创 git删除提交
git删除提交1、从资料库中清除文件git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch projects/Moon.mp3' --prune-empty --tag-name-filter cat -- --all2、 推送我们修改后的repogit push origin master
2015-05-21 23:31:56
497
转载 【转自果壳】学习没有“关键期”,现在开始就不晚
成年人大脑的可塑性,远远超过我们过去的认识。如果掌握了正确的方法,你也能像儿童一样学习。如果你已经36岁,你很可能喜欢收集上好的葡萄酒、唱片或者体育比赛纪念品。但对于理查德•西姆考特(Richard Simcott)来说,他的收藏品是语言。到目前为止,他已经学会了30多种外语,而且他还不打算就此收手。我们在伦敦一家饭馆里吃饭的时候,他在葡萄牙语、土耳其语和冰岛语之间跳来跳去,说起来
2013-06-14 12:54:13
844
转载 代码里的命名规则:错误的和正确的对比
编程初学者总是把大量的时间用在学习编程语言,语法,技巧和编程工具的使用上。他们认为,如果掌握了这些技术技巧,他们就能成为不错的程序员。然而,计算机编程的目的并不是关于精通这些技术、工具的,它是关于针对特定领域里的特定问题创造出相应的解决方案,程序员通过相互合作来实现这些。所以,很重要的一点,你需要能精确的用代码表达出你的思想,让其他人通过代码能明白你的意图。让我们先看看编程大师Ro
2013-06-09 08:28:23
467
Non-Programmer's_Tutorial_for_Python_3.pdf
2020-04-02
Tiled-1.7.1-win64.msi
2013-04-27
在虚拟机virtual box下安装DOS 6.22
2010-12-27
程序设计:Delphi之未经证实的葵花宝典version2.7.chm
2009-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人