一直通过property来控制android系统的号码匹配位数,之前的项目都工作的好好的,但到了KK时,在sqlite库中引用property的相关方法,却一直编译error...

折腾了好久,发现从KK开始google在编译 libcutils到host static library时,不再将properties.c编译进库里,而相应的target static library里是会编进去的,所以问题就来了。sqlite的mk文件里是会将sqlite编进host static库的,而libcutils在host static中又不包含property的相关方法,所以就导致编译出错。。。。另一方面,sqlite也会编进target 的static library,但target的Libcutils里是包含了property的编译的,所以不会有问题,问题就出来这个Host的编译上。

解决办法一:修改libcutils的mk文件,将properties.c编进host static library,这样host static里的sqlite也可以引用了;

这个方法尝试了,但关联实在是多,并非单单加一个properties.c到编译里这么简单,这里也要吐槽下google,怎么会改这个地方。

解决方法二:使用宏控制,针对host static的sqlite编译,不加property的相关引用。

所选择的宏,可以从 build\core\combo\include\arch\ 里的 AndroidConfig.h里区分出来,这个头文件是android强制代码中所有的C和C++文件都会包含的一个头文件,里面是控制编译的一些宏。不同的编译目标会引用不同的AndroidConfig.h文件,比如编译host的库时,会引用build\core\combo\include\arch\linux-x86下的AndroidConfig.h,当然前提你的编译环境是linux-x86的,目前基本都是。。。。编译target的库时,如项目目标device是arm平台,那就是build\core\combo\include\arch\linux-arm下的AndroidConfig.h文件。

而在这个头文件中控制property方法编译的是  HAVE_LIBC_SYSTEM_PROPERTIES 和 HAVE_SYSTEM_PROPERTY_SERVER 这两个宏永远是互斥的。

如下:build\core\combo\include\arch\linux-arm\AndroidConfig.h

/*
* Define if libc includes Android system properties implementation.
*/
#define HAVE_LIBC_SYSTEM_PROPERTIES 1 /*
* Define if system provides a system property server (should be
* mutually exclusive with HAVE_LIBC_SYSTEM_PROPERTIES).
*/
/* #define HAVE_SYSTEM_PROPERTY_SERVER */

所以我们使用这个宏来控制编译就可以避免host static sqlite 库编译error。

如下:

#ifdef HAVE_LIBC_SYSTEM_PROPERTIES
#include <cutils/properties.h>
#endif

Android KK 找不到<cutils/properties.h>的更多相关文章

  1. Xamarin.Android提示找不到mono.Android.Support.v4

    Xamarin.Android提示找不到mono.Android.Support.v4 错误信息:Error: Exception while loading assemblies: System.I ...

  2. Xamarin Android提示找不到资源属性定义

    Xamarin Android提示找不到资源属性定义 错误信息:”Resource.Attribute”未包含”actonBarSize”的定义Xamarin Android经常会出现找不到资源属性的 ...

  3. android开发找不到模拟器(PANIC: Could not open:)解决办法

    android开发找不到模拟器(PANIC: Could not open:)解决办法   2013/4/3 17:44:15 0人评论 213次浏览 分类:android开发 在系统环境变量设置名为 ...

  4. AndroidStudio -- AndroidStuido中找不到cache.properties文件

    AndroidStuido中找不到cache.properties文件 报错信息: 16:32:10 Gradle sync failed: C:\Users\***\.gradle\caches\2 ...

  5. 使用ASIHTTPRequest xcode编译提示找不到"libxml/HTMLparser.h"

    使用ASIHTTPRequest xcode编译提示找不到"libxml/HTMLparser.h",解决方法如下: 1>.在xcode中左边选中项目的root节点,在中间编 ...

  6. 使用ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法

    使用ASIHTTPRequest xcode编译提示找不到"libxml/HTMLparser.h",解决方法如下: 1>.在xcode中左边选中项目的root节点,在中间编 ...

  7. 找不到头文件xxxxx.h file not found

    项目里有该文件,但是还是显示找不到.或者是cocopods打开的项目. 原因:.h文件路径找不到.具体找不到的原因有很多种. 1.一般会设置 IOS引用三方framewrok的头文件出现'xxxxx/ ...

  8. Android Studio 找不到夜神模拟器的解决办法

    Android Studio 找不到夜神模拟器的解决办法 1.启动夜神模拟器 2.找到你电脑上的夜神安装目录,在bin目录下打开cmd窗口,运行命令 nox_adb.exe connect 127.0 ...

  9. android的Project has no default.properties file! Edit the project properties to set one. 的解决

    网上找来这种方法基本解决: 在我们导入Android工程时,有时候会出现如题所述的错误,打开工程目录可以看到,目录下的default.properties文件没有了或者多出了一个project.pro ...

随机推荐

  1. windows7命令行终端获取管理员模式随笔

    非常感谢http://wenku.baidu.com/view/d0e8d2d2240c844769eaee8a.html 背景: 安装了windows7系统后发现有很多命令在命令行模式下运行不了说没 ...

  2. 早期(编译器)优化--javac编译器

    java语言的“编译期”其实是一段“不确定”的操作过程,可能是指一个前端编译器把.java变成.class的过程,也可能是指虚拟机的后端运行期编译器(JLT)把字节码转变成机器码的过程,也有可能是使用 ...

  3. saltstack 命令2

    在Salt主机上,可以快速查看所有Salt minion连接,并查看连接是否被接受,拒绝或挂起 [root@node1 ~]# salt-key -L 接受所有的key [root@node1 ~]# ...

  4. JSON序列——主从表查询

    JSON序列——主从表查询 客户端代码: procedure TForm1.Button4Click(Sender: TObject); // 主从表 查询 begin var url: TynUrl ...

  5. unity 打包编译记录

    1.放到Plugins目录下的贴图不会打包进去 2.放到Plugins目录下的dll会自动打包,代码也会打包 3.放在Resources目录下的资源会自动打包 4.放在StreamingAssets目 ...

  6. DateTables的服务器分页

    function InitTable() { var table = $('#tbl_users').DataTable(); if ($.fn.dataTable.isDataTable('#tbl ...

  7. Android批量图片加载经典系列——使用LruCache、AsyncTask缓存并异步加载图片

    一.问题描述 使用LruCache.AsyncTask实现批量图片的加载并达到下列技术要求 1.从缓存中读取图片,若不在缓存中,则开启异步线程(AsyncTask)加载图片,并放入缓存中 2.及时移除 ...

  8. ESXI 迁移至KVM (V2V迁移)

    1.1.1 ESXI将虚拟机导出 导出ova模板 将导出的ova模板导入到KVM环境中. 1.1.2 配置KVM环境 详情参考:http://www.cnblogs.com/clsn/p/836625 ...

  9. Android apk签名的两种方法

    编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 为了保证 ...

  10. npm install node-sass失败

    Cannot download "https://github.com/sass/node-sass/releases/download/v3.8.0/win32-x64-46_bindin ...