PIXNET Logo登入

CONY的世界

跳到主文

在這裡我不是要向大家講述我的生活,只是想留著一些回憶

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 12月 09 週四 201012:04
  • [轉載]android ndk翻译之十:如何写系统日志


今天翻译log.h文件。
1, 版权声明,这个不用我翻译了吧,游戏规则是这样子滴,非得来这一套,我直接把原文贴出来好了,看不看你自己负责,嘿嘿(-^^-)
* Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 
2, 重要提示:
 
   这个文件来自NDK 1.5版提供的稳定API中的一部分,依赖这份文件开发的第三方代码在将来的平台发布版中不用修改也可以正常运行。
   -不要修改枚举(除非你要加入新的32位值)
   -不要修改常数或功能宏.
   -不要修改函数声明
   -不要修改结构体的布局和大小。
 
3,支持程序向Android的内核日志缓冲区发送消息,这个消息随后可以被’logcat’工具访问。
 
每条日志消息一定有:
-优先级
-日志标签
-文本
标签与发出消息的组件相对应,应该会很简短。
日志文本可能会被删节,少于原有的限制数量(比如,最大1023个字符).
  注意,换行符会被自动加入到你的日志消息中,如果没有的话。发送几条消息,
而又要让他们在logcat中保持在一行出现,这是不可能滴。
 
4,请适度使用日志
 -发送日志会消耗CPU,减慢你的程序和系统的运行速度。
 -日志缓冲区是循环使用的,非常小,发送太多消息,可能会PUSH掉系统中其他重要的日志消息。
-在发行版,只有导致异常的条件发生时,才发送日志消息。
注意:这些函数在/system/lib/liblog.so中实现。
 
5,以下是枚举常数和函数声明。
//Android 日志优先级, 按从小到大顺序.
typedef enum android_LogPriority {
    ANDROID_LOG_UNKNOWN = 0,
    ANDROID_LOG_DEFAULT,    /* only for SetMinPriority() */
    ANDROID_LOG_VERBOSE,
    ANDROID_LOG_DEBUG,
    ANDROID_LOG_INFO,
    ANDROID_LOG_WARN,
    ANDROID_LOG_ERROR,
    ANDROID_LOG_FATAL,
    ANDROID_LOG_SILENT,     /* only for SetMinPriority(); must be last */
} android_LogPriority;
 
//发送一个字符串
int __android_log_write(int prio, const char *tag, const char *text);
 
//发送一个格式化的字符串,象printf(fmt,…)那样。
int __android_log_print(int prio, const char *tag,  const char *fmt, ...)
 
//__android_log_print()函数的变种,用va_list类型的变量列出附加的参数。
int __android_log_vprint(int prio, const char *tag,
                         const char *fmt, va_list ap);
 
//记录断言失败,让调试进程有机会检查。使用FATAL优先级。
void __android_log_assert(const char *cond, const char *tag,
              const char *fmt, ...)   
注,以上的序号是我自己加的,请自行参考原文。这份头文件在ndk的build\platforms\android-1.5\common\include\android目录下面,
打算明天写个例子程序,解释下如何使用log。
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(21)

  • 個人分類:學習
▲top
  • 12月 09 週四 201012:03
  • [轉載]android ndk翻译之九:Bionic C 库一览(三)


二进制兼容性:
 
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(135)

  • 個人分類:學習
▲top
  • 12月 09 週四 201012:02
  • [轉載]android ndk翻译之八:Bionic C 库一览(二)


