1. 根据引脚和初始化参数,以及规格书,制作类似于 panel_ili9881c_720p_video.xml 的文件。
  2. 安装必要的软件
    #sudo apt-get install libxml-libxml-perl 
    #sudo apt-get install libxml-perl 
  3. 把 xml 文件放入 device/qcom/common/display/tools 文件夹里面。
  4. perl parser.pl panel_ ili9881c_720p_video.xml panel 生成 dsi-panel-ili9881c-720p-video.dtsipanel_ili9881c_720p_video.h
  5. cp device/qcom/common/display/tools/dsi-panel-ili9881c-720p-video.dtsi kernel/msm-4.9/arch/arm64/boot/dts/qcom cp device/qcom/common/display/tools/panel_ili9881c_720p_video.h bootable/bootloader/lk/dev/gcdb/display/include/
  6. 修改 bootable/bootloader/lk/target/msm8952/oem_panel.c, lk 中的配置用于刚开机后对屏幕的驱动。
  7. 修改 kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8937-mdss-panels.dtsi kernel/msm-4.9/arch/arm64/boot/dts/qcom/qm215-qrd.dtsi 等文件,用于 kernel 对于 sleep 和 wakeup 时对屏幕的驱动。
  8. 全部修改完后,编译一下,拿到新的 boot.img
    source build/envsetup.sh 
    lunch msm8937_32-userdebug 
    make aboot 
    make kernel 
  9. 根据修改的内容决定具体烧录哪些 img, 正常修改屏幕驱动,只要更新 emmc_appsboot.mbn, boot.img
    adb reboot bootloader
    fastboot flash boot boot.img
    fastboot flash aboot emmc_appsboot.mbn
    fastboot flash dtbo dtbo.img
    fastboot flash dtbobak dtbo.img
    fastboot reboot

  1. 下载 qcom llvm, https://developer.qualcomm.com/software/snapdragon-llvm-compiler-android/tools
  2. 把解压出来的文件复制到asop 内。 类似于 cp $(LLVM_DIR)/toolchains/llvm-Snapdragon_LLVM_for_Android_8.0/prebuilt/linux-x86_64/* $(TOP_DIR)/prebuilts/clang/host/linux-x86/sdclang-8/
  3. 在 BoardConfig.mk 中增加
    # SDClang Config
    ifneq ($(HOST_OS),darwin)
    SDCLANG := true 
    SDCLANG_PATH := prebuilts/clang/host/linux-x86/sdclang-8/bin
    SDCLANG_PATH_2 := prebuilts/clang/host/linux-x86/sdclang-8/bin
    SDCLANG_LTO_DEFS := device/qcom/common/sdllvm-lto-defs.mk
    endif
  4. export 变量
    # export SDCLANG_PATH=prebuilts/clang/host/linux-x86/sdclang-8/bin
    # export SDCLANG_PATH_2=prebuilts/clang/host/linux-x86/sdclang-8/bin

参考

https://developer.qualcomm.com/forum/qdn-forums/software/snapdragon-llvm-compiler-android/68403
https://blog.csdn.net/love_xiaozhao/article/details/89684756
http://bbs.raindi.net/thread-26209-1-1.html
https://blog.csdn.net/qq_23129309/article/details/85225017
https://discuss.96boards.org/t/build-fails-sdclang-path-can-not-be-empty/6669

生成 patch

  • 针对文件的生成 patch

    #只想 patch Test.java 文件
    git diff Test.java > test.patch
    # 把所有的修改文件打成 patch
    git diff > test.patch
  • 针对 commit 生成 patch
    $ git format-patch HEAD^       #生成最近的1次commit的patch
    $ git format-patch HEAD^^      #生成最近的2次commit的patch
    $ git format-patch HEAD^^^     #生成最近的3次commit的patch
    $ git format-patch HEAD^^^^    #生成最近的4次commit的patch
    $ git format-patch <r1>..<r2>  #生成两个commit间的修改的patch(包含两个commit. <r1>和<r2>都是具体的commit号)
    $ git format-patch -1 <r1>     #生成单个commit的patch
    $ git format-patch <r1>        #生成某commit以来的修改patch(不包含该commit)
    $ git format-patch --root <r1> #生成从根到r1提交的所有patch

应用patch

git am 会直接以原 patch 的作者生成 commit, git apply 则需要自己去 commit.

  • 检查 patch

    $ git apply --stat 0001-limit-log-function.patch  # 查看patch的情况
    $ git apply --check 0001-limit-log-function.patch # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
  • 应用 patch
    $ git apply xxx.patch
    $ git am 0001-limit-log-function.patch           # 将名字为0001-limit-log-function.patch的patch打上
    $ git am --signoff 0001-limit-log-function.patch # 添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
    $ git am ~/patch-set/*.patch                     # 将路径~/patch-set/*.patch 按照先后顺序打上
    $ git am --abort                                 # 当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令会把打上的前两个patch丢弃掉,返回没有打patch的状态)
    $ git am --resolved                              # 当git am失败,解决完冲突后,这条命令会接着打patch

参考

https://blog.csdn.net/u013318019/article/details/114860407
https://blog.csdn.net/liuhaomatou/article/details/54410361

如果没有正确加载第三方 so 库,编译可以通过,但是一旦运行,就报错,无法找到对应的 so 库。

经过测试,最简单加载第三方 so 库的方法如下,不需要修改 build.gradle:

  • 把 so 库直接放到 app\src\main\jniLibs\armeabi-v7a 目录下面,如果没有目录就创建。

类似如下:

project/
├──libs/
|  └── *.jar       <-- if your library has jar files, they go here
├──src/
   └── main/
       ├── AndroidManifest.xml
       ├── java/
       └── jniLibs/ 
           ├── arm64-v8a/                       <-- ARM 64bit
           │   └── yourlib.so
           ├── armeabi-v7a/                     <-- ARM 32bit
           │   └── yourlib.so
           └── x86/                             <-- Intel 32bit
               └── yourlib.so
  • 重新编译后,验证的方法是把 app\build\outputs\apk\debug 下面的 apk 直接解压,确认 lib 文件夹里面是否有 so 库。

参考

https://stackoverflow.com/questions/24357687/how-to-include-so-library-in-android-studio
https://stackoverflow.com/questions/16683775/include-so-library-in-apk-in-android-studio?rq=1
https://blog.csdn.net/sinat_22657459/article/details/53420047

debug 串口参数

默认 115200, 8,n, 1, xon/xoff

查看 tty 驱动

cat /proc/tty/drivers

...
msm_serial_hs        /dev/ttyHS    240 0-255 serial
msm_serial           /dev/ttyMSM   241 0-2 serial
...

serial 对应 ttyMSM, 这个是普通速度串口。 serial_hs 对应 ttyHS,这个是高速串口。

uart 设置为 console

/kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8917-mtp.dtsi 里面设置:

&blsp1_uart2 {
        status = "ok";
        pinctrl-names = "default";
        pinctrl-0 = <&uart_console_active>;
};

- 阅读剩余部分 -

转自: https://www.cnblogs.com/zhaopei/p/4189583.html

阅读目录 功能一:备份博客到本地 1.加载推荐博客 2.加载随笔分类、档案和标签 3.点击备份 功能二:浏览本地博客 1.递归加载目录下所以博客文件 2.点击加载博客内容(这里使用到了webBrowser控件来... 功能三:本地浏览关键字搜索 1.首先在备份的时候就需要创建搜索索引。 2.点击搜索 下载地址: 接着 博客转发小工具2 ,又弄了一个第三版。主要功能有:博客备份到本地、浏览备份到本地的博客、关键字搜索本地的博客和转发博客可以选择个人分类 填写Tag标签。其实想了想,转发博客干嘛非要在本地客户端转发,直接在博客园的页面用js不就可以达到目的么。想是这么想,还没尝试。等我写完了这个博客就去试试。。继续回到这个小工具,说实在的本人做的这个小工具界面丑的那是、、反正就是很丑很丑啦。没办法,没有美工的那种艺术细胞。还有就是,整个功能其实真没什么技术含量,还是html的抓取,winfrom在工作中也没用过,就平时偶尔玩玩,望大神们勿喷~~。

不过我觉得这个小工具的作用:第一、可以用来备注自己的博客,自己留个底。第二、某些朋友的工作环境可能没有外网(我以前的公司就没有),这样的话可以用来备份一些博友的系类文章当资料。【要是可以的话,把系类文章导成dpf文档那就更爽了。可是我一直没成功~】。

也许有写人会说:啥啥啥的早就有类似的软件了。我不知道,我没用过,我觉得自己做的用着开心。就当练手吧。

开始说内容了。

- 阅读剩余部分 -

比较推荐 《Android系统源代码情景分析》作者 罗升阳 的 blog,https://blog.csdn.net/Luoshengyang

https://blog.csdn.net/luoshengyang/article/details/29688041
https://blog.csdn.net/luoshengyang/article/details/18466779
https://blog.csdn.net/luoshengyang/article/details/18195205

https://blog.csdn.net/mcryeasy/article/details/60466837

selinux policy 资料: https://blog.csdn.net/onj123/article/details/108351493
https://blog.csdn.net/hyl1718
https://blog.csdn.net/hyl1718/article/details/116225067?spm=1001.2014.3001.5501
https://blog.csdn.net/xiaosaerjt/article/details/106021337

AOSP下的系统开发 https://www.jianshu.com/p/85557c7b7653

动手实现Android源码(AOSP)的下载、编译、运行、导入、调试 https://blog.csdn.net/mcryeasy/article/details/60466837

Android8.0 下的 qcom8953 平台上的 sensor 调用过程 https://blog.csdn.net/woshishui918/article/details/83088120?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-4.control&spm=1001.2101.3001.4242

Android sepolicy简要记 https://blog.csdn.net/ch853199769/article/details/82501078

添加 Selinux 权限步骤 https://blog.csdn.net/wangjun7121/article/details/88221006

漫谈android系统(3) SELinux报错修改篇 https://blog.csdn.net/u013983194/article/details/50462694

android 8.1 安全机制 — SEAndroid & SELinux https://www.cnblogs.com/schips/p/SELinux.html
https://blog.csdn.net/qq_19923217/article/details/81240027

ADB—查看设备信息 https://www.jianshu.com/p/811741a2ad97

adb命令 android 串口_Android adb 串口设备调试方法 https://blog.csdn.net/weixin_39831902/article/details/111816945?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.control&spm=1001.2101.3001.4242

[RK3288]串口开发之运行app权限不够报错闪退(基于android8.1使用android studio3.6开发) https://blog.csdn.net/a812417530/article/details/106925335

[RK3288]串口JNI开发之so库的生成(串口C源代码)(基于android8.1使用android studio3.6开发 https://blog.csdn.net/a812417530/article/details/106917484

[RK3288]串口开发之JNI环境搭建(基于android8.1使用android studio3.6开发) https://blog.csdn.net/a812417530/article/details/106916604

Android串口通讯整理 https://www.jianshu.com/p/d79f4ccbbf44

Android 串口开发 https://blog.csdn.net/u010872301/article/details/94735221

在Android Studio项目工程中设置所使用的JDK版本 https://www.jianshu.com/p/2e4fff44ba38

android 串口参数设置,Android-SerialPort https://blog.csdn.net/weixin_42394780/article/details/117531565

Android FrameWork学习(一)Android 7.0系统源码下载\编译 https://www.jianshu.com/p/6af0bb7c1e70

Android FrameWork学习(二)Android系统源码调试 https://www.jianshu.com/p/4ab864caefb2

android 开发串口中遇到的权限问题 (个人笔记) https://blog.csdn.net/only_you_zj/article/details/80098192

刷机相关的Android的安全 https://blog.csdn.net/dongyi1988/article/details/103995737

msm8953之串口dts配置 https://blog.csdn.net/LoongEmbedded/article/details/82320947

高通平台串口调试 AP与模块串口通讯调试总结 https://blog.csdn.net/linux_devices_driver/article/details/24329043

高通uart调试总结 https://blog.csdn.net/weixin_38233274/article/details/95204486

高通linux-串口笔记 https://blog.csdn.net/sheji105/article/details/82625799

【Android驱动】高通串口驱动,串口驱动中的msm_serial.c https://blog.csdn.net/John_chaos/article/details/106545907

type=1400 audit(506975.539:15): avc: denied { read write } https://groups.google.com/g/Android-porting/c/DF9eKcV9SjI

How to enable UART port in Android 10 source https://forum.khadas.com/t/how-to-enable-uart-port-in-android-10-source/9101

Android 9 how to open the serial port https://forum.radxa.com/t/android-9-how-to-open-the-serial-port/3373

idegen:一个角落里的法器 https://www.jianshu.com/p/8f9b4e4970c9

高通平台msm8916修改开机logo【原创】 https://www.cnblogs.com/zzb-Dream-90Time/p/6510908.html

[Android L]SEAndroid增强Androd安全性背景概要及带来的影响 https://www.cnblogs.com/l2rf/p/4960572.html

[Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties) https://www.cnblogs.com/l2rf/p/4960579.html
https://blog.csdn.net/yelangjueqi/article/details/46761987

Android seLinux导致的APP访问设备权限问题 https://blog.csdn.net/qq_33611327/article/details/106210711

SELinux 关于avc:denied {read write getattr xxx} for 错误 https://blog.csdn.net/qq_33611327/article/details/114081849

Android SELinux avc:denied报错模板通用修改策略 https://blog.csdn.net/qq_33611327/article/details/114085637

Android open source project analysis https://github.com/sucese/android-open-source-project-analysis

看源码工具 https://cs.android.com
https://mp.weixin.qq.com/s?__biz=MzA3MzE4ODY0Mg==&mid=2455984638&idx=1&sn=a61f07e7aae09813feb6b297abd84f39&scene=21#wechat_redirect

Android问题汇总
https://blog.csdn.net/armfpga123/article/details/54849274

msm8953 + android7.1.2知识总结
https://blog.csdn.net/Wbl752134268/article/details/105201622?spm=1001.2101.3001.6650.19&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-19.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-19.no_search_link

Android 惯用工作命令mmm,mm,m,croot,cgrep,jgrep,resgrep,godir,快速查找 find grep合并使用
https://blog.csdn.net/zengxx1989/article/details/52837517

linux中bootable和kernel中子目录的作用
https://ciellee.blog.csdn.net/article/details/82599559

linux系统 RTL8152B网卡驱动移植-USB转网卡
https://blog.csdn.net/u013921164/article/details/109455430

Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)
https://blog.csdn.net/u012932409/article/details/108119443
关于make update-api命令
https://blog.csdn.net/u010229714/article/details/73840014
Android 接口定义语言 (AIDL)
https://developer.android.google.cn/guide/components/aidl?hl=zh-cn
深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制
https://blog.csdn.net/mr_raptor/article/details/30113417

Android系统篇(一)——建立Android系统开发环境
https://blog.csdn.net/qq_26787115/article/details/79543340
Android通过SystemProperties获取build.prop中配置的信息
https://blog.csdn.net/u013693649/article/details/60143634
Makefile call函数说明
https://blog.csdn.net/qu1993/article/details/88976861

Android系统开发入门-4.添加自定义模块
http://qiushao.net/2019/11/22/Android%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8/4-%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97/

03 Android系统之添加自定义模块
https://blog.csdn.net/feit2417/article/details/105209814
android 10 添加系统服务步骤
https://blog.csdn.net/a546036242/article/details/118221349

Modular System Components
https://source.android.com/devices/architecture/modular-system
Soong Build System
https://source.android.com/setup/build

Android源码创建新模块加入源码自动编译
https://blog.csdn.net/angelsmiling/article/details/93973919
9.Android 添加新模块
https://blog.csdn.net/qq_34738528/article/details/107403949

转自: http://www.grablan.com/news/2017/20110.html

由于工作上所接触到的数据的特殊性 , 公司要求电脑上必须加装"易赛通数据泄露防护客户端" , 导致很多常用格式的文件都被加密了 , 文件拷贝到未装易赛通的电脑上打开就是乱码甚至像.xlsx .docx这样的文件甚至无法打开 . 于是决定编写一个文件解密的工具来实现将被加密的文件还原为未加密的状态 .

- 阅读剩余部分 -