zoukankan      html  css  js  c++  java
  • 日志记录

    #####################################################
    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();
    ################################################

  • 相关阅读:
    装饰器模块和面试题
    装饰器和推导式
    设计商城系统,主要提供两个功能:商品管理、会员管理。
    写代码:三级菜单
    写代码:循环打印names列表,把元素和索引值都打印出来。
    写代码: 编写登录接口
    写代码:假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?
    写代码:输入一年份,判断该年份是否是闰年并输出结果。
    写代码:制作趣味模板程序
    变量n1和n2是什么关系
  • 原文地址:https://www.cnblogs.com/toolbear/p/10418935.html
Copyright © 2011-2022 走看看