多核支持:
目前,Bionic不提供或使用读/写内存屏蔽。这意味着可能在某些多核系统中不被支持,这取决于实际的CPU架构。
Android特性:
Android提供了少部分特殊的功能。
- 访问系统属性:
Android向系统中所有的进程提供了一个简单共享的键/值对空间。它提供了properties上的字符号码,每一个都是限制大小的字符串,与一个限制大小的字符串值相关联。
头文件能够被用于读系统属性,也定义键/值对的最大大小。
-Android的用户/组管理:
在Android中没有/etc/passwd 或 /etc/groups,按照设计,只打算给一个手机用户使用。另一方面,Android使用扩展的Linux用户/组管理特性,以确保进程权限,象对不同文件系统目录的访问。
Android策略是这样的,每个已安装的应用程序都有自己的uid_t/gid_t(从10000开始),小于10000的ids保留给系统守护进程.
getpwnam()认得一些硬编码的子系统名(比如.”radio”),会把他们翻译为用户id值,它也认得
"app_1234"是一个组合名字,会把它和10000相加,得到11234. getgrnam()也一样。
getgrouplist()总是返回用户名所属的组,它取用户名做输入参数。
同样地,getgrgid()只会返回一个结构体,它包含一个单元素的成员列表,与用户组的数值一样的用户相对应,
预知详情,参考bionic/libc/bionic/stubs.c。
- getservent()
在Android中没有/etc/services,
C库在可执行文件中嵌入只读的服务列表作为代替,它们被依赖于它的不同函数所解析。可以参考bionic/libc/netbsd/net
/getservent.c和bionic/libc/netbsd/net/services.h.
内部定义的服务列表可能在未来有变化。这项特性是历史性的,很少使用。
getservent()返回线程本地数据。getservbyport()和getservbyname()也按照同样的方式实现。
- getprotoent()
在Android中没有/etc/protocol,当前不实现getprotoent()和相关函数。如果加入的话,很有可能会与getservent()相同的方式实现。
DNS解析器:
Bionic 使用NetBSD-derived 解析库,按以下方式修改:
- 不实现name-server-switch特性(a.k.a. )
- 读取/system/etc/resolv.conf而不是/etc/resolv.conf
- 从系统属性中读取服务列表。代码查找'net.dns1', 'net.dns2',等等。每个属性应包含一个DNS服务器的IP地址。
这些属性被Android系统的其他部分修改设置(比如dhcpd进程)
在实现上,也支持每进程的DNS服务器列表,使用属性'net.dns1.', 'net.dns2.',等等。这里代表当前进程的ID号。
- 在执行查询时,使用一个适当的随机查询ID(而不是递增1),以提高安全性。
- 在执行查询时,给本地客户socket绑定一个随机端口号,以提高安全性。
- 删除一些源代码,这些源代码会造成许多不幸的线程安全问题。
Bionic不暴露它的DNS解析器的实现细节;中的内容故意空白。解析器的实现可能会在未来完全改变。
PThread 实时定时器:
支持timer_create(), timer_gettime(), timer_settime() and timer_getoverrun()。
Bionic现在也支持SIGEV_THREAD实时定时器(参见timer_create())。
在实现上,简单地使用一个线程一个定时器的机制,不像Glibc使用复杂的启发式技术,在多个定时器具有相同属性的情况下,尽可能减少使用的线程数。
这意味着,如果你的代码使用许多SIGEV_THREAD定时器,你的程序可能会消耗太多内存。无论如何,如果你的程序需要许多定时器,最好直接使用timeout事件代替。
其他定时器(如SIGEV_SIGNAL)由内核处理,使用更少的系统资源。
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(103)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:59
  • [轉載]android ndk翻译之七:Bionic C 库一览(一)


本来不打算再翻译ndk的内部文档了,但是看到eoe特刊第七期还缺了几篇文档没有翻译,所以决定还是把它们翻译完。
今天翻译libc/OVERVIEW.TXT.
Bionic C 库一览:
介绍:
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(98)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:58
  • [轉載]android ndk翻译之六:android native C的宽字符处理:ICU4C(第一篇)


