Gatsby xinhua log boork(一)

2020.0418  芯华测试工具  使用jni,编译lib库

一、使用Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so

   AS要配置 Javah命令,使用javah 命令生成JNI的 .h头文件。

   然后修改CMakeLists.txt 添加库名,以及引用 源文件。

   编译即可生成库。

二、其他apk引用库。

   要建立相同的包名引用。  

三、芯华测试工具测试apk 串口测试

1、引用已经编译生成的库。

2、工具类的使用

    a、SerialPortFinder.java  显示串口列表,不调用底层,直接使用。

    b、SerialPort.java    调用底层库的方法   

      主要方法:开启串口、关闭串口

  //串口设备名,波特率,数据位,停止位,检验位(奇偶校验位)

      SerialPort(File device, int baudrate, int dataBits, int stopBits, char parity)

  //ar parity  'N' 不使用奇偶校验

3、SerialHelper.java  串口工具辅助类

   a、 打开串口

   b、 发送串口数据  线程发送

   c、 接受串口数据  线程接受

   d、 关闭

 

--------------------------------------------------------------------------------------------------------------------------------

2020.0428  Github开源项目  串口测试工具

AndroidSerialPort-master 

一、MVP 架构

C  契约类     MainContract   P,V 进行约束管理

V  加载控件   

P  逻辑处理   MainPresenter  存储数据,万能适配器的调用

adapter  适配器单独放一层

bean    set,get

SPUtil   封装好的工具类,我这个版本用不了

布局和逻辑分开

框架还有的研究,想找些小demo练练。

 

二、布局

约束布局  ConstraintLayout  现在AS的布局默认用的就是约束布局了

减少了嵌套,但是我还是混着LinearLayout用。AS拖着用

 

三、ASdemo 的配置

我用的是AS3.6  Androidx 的迁移   

androidx.recyclerview.widget.RecyclerView  build.gradle的依赖

 

四、jitpack  gitHub 依赖别人开发的第三方开源库

  jcenter() //代码托管库:设置之后可以在项目中轻松引用jcenter上的开源项目

  maven { url 'https://jitpack.io' }//添加jitpack仓库地址

 添加依赖项 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'  

  github上有说明,这个开源库我还在玩,这个万能适配器确实减少了代码量,不想以前的ListView一样,

  我想仿照上个apk,

  用万能适配器、抽屉控件做个二级菜单 

 

 这是目前的进度,to be continue……

 

-----------------------------------------------------------------------------------------------------------------------------------

2020.0512  芯华测试工具

Activity退出停止子线程问题

 

一、使用退出标志位终止线程 

实现Runnable接口定义线程。在退出时,改变线程内循环的标志位:

while(AutoActivity.isRunningGpio)

当Activity 走到onStop时候,将isRunningGpio置为false,则打破了循环,线程终止。(有bug)

 

二、问题:

应用退出进入频繁

线程还没跑完,没有正常关闭。进入Activiry再次start线程时候,上次线程还没跑完,

需要跑完,而且还会重新开出一个新线程    Thread.currentThread().getId()

 

三、解决:

使用  捕获异常中断(interrput)中断线程的执行

 

1、实现Runnable接口

private Thread mThread;

mThread.interrupt();

捕获了java.lang.InterruptedException

 

2、继承Thread重写run

a、线程处于阻塞状态,如使用了sleep,同步锁的wait,socket的receiver,accept等方法时,会使线程处于阻塞状态。

当调用线程的interrupt()方法时,系统会抛出一个InterruptedException异常,代码中通过捕获异常,然后break跳出循环状态,使线程正常结束。

 

b、非阻塞,不需要

 

 https://www.cnblogs.com/l2rf/p/5566895.html

 

-----------------------------------------------------------------------------------------------------------------------------------

2020.0516     XHService->systemservice 

modified:   device/rockchip/common/BoardConfig.mk
	modified:   device/rockchip/common/init.rk30board.rc
	modified:   frameworks/base/Android.mk
	modified:   frameworks/base/api/current.txt
	modified:   frameworks/base/api/system-current.txt
	modified:   frameworks/base/core/java/android/app/ContextImpl.java
	modified:   frameworks/base/core/java/android/content/Context.java
	modified:   frameworks/base/services/java/com/android/server/SystemServer.java

Untracked files:
  (use "git add <file>..." to include in what will be committed)
  
	frameworks/base/core/java/android/app/GAManager.java
	frameworks/base/core/java/android/app/IGAManager.aidl
	frameworks/base/gaapimanager/
	frameworks/base/services/core/java/com/android/server/GAService.java

  

定义接口 aidl 跨进程

封装成 api  就是管理类

功能实现  service  

 

注册  

编译  make update-api

 

五.关于make update-api命令
何时需要执行make update-api命令

    • 添加系统API或者修改@hide的API后,需要执行
      make update-api,然后再make
    • 修改公共api后,需要
      make update-api

1.在修改完系统Api或部分公共Api后(常见于修改Intent.java、KeyEvent.java等等),执行源码编译时会有如下提示

2.解决办法:
执行: make update -api ;
修改后相应API文件后,在base库下面会产生“.current.txt”文件的差异,提交时将该差异一并提交审核即可

----------------------------------------------------------------------------------------------------------------------------

 

posted @ 2020-05-18 19:18  CrushGirl  阅读(125)  评论(0编辑  收藏  举报