日志记录

#####################################################
2019-2-21
Notepad++鼎鼎大名就不多说了吧,但是如果需要在Linux环境下使用需要Wine来实现。

今天给大家推荐一个Notepad++的替代品 — Notepadqq,基本上就是Notepad++的复制品,无论是界面还是功能来说,都和Notepad++十分相似。

要安装起来很简单,只需要添加repository再来个apt-get install即可:

$ sudo add-apt-repository ppa:notepadqq-team/notepadqq
$ sudo apt-get update
$ sudo apt-get install notepadqq

#####################################################
2019-2-14
Linux执行.sh文件,提示No such file or directory错误

之前 一直想给Linux 做一个简单的脚本sh ,但是每次用notepad++ 编辑了放到Linux上 ,运行都失败,
发现是因为notepad++的文件编码是windows的 需要改成Unix的 就可以了
#####################################################
2019-2-14
修改Android8 开机启动视频 -- 代码部分, 按照网上的方法填写相关地方以后,发现mediaplayer类始终找不到
进行发现 要讲Android.mk文件进行修改 添加include的路径 和 调用的lib文件 如下


include $(CLEAR_VARS)
LOCAL_MODULE := libbootanimation
LOCAL_CFLAGS += ${bootanimation_CommonCFlags}

LOCAL_SRC_FILES:=
BootAnimation.cpp

LOCAL_C_INCLUDES +=
external/tinyalsa/include
frameworks/wilhelm/include
frameworks/av/include ----- add

LOCAL_SHARED_LIBRARIES :=
libcutils
liblog
libandroidfw
libutils
libbinder
libui
libskia
libEGL
libGLESv1_CM
libgui
libtinyalsa
libmedia ----- add
libbase

ifdef TARGET_32_BIT_SURFACEFLINGER
LOCAL_32_BIT_ONLY := true
endif


#####################################################

javah -classpath D:workspace ormanAndroidStudioMyAppmyndkuildintermediatesjavacdebugcompileDebugJavaWithJavacclasses
com.example.myndk.MyNDK
################################################

// 设置支持的SO库架构
//Supported ABIs are [arm64-v8a, armeabi-v7a, x86, x86_64] //////// ndk 17 without armabi

要想支持armabi 需要将ndk降级到16
################################################
模拟串口通信使用到的文件:

1. 使用了http://code.google.com/p/android-serialport-api/的项目,在自己去下载
2. 串口调试助手 网路上很多.
3. 虚拟串口 Configure Virtual Serial Port Driver
第一步,需要在C:Program Files (x86)Androidandroid-sdk ools 在这个目录下执行
emulator.exe @模拟器名称 -qemu -serial COM2 指令 (要在安装的tools目录下执行)
emulator.exe -avd avdname -qemu -serial COM2 指令 (要在安装的tools目录下执行)
执行成功的话,会出现一个对话框.要你设置串口.别乱设置 (n,8,1,没得选,这是google项目已经规定好的)
执行成功的话,那么模拟器就会启动.
################################################
关于使用AIDL的时候出现错误的问题
1 ERROR/AndroidRuntime(9435): FATAL EXCEPTION: main
2 ERROR/AndroidRuntime(9435): java.lang.NullPointerException
3 ERROR/AndroidRuntime(9435): at android.os.Parcel.readException(Parcel.java:1328)
4 ERROR/AndroidRuntime(9435): at android.os.Parcel.readException(Parcel.java:1276)
其实是使用接口时, 对接口的参数使用操作不当产生的问题...
例如传过来的数组ints 其实为空,依旧使用就会导致报错,但是AS不会定位到你使用空指针的地方,所以这些地方使用的时候 都要细心
################################################
Ubuntu 下载内核源码出现的问题
--->>> ubuntu下 暂时不能解析域名“us.archive.ubuntu.com”
+++ 解决方案
+ 原因是dns没有配置,解决办法 加入dns服务器地址,比如:

vi /etc/resolv.conf
nameserver 202.96.134.133
nameserver 8.8.8.8

如果提示只读,用sudo运行
即sudo vi /etc/resolv.conf

+ 运行完重启系统解决
+ 重启完以后 还需要把apt-get的网址更新下 sudo apt-get update

// 另外获取Linux内核源码方法
sudo apt-get install linux-source
源码保存在usr/src下


################################################
xshell终端就嘟嘟响然后打印出几百行后就打出read: Unexpected EOF!结束了。这时候完全没有抓到我需要的打印,用logcat -s过滤能看到但是我需要全部打印进行问题分析。
这里就是logcat对应的日志文件超过最大值了..
可以做以下措施
1、增加日志buffer,如logcat -G 20M
logcat -g
main: ring buffer is 256Kb (253Kb consumed), max entry is 5120b, max payload is 4068b
system: ring buffer is 256Kb (568b consumed), max entry is 5120b, max payload is 4068b
crash: ring buffer is 256Kb (0b consumed), max entry is 5120b, max payload is 4068b
从上可以看出默认的大小小的可怜, 若是日志爆炸性刷新的话.有些信息就logcat不到了...使用效果如下
logcat -g
main: ring buffer is 20Mb (254Kb consumed), max entry is 5120b, max payload is 4068b
system: ring buffer is 20Mb (568b consumed), max entry is 5120b, max payload is 4068b
crash: ring buffer is 20Mb (0b consumed), max entry is 5120b, max payload is 4068b

################################################
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates
目前遇到的问题是apk 压根没有签名 ,验证方法:
keytool -list -printcert -jarfile xxx.apk
不是已签名的 jar 文件

################################################
AG —— The silver searcher,这个软件用c编写的,速度极快,我现在用它替代grep了

1:首先在linux创建个sh文件->ag.sh

2:在ag.sh里面输入如下内容并保存

set -x
TEMP_DIR=$(mktemp -d Leslie.Guan.XXXXXX)
cd ${TEMP_DIR}
wget https://github.com/ggreer/the_silver_searcher/archive/master.zip
TAR_DIR=$(unzip *.zip)
TAR_DIR=${TAR_DIR%%/*}
TAR_DIR=${TAR_DIR##*:}
cd ${TAR_DIR}
apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev --force-yes
./build.sh && make install
cd ../../
rm -rf ${TEMP_DIR}
ag -V
set +x

3:执行./ag.sh就会去安装了,完事后可以用ag "helloWord"命令去寻找所有文件中包含helloWord的文件并列出所在行数等。
// 运行需要系统权限 ./ag.sh

################################################
1.修改PATH方法
1. 当前用户
~目录下 .bashrc

# vi ~/.bash_profile
修改PATH行,把/usr/local/apache/bin添加进去,如:PATH=$PATH:$HOME/bin:/usr/local/apache/bin。
# source ~/.bash_profile
让这次的修改生效。
注:这种方法只对当前用户起作用的,其他用户该修改无效。
2. 所有用户
# vi /etc/profile
找到export行,在下面新增加一行,内容为:export PATH=$PATH:/usr/local/apache/bin。
注:= 等号两边不能有任何空格。这种方法最好,除非手动强制修改PATH的值,否则将不会被改变。
编辑/etc/profile后PATH的修改不会立马生效,如果需要立即生效的话,可以执行# source profile命令。
################################################

ccache编译器缓存,第一次编译时ccache缓存了GCC -E输出,把那些头文件展开信息保存在缓存中
当第二次编译时会尽量得用缓存,有改动时会更新缓存
1.安装:
apt-get install ccache
# which ccache
/usr/local/bin/ccache
2.导出到环境变量
vi ~/.bashrc
#ccache
export USE_CCACHE=1
export CCACHE_DIR=/home/xx/tools/.ccache
3.设置ccache的大小
ccache -M 50G
4.查看ccache的信息
# ccache -s
cache directory???????????????????? /home/xx/tools/.ccache
cache hit (direct)???????????????? 79521
cache hit (preprocessed)??????????? 2589
cache miss??????????????????????? 127838
called for link??????????????????? 29051
called for preprocessing??????????? 1687
compile failed??????????????????????? 65
preprocessor error???????????????? 31244
can't use precompiled header????????? 84
couldn't find the compiler????????? 3795
unsupported source language??????? 26791
unsupported compiler option????????? 127
no input file?????????????????????? 8108
files in cache??????????????????? 373791
cache size????????????????????????? 40.4 Gbytes //编译android已经用了40.4个G了
max cache size????????????????????? 50.0 Gbytes
5.清除所有
ccache -C

################################################

#!/bin/bash是指此脚本使用/bin/bash来解释执行。
其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
我们可以通过以下一个示例来进行实验,了解#!/bin/bash的使用。
除第一行外,脚本中所有以“#”开头的行都是注释。
1)#!/bin/bash只能放在第一行,如果后面还有#!,那么只能看成是注释。
################################################
LOCAL_BUILT_MODULE_STEM 模块描述
https://wenku.baidu.com/view/c544cf79b8f67c1cfbd6b844.html
################################################
################################################
################################################
################################################
################################################
################################################
因此以native层service与framework建立client/server模式socket通信主要代码:

java层主要代码:

复制代码
     LocalSocket s =null;
    LocalSocketAddress l;

s = new LocalSocket();
l = new LocalSocketAddress(SOCKET_NAME,
      LocalSocketAddress.Namespace.RESERVED);
s.connect(l);
复制代码
native层主要代码:

     s_fdListen = android_get_control_socket(SOCKET_NAME);
ret = listen(s_fdListen, n);
s_fdCommand = accept(s_fdListen, (sockaddr *) &peeraddr, &socklen);
init.rc中加入:

service myserver /system/bin/myserver
class main
socket myserver stream 600 system system
……

这里 SMServer 与 底层库通信方式就是基于LocalSocket通信
SMServer 采用 new LocalSocket();
底层库 采用android_get_control_socket();
################################################

原文地址:https://www.cnblogs.com/toolbear/p/10418935.html