bcoder

1月 182018
 

  C++出现: 1 duplicate symbol for architecture x86_64可能的问题如下:

  1. 你可能在一个头文件中定义了一个变量或者函数,但是这个头文件被多个cpp文件include了
  2. 你可能把一个静态变量(static)定义了多次
  3. 你可能在一个cpp文件中将一个函数定义了多次

  可以查看详细的错误信息,看看是哪个变量或者函数被重复定义了。

  本人这此遇到此问题是因为把一个静态变量的定义放在头文件里了,应该放到cpp文件里就没问题了。

 

 Posted by on 2018-01-18

gradle打印依赖树

 分类:Android, Java 阅读 (12,517)  No Responses »
1月 132018
 

  本文适用于OSX和Linux系统,Windows系统用户可用来参考

  在Android Studio中进行了三方库的前期测试调研工作,然后要把工程转移到Android系统工程中,使用Android.mk进行编译,所有的三方jar包只能手动添加到工程中了。在使用Android Studio的dependency的时候除了显示添加到其中的三方库,三方库可能还会调用其他的依赖库,那怎么才能知道到底用了哪些库呢,只能使用gradle了。

  在命令行cd到工程所在的根目录,然后使用如下命令打印as工程中的库的依赖关系,其中app为要查看的模块的名称

  如果执行成功的话就会打印一大堆信息,其中一部分内容就是不同的gradle任务的类库依赖关系,类似如下形式:

已经下载的类库存在哪里?

  默认情况下gradle下载的文件在用户目录下的.gradle目录中,可以通过如下命令进行该目录

  然后通过find命令查找你想要的库就可以了,比如要查gson的jar包,可以用如下命令:

 

 Posted by on 2018-01-13

LeakCanary入门教程

 分类:Android, Java 阅读 (1,203)  No Responses »
1月 122018
 

首先在gradle中添加库的依赖,如下:

releaseImplementation依赖库是用于在release包中,只有LeakCanary的各种方法的壳,但是没有具体的实现,防止在给用户的release包中也进行内存检测操作。

然后新建一个Application类,并在此Application类的onCreate中加入以下代码

打开一个Activity,在关闭的时候如果有内存泄漏,LeakCanary将会在通知栏显示图片,点击图标即可看到详细的内存泄漏报告,如下图所示:

 Posted by on 2018-01-12

打包apk时出现Cannot recover key的错误

 分类:Android, Java 阅读 (4,439)  打包apk时出现Cannot recover key的错误已关闭评论
11月 252017
 

出现这种错误一般是输入的keystore的密钥有问题了

重新输入一下打包的密钥就可以了

 Posted by on 2017-11-25
11月 212017
 

需要安装的库(下载代码前):

sudo apt-get install curl

sudo apt-get install git

需要安装的库(编译前):

sudo apt-get install git git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown

sudo apt-get install lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown

sudo apt-get install lib32readline-gplv2-dev

sudo apt-get  install libxml2-utils

 Posted by on 2017-11-21
11月 172017
 

  每次下载安卓源码都要花1天的多的时间,而且在公司下载几十个G也占用别的人网速,所以对于只关注部分代码的人,可以只同步某些项目,这样节省时间和带宽。
本文所说内容是以你repo init成功为基础的。
  首先打开源码目录下的.repo目录,打开manifest.xml,里面是一个子项目列表,其中xml节点中的name属性为我们需要用的
比如下载platform/packages/apps/Bluetooth的命令如下:

  有的时候这个manifest.xml并没有你想要的那个项目,你可以根据安卓官方的源码结构添加进去,比如下面几个就是我手动添加的:

  另外如果你想同时下载多个项目也是支持的,在不同的项目后面加上空格分隔即可,如下:

 链接:

  1. 安卓官方源码库:https://android.googlesource.com/
  2. 清华镜像下载:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

 

 Posted by on 2017-11-17
11月 142017
 

使用adb shell getprop即可获得Android系统的版本号,如下:

另外直接执行adb shell getprop还可以获得更多的系统属性,如下是我机器显示的结果:

 

 Posted by on 2017-11-14
10月 312017
 

此方法不可用!!!

使用RowID

 

 Posted by on 2017-10-31
10月 102017
 

本来以为这样的回形是有规律可循的,但是找了好长时间没找到,看来只能用遍历了。

x,y的使用有些乱,读者自己理一下吧

结果展示:

 

 Posted by on 2017-10-10