Android
杨鑫校
学无止境!
展开
-
SampleWindow demo
SampleWindow.javapackage understanding.wms.samplewindow;import android.content.res.Configuration;import android.view.Surface;import android.view.View;import android.view.InputChannel;import android.view.DisplayInfo;import android.view.Gravity;i.原创 2021-09-07 09:56:55 · 283 阅读 · 1 评论 -
windows patch adb permission
patch文件给某个app授权及撤销:执行结果如下,涂掉的是包名脚本内容:grant_dl.bat@echo grant permission of sdcard rw for pkg_name@adb shell pm grant pkg_name android.permission.READ_EXTERNAL_STORAGE@adb shell pm grant pkg_name android.permission.WRITE_EXTERNAL_STORAGE@adb .原创 2021-05-12 14:00:24 · 203 阅读 · 1 评论 -
Android系统启动过程脑图
原创 2021-03-12 16:51:37 · 172 阅读 · 0 评论 -
Android源代码模块引用三方so方法
这里以google的tensorflow库为例,在系统设置模块mk文件中引入,具体方式为:1、声明编译so库include $(CLEAR_VARS)LOCAL_MODULE := libtensorflowlite_jniLOCAL_SRC_FILES := libs/libtensorflowlite_jni.soinclude $(PREBUILT_SHARED_LIBRARY)2、修改public.libraries.txtadb pull /system/etc/publi原创 2020-12-07 13:09:09 · 796 阅读 · 0 评论 -
Android编译mk文件引入三方jar、aar、so
引入aar:LOCAL_STATIC_JAVA_AAR_LIBRARIES := okayrom-lib-http-1.1.0.9 \引入jar:#当前模块依赖的 Java 静态库 为引用jar库的别名,可以随便取名,一般就是用库名称就可以了。LOCAL_STATIC_JAVA_LIBRARIES := haha \##############################################include $(CLEAR_VARS)#作为预编译库的引用对象 指定p..原创 2020-12-05 11:29:29 · 736 阅读 · 0 评论 -
Android mk文件指定aapt參數不压缩指定资源
例:指定不压缩tflite后缀文件。LOCAL_AAPT_FLAGS += -0 "tflite"原创 2020-11-27 16:41:30 · 449 阅读 · 0 评论 -
Google原生输入法LatinIME词库扩容(Windows10环境)
去年在Linux(ubuntu)环境下针对LatinIME进行词库扩容处理,针对LatinIME的词库构建进行了一些列分析,大家可以查阅历史文章。词库扩容最近试了一下是可以的,具体流程大致如下(windows10环境):1、安装MinGw以及gcc、g++、gdb等,下载地址:e795, 安装完成配置环境变量到path(..\mingw\bin)2、进入到..\cpp\command目录进行makewindows下没有make命令的,需要到MinGw\bin目录下重命名mingw32-mak原创 2020-07-06 13:54:40 · 1787 阅读 · 6 评论 -
修改替换/system/framework/base
mmm framework/base/core/resmmm framework/baseadb push out/target/product/(自己的)/system/framework/framework-res.apkadb push xxxx/framework.jaradb push out/target/product/(自己的)/system/framework/ar...原创 2019-01-08 15:30:10 · 710 阅读 · 0 评论 -
repo,可以直接复制粘贴到你的~/bin/repo文件中
#!/usr/bin/env python# repo default configuration#import osREPO_URL = os.environ.get('REPO_URL', None)if not REPO_URL: REPO_URL = 'https://gerrit.googlesource.com/git-repo'REPO_REV = 'stable'...原创 2019-03-01 10:00:27 · 3846 阅读 · 0 评论 -
Android 匿名共享内存demo篇(一)
Android系统的IPC方式通常为:文件、socket、binder、messenger、AIDL、ContentProvider,此外还有个Anonymous Shared Memory(匿名共享内存),这篇文章介绍Ashm基础使用相关知识。Android api27加入了SharedMemory类,27之前需要通过反射去拿到文件描述符。 demo为MainActivit...原创 2019-03-01 11:18:49 · 1497 阅读 · 0 评论 -
Google原生输入法LatinIME词库构建流程分析(二)
在Google原生输入法LatinIME词库构建流程分析(一) 中分析LatinIME构建流程进行到了dict_trie->dict_list_->init_list这一步,然后就是构建N-gram信息了,N-gram构建过程在Google原生输入法LatinIME词库构建流程分析(三)--N-gram信息构建中进行了分析,那么接下来继续:bool DictBuilder::bu...原创 2019-04-04 16:36:11 · 935 阅读 · 0 评论 -
Ubuntu14.04下载Android源码~aosp
create dir:mkdir ~/binPATH=~/bin:$PATHvim ~/bin/repo cp content to repo file ,url is:http://7xpgbx.dl1.z0.glb.clouddn.com/repo或者 curl https://storage.googleapis.com/git-repo-downloads/re...原创 2018-08-11 14:53:17 · 467 阅读 · 0 评论 -
Android System Server
基于Android5.0.1原创 2018-02-27 18:41:17 · 219 阅读 · 0 评论 -
Android_EntropyMixer研究
这篇文章专门分析Android中的一个服务:EntropyMixer,源代码位于:framework/base/service/core/java.com.android.server.EntropyMixer.java,该类继承自Binder,总共也就二百多行,Entropy翻译做熵,是Linux系统中描述系统有序性的一个标识,该值越大表示系统有序性越差,在Android中EntropyMi...原创 2018-02-27 18:23:32 · 1463 阅读 · 0 评论 -
android_源码目录结构
Android源代码结构分析参考(http://blog.csdn.net/tfslovexizi/article/details/51888458)/bootable这个目录下存放android部分启动相关代码,包括android的recovery模式,一般用于进行OTA升级,由C++编写,可以看到用于显示的ui.cpp和安装的install.cpp,模式入口为recovery.转载 2018-01-30 10:26:25 · 353 阅读 · 0 评论 -
Android_source_arch
.├── abi│ └── cpp├── art│ ├── benchmark│ ├── build│ ├── cmdline│ ├── compiler│ ├── dalvikvm│ ├── dex2oat│ ├── dexdump│ ├── dexlist│ ├── disassembler│ ├── imgdiag│原创 2018-01-30 10:24:23 · 415 阅读 · 0 评论 -
Android_TextView学习
Android4.4上EditText光标样式需要修改,追查一下系统实现,从系统层进行修改,记录一下。查看TextView和EditText源码发现,EditText也是继承自TextView,在TextView的Constructor方法中,看到这么一行:mMovement = getDefaultMovementMethod();点进去发现是return的 null,再到EditT原创 2018-01-26 14:40:23 · 390 阅读 · 0 评论 -
Ubuntu14.04编译Android源码之Java环境切换shell脚本
脚本运行环境不限于Ubuntu14.04,可以切换Java6\7\8,具体切换方法为:yang@yang:~/code$ . ~/sw_java.sh The version you want(6、7、8): 7Changing to java ---------> 7******************check version************************...原创 2018-02-06 10:10:27 · 426 阅读 · 1 评论 -
Android源码记录
~\kernel\drivers\staging\android\ashmem.c~\kernel\drivers\staging\android\binder.c~\kernel\drivers\staging\android\logger.c~\kernel\drivers\staging\android\sync.c~\kernel\drivers\staging\andro...原创 2019-03-01 23:30:34 · 148 阅读 · 0 评论 -
windows 下载aosp
参考了这篇博客:https://blog.csdn.net/freekiteyu/article/details/70939672转载 2019-03-02 08:34:27 · 1022 阅读 · 0 评论 -
ubuntu16.04 compile android L error
1. installsudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev...原创 2019-05-29 12:53:23 · 270 阅读 · 0 评论 -
ubuntu 18.04 编译Android坑s
去除所有本地化的设置error:flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed. Aborted (core dumped)或者F...原创 2019-05-28 09:34:00 · 1012 阅读 · 2 评论 -
Android 只获取特定包名log
此命令用于在Ubuntu命令行中获取指定包名(应用)的所有log信息:adb logcat --pid=$(adb shell pidof -s pkg_name)把pkg_name换成需要过滤的应用包名即可,特此记录。StackOverFlow...原创 2019-05-11 15:00:00 · 2194 阅读 · 1 评论 -
Google原生输入法LatinIME引擎初始化流程分析(二)
引擎初始化首先是在Java层调用native的初始化方法,Java层调用如下: private void initPinyinEngine() { byte usr_dict[]; usr_dict = new byte[MAX_PATH_FILE_LENGTH]; // Here is how we open a built-in d...原创 2019-04-09 11:10:33 · 2023 阅读 · 0 评论 -
Google原生LatinIME输入法spl_buf_数据内容
"A\000\000\000\000\000\000aAI\000\000\000\000\000\\AN\000\000\000\000\000VANG\000\000\000\000\222AO\000\000\000\000\000qBA\000\000\000\000\000JBAI\000\000\000\000]BAN\000\000\000\000QBANG\000...原创 2019-03-28 19:35:01 · 837 阅读 · 0 评论 -
Google原生输入法LatinIME词库构建流程分析--相关数据结构分析
其实输入法词库相关数据结构的定义基本上都在头文件dictdef.h文件中,进入到代码目录cpp下.初始化字库,首先读取txt文件内容到数据结构lemma_arr和valid_hzs中,lemma_arr是一个数组类型为LemmaEntry,下面来看下LemmaEntry定义(cpp/include/dictdef.h)://rawdict_utf16_65105_freq.txt每一行是...原创 2019-03-27 19:02:40 · 1810 阅读 · 8 评论 -
Google原生输入法LatinIME词库构建流程分析(一)
进入到cpp目录下(pwd=.../cpp/),在command目录中有个pinyinime_dictbuilder.cpp文件,源码中可以看到main函数,这里就是词库构建的入口,接下来看下main函数源码: 25 /** 26 * Build binary dictionary model. Make sure that ___BUILD_MODEL___ is defined 2...原创 2019-03-27 11:19:37 · 3347 阅读 · 2 评论 -
Android 匿名共享内存初始化篇(三)
Ashmem初始化流程从ashmem.c的__ashmem_init方法开始,代码如下:835 static int __init ashmem_init(void)836 {837 int ret;838 839 ashmem_area_cachep = kmem_cache_create("ashmem_area_cache",840 ...原创 2019-03-04 19:08:48 · 380 阅读 · 0 评论 -
Android 匿名共享内存基础数据结构篇(二)
Android匿名共享内存系统架构图如上图所示,Android系统匿名共享内存(以下以Ashmem代替)以Ashmem驱动为基础,在运行时库提供了cutils library来对Ashmem驱动进行访问,同时又在Framework层提供了C++和Java类接口来访问cutils。 这篇文章主要学习kernel层ashmem的基础数据结构,先来看看Ashmem到底是什么!源码版本An...原创 2019-03-04 10:24:23 · 762 阅读 · 0 评论 -
android_mk记录
include $(BUILD_PACKAGE)编译打包成APK文件include $(BUILD_STATIC_JAVA_LIBRARY)用它来编译生成JAVA库(打包成.jar文件)include $(BUILD_EXECUTABLE)编译C/C++应用程序include $(BUILD_STATIC_LIBRARY)用它来编译生成C\C++原创 2018-01-24 13:42:21 · 220 阅读 · 0 评论 -
power_off_alarm
关机闹钟问题闹钟设置中设置闹钟响铃时间和暂停时长,该配置记录在/data/data/com.android.deskclock/shared_prefs目录下的com.android.deskclock_preferences.xml文件中,设置完闹钟并且关机再次启动,系统会启动deskclock下面的AlarmService服务,最终调用AlarmStateManager的setMissed原创 2018-01-24 13:41:27 · 691 阅读 · 0 评论 -
SystemUI
tag (android:excludeFromRecents="true"该属性用于控制activity不在最近列表中显示。默认false。)SystemUI位于frameworks/base/packages/SystemUI,在SystemServer中通过startService来开启SystemUIService,在SystemUIService的onCreate方法中开原创 2018-01-24 13:40:31 · 615 阅读 · 0 评论 -
android activity知识总结
活到老学到老!! activity作为android四大组件之一,全面的了解其基础知识势在必行,看了任玉刚的开发艺术,做个简单的总结。1、activity的生命周期。 2、activity的启动模式。 3、activity的匹配规则。生命周期: 分典型模式和异常模式,典型模式不多说,异常模式为在用户参与的过程中使activity的生命周期发生的变化,典型模式: onCre原创 2016-06-10 21:28:52 · 405 阅读 · 0 评论 -
Android 复制粘贴对话框弹出监听实现
长按文本框或者webview界面,会弹出复制粘贴剪切等对话框,但是目前好多厂商都是自己写的控件,先说一下对系统的对话框进行监听的情况。这里是为了监听对话框来对自定义view进行高度的处理,对华为三星等手机做个适配,自定义了一个view,在onLayout方法中根据自定义的view在屏幕中的位置变化来进行判断复制粘贴对话框的弹出和隐藏。代码:@Override protected原创 2015-12-31 10:52:27 · 6041 阅读 · 1 评论 -
android开发基础之-----------自定义toast
如何自定义一个toast,1.首先要有一个布局文件,在layout中创建布局文件设置自定义toast控件的显示样式。即toast的布局。2.创建一个方法,显示我们自定义的toast控件,使用了窗口管理者,将我们的控件转成一个view对象,添加到窗口管理者中,此外还可以根据Gravity来设置toast的位置,如果不设置toast的位置,后果不堪设想哦!!!3.将view对象添加到w原创 2015-10-15 21:22:49 · 537 阅读 · 0 评论 -
android开发基础之---------------自定义控件的使用
先来看一张布局图片,这张图片的自动更新应用的item我们就可以设置成一个自定义控件,方便我们在往下重复使用。定义自定义控件的步骤:1.在layout文件夹下创建一个布局文件,改布局文件中包含了自定义组合控件中需要组合到一起的三个控件的布局。2.定义一个自定义组合控件的类,用以对组合控件进行初始,设置等相关操作,方便调用者对我们的自定义控件进行一些操作。3.在布局文件中进原创 2015-10-15 01:32:27 · 693 阅读 · 0 评论 -
android的开发基础之--------创建广播接收者的两种方式
android中创建一个BroadCastReceiver有两种方式,* 广播接收者可以使用清单文件注册* 一旦应用部署,广播接收者就生效了,直到用户手动停止应用或者应用被删除* 广播接收者可以使用代码注册* 需要广播接收者运行时,使用代码注册,不需要时,可以使用代码解除注册* 电量改变、屏幕开关,必须使用代码注册代码注册:* 注册广播接收者 //创建广原创 2015-10-15 01:44:44 · 739 阅读 · 0 评论 -
Android开发之基础---------多媒体音乐和视频播放
一、音乐播放在后台也可以,所以应该被定义成一个后台服务程序,在播放服务中包括开始、暂停、停止、继续功能。private void play() { // TODO Auto-generated method stub player.reset(); try { player.setDataSource("sdcard/bzj.mp3"); playe原创 2015-10-04 10:56:22 · 600 阅读 · 0 评论 -
Android开发之基础-------XML文件的序列化和解析
xml文件作为一种数据存储文件是经常用得到的,下面针对xml文件的序列化和解析进行简单的总结以短信备份为例:1.找到控件设置点击事件2.获取短信内容,以Bean对象的方式封装到list集合中3.遍历list集合中的短信数据,存储到xml文件中 XmlSerializer try{ //1.通过Xml获取一个XmlSerializer对象原创 2015-10-03 12:24:48 · 469 阅读 · 0 评论 -
Android开发之基础------------测试相关、sdcard操作、SharedPreferences存取
好的软件是测试出来的!一.对app的测试常见的测试方法有monkey测试,使用adb shell指令完成。1.具体指令: adb shell 进入手机的Linux环境。monkey 包名(packageName) 测试次数(count ) monkey测试可以形象比喻成让一只淘气的小猴子在你的手机上点上指定的(count)次数。二、如果需要测试代码原创 2015-10-03 12:12:22 · 381 阅读 · 0 评论