为
什么要翻译ICU? 是因为我以前移植的一个项目,其中需要用到宽字符处理,写一个函数,例如wcslen(L”123456789”);
它告诉我结果等于1,这让我郁闷了N久,后来查看bionic源代码,这才明白了个中情由,原来TMD
Android是把宽字符当作单字节字符来处理的。唉,真让我生气,不支持也就算了,何必搞一个假的东西来欺骗我们的感情呢?那么在Android中要怎
么处理宽字符呢,答案就是ICU4C, 在1.5版的ndk中没有提供相关的api,需要自己添加。
ICU介绍
越来越多的企业把电子商务作为一项基本的商务流程,他们的客户和合作伙伴都能够通过软件的国际化,来增加收入和减少开支,并能增进与客户的沟通与了解,从而使收入得到提高。
迎接全球话的挑战
软件国际化导致的结果:
在当今全球化的商业环境,公司必须参与国际化竞争,缩短产品周期,需要给客户可靠的服务和支持。
国际化软件的优势:
公司必须在全球化商务流程和低层IT支持之间,做更好的衔接。如果他们想要这种新的便利性和灵活性,就必须依靠软件的国际化处理。
软件国际化使用库(例如the International Components for
Unicode (ICU)
libraries),使得一个程序在世界上任何地域任何语言的环境条件下,都能保持正常工作。例如,不用把一个程序分隔为10个国家的不同的版本,使用
ICU服务,只要创建一个版本就可以良好地运行在任何一个国家的环境中。
ICU组件是软件开发的一个组成部分,因为他们隐藏了文化上的细微差别和实现特定区域的软件要求所所带来的技术复杂性。这些复杂的技术提供了重要的功能,而程序开发人员却不需要付出巨大的努力或高昂的成本。投
资理由
在投资的时候,需要有商务上的案例来证明,软件的国际化投资是必须的。在快速发展的世界,电子商务的发展也很迅猛,这些国际化的组件提供了坚实的基础,使
企业,合作伙伴和供应商们能够拓展自己的交易。他们可以分享竞争信息,已获得强大地竞争优势。
ICU服务证明了自身的价值,那就是降低了不同地域的应用程序,系统和数据源的集成融合成本,另外在IT投资方面也是有价值的,因为它降低了IT的复杂
性,风险,和维护培训成本。它也增强了组织的弹性,平衡现有资产,改善规划和决策,它使有组织的学习,过程驱动同步化,事件驱动评估和决策成为可能。
ICU的背景和历史
ICU原来由Taligent公司开发。Taligent团队后来成为IBM全球认证中心Unicode组。这个组织获得全球开源社区的大量资助。
他们开发的java类库已经集成到JDK1.1版本里面了,这些类被移植到C++,后来又被移植到C,这些类为C,
C++和java程序提供了国际化的工具,
ICU for java 包含了这些类的增强版本,还包括一些辅助类,C和C++版本的ICU(ICU4C)也提供了同样的功能。这些API有一点不同,由于语言差异和新功能。例如,ICU4C包括字符转换API.
ICU4J和ICU4C保持同样的开发目标。他们都跟踪Java国际化API的追加功能,并
实现最后的Unicode标准。他们还维护同一份可移植的基础源代码。ICU和开源小组的所有人感谢你花时间来了解我们的技术。我们在这些开源组件上尽了
最大的努力,也欢迎您提出问题,意见和建议。下载ICU
可以有以下途径:
1,从下载页面http://www.icu-project.org/download/,下载稳定的发行版。
2,从开源代码仓库,http://www.icu-project.org/repository/,下载最新的开发版。ICU-License – ICU 1.8.1 and later
下面的是版权声明,就不翻译了.自己看吧.
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1995-2009 International Business Machines Corporation and others. All rights reserved.
Permission is hereby granted, free of
charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice
appear in all copies of the Software and that both the above copyright
notice(s) and this permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Except as contained in this notice, the
name of a copyright holder shall not be used in advertising or otherwise
to promote the sale, use or other dealings in this Software without
prior written authorization of the copyright holder.
All trademarks and registered trademarks mentioned herein are the property of their respective owners.
这是第一篇,都是些基本的介绍,对编程没有什么帮助,本想再翻译下面如何使用的内容,不知何故,今天ICU官方网站打不开了.郁闷ING。。。
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(37)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:50
  • [轉載]anroid ndk文档翻译之五:Application.mk 文件语法规范


Application.mk 文件语法规范介绍:-------------
这篇文档用来描述
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(16)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:48
  • [轉載]anroid ndk文档翻译之四:Android.mk文件语法规范(下部)


NDK-提供的功能宏
-          - - - - - - - - - - - - - -
下面是GNU Make ‘功能’宏,必须通过使用'$(call )'来求值,他们返回文本化的信息。
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(9)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:47
  • [轉載]android ndk文档翻译之三:Android.mk文件语法规范(上部)


今天翻译ANDROID-MK.TXT文件
Android.mk文件语法规范
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(61)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:46
  • [轉載]anroid ndk文档翻译之二:android ndk一览


III. NDK 开发实践---------------------------------下面是如何使用Android NDK开发原生代码的粗略一览:1,
运行build/host-setup.sh配置NDK2,
把你的源代码放在sources//…目录下
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(14)

  • 個人分類:學習
▲top
  • 12月 09 週四 201011:45
  • [轉載]anroid ndk文档翻译之一:android ndk一览


Android NDK一览介绍: Android NDK是一套工具,允许程序开发人员把C和C++编译出来的机器代码嵌入到他们的应用程序包。重要信息:
(繼續閱讀...)
文章標籤

angledark0123 發表在 痞客邦 留言(0) 人氣(43)

  • 個人分類:學習
▲top
«1...16171861»

個人資訊

angledark0123
暱稱:
angledark0123
分類:
生活綜合
好友:
累積中
地區:

Top Posts

  • (16,627)什麼是Library(函式庫,大陸稱庫)
  • (1,600)" 食物GI值 " 的大整理
  • (863)我不知道風是在哪一個方向吹 徐志摩
  • (397)「大考大玩,小考小玩」的真實意義
  • (265)yuv player 實作筆記
  • (162)寫程式語言人的痛(同感)
  • (133)何其芳〈夢中道路〉
  • (9)兩天一夜台北遊 part1 -元定食
  • (5)Devdas
  • (3)告訴你我在忙什麼

文章分類

toggle leetcode (3)
  • Algorithm medium (32)
  • easy (5)
  • hard (6)
  • google (1)
  • 拜家 (4)
  • 學習 (102)
  • 生活隨筆 (49)
  • 旅遊 (16)
  • 美食 (9)
  • 未分類文章 (1)

最新文章

  • Leetcode Tree,Linkedlist 114 @ Java
  • Leetcode DP 764 @ Java
  • Leetcode Greedy 316 @ Java
  • Leetcode DP 140 @Java
  • Google CodeJam I/O for women 2/17- Graph-Centrist
  • Leetcode contest-2/17- BFS 785 @ Java
  • Leetcode Math 670 @Java
  • Leetcode Graph 269 @Java
  • Leetcode BFS 127 @ Java
  • Leetcode UnionFind 261 @Java

最新留言

  • [24/08/12] 訪客 於文章「減重整理...」留言:
    瘦身要有效最重要的是提升自身代謝力 唯有代謝提高後,又...
  • [23/09/23] 新飛Hsinfei 於文章「最近英文課一波三折...」留言:
    都是為了連假!辛苦的補班英文該怎麼說?連假英文呢? http...
  • [22/04/27] 訪客 於文章「Create customized MP...」留言:
    原本在搜尋引擎找出一堆 Blog 文章,不知哪幾篇值得花時間...
  • [20/12/17] 哈 於文章「Leetcode Tree,Linked...」留言:
    爛...
  • [17/09/18] 老菜 於文章「Win7上灌vc6...」留言:
    您好,請問您還有FileTool這個補丁嗎?MicroSof...
  • [17/08/19] Tim Feng 於文章「Leetcode Stack 71,40...」留言:
    你好,我最近在學python,分析各位先賢們的專案。從200...
  • [16/11/09] Blake Hung 於文章「C/C++之指標 (pointer),參...」留言:
    非常詳盡,謝謝!...
  • [16/06/18] 路人 於文章「什麼是Library(函式庫,大陸稱庫)...」留言:
    黃色字很不清楚,不容易看。...
  • [15/04/20] 訪客 於文章「vim附件:cscope+ctag 使用...」留言:
    Ctrl+/ 再按s 表示:cs find s命令 ==>C...
  • [14/03/20] 射手白馬 於文章「心情雜記...」發表了一則私密留言

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: