日志记录 - 2019-2-22

#####################################################
2019-2-21
Notepad++鼎鼎大名就很少说了吧,可是若是须要在Linux环境下使用须要Wine来实现。html

今天给你们推荐一个Notepad++的替代品 — Notepadqq,基本上就是Notepad++的复制品,不管是界面仍是功能来讲,都和Notepad++十分类似。java

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

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

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

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


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

LOCAL_SRC_FILES:= \
BootAnimation.cppapache

LOCAL_C_INCLUDES += \
external/tinyalsa/include \
frameworks/wilhelm/include \
frameworks/av/include ----- addubuntu

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

ifdef TARGET_32_BIT_SURFACEFLINGER
LOCAL_32_BIT_ONLY := true
endif


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

javah -classpath D:\workspace\norman\AndroidStudio\MyApp\myndk\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes
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)\Android\android-sdk\tools 在这个目录下执行
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对应的日志文件超过最大值了..
能够作如下措施
一、增长日志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();################################################

相关文章
相关标签/搜索