Build CyanogenMod 10.2 for Nexus 4

一直想尝试着自己编译 CM,毕竟如果想修改系统 Apk,就有可能需要编译整个系统。于是在开了一台 Ubuntu x86_64 虚拟机(这是一个大坑,等会儿说)作为编译机器,参考的主要是 CM 官方 wiki:http://wiki.cyanogenmod.org/w/Build_for_mako?setlang=en。根据 wiki 指示准备好基础环境后,开始 repo sync,总共下载了 6GB 多的工程代码。总的来说,一直到 wiki 的 “Start the build” 一节,都没有问题,照着做就好了。不过当执行 brunch mako 之后,坑就一个个冒出来了。

继续阅读“Build CyanogenMod 10.2 for Nexus 4”

用 WinDbg 调试符号不全的程序

其实也就是记录一下用 WinDbg 调试 fHash 的一次过程,这个 bug 是由于没好好看文档造成的,我需要让 fHash 知道当前运行的操作系统是 32 位还是 64 位的,之后好去选择正确的 shell extension 文件。查文档看到了这个函数 IsWow64Process ,之后错误的以为 kernel32 中有这个函数就是 64 位操作系统,结果就已这个逻辑写下了错误的 64 位系统判断函数,和错误文件读取逻辑。


tstring tstrExeDirPath(pszExeFullPath);
tstring::size_type idx = tstrExeDirPath.rfind(_T("\\"));
tstrExeDirPath = tstrExeDirPath.substr(0, idx);

tstring tstrShlExtDll = tstrExeDirPath;
tstrShlExtDll.append(_T("\\fHashShlExt"));
if(IsWindows64())
    tstrShlExtDll.append(_T("64"));
tstrShlExtDll.append(_T(".dll"));

WIN32_FIND_DATA ffData;
HANDLE hFind = FindFirstFile(tstrShlExtDll.c_str(), &ffData);

bool bRet = (hFind != INVALID_HANDLE_VALUE);

if(bRet)
{
#if defined(UNICODE) || defined(_UNICODE)
    wcscpy_s(pszShlDllPath, MAX_PATH, tstrShlExtDll.c_str());
#else
    strcpy_s(pszShlDllPath, MAX_PATH, tstrShlExtDll.c_str());
#endif

   FindClose(hFind);
}

return bRet;

结果很自然,在 32 位的 Windows XP 上没有执行正确。但是测试环境没有 VisualStudio,而且用的是 Release 编译,也没有带着符号文件,这怎么调试呢。Windows XP 上装有 WinDbg,那么就用它来调试。

继续阅读“用 WinDbg 调试符号不全的程序”

JSToolNpp 1.15 Released

What’s New in JSToolNpp 1.15:

  • Change name to JSTool.
  • Added simple search in Json Viewer.
  • Fixed Json Viewer and editor linkin bug.
  • Fixed Json Viewer utf-8 bug.
  • Other tweaks.

Download links:

http://jstoolnpp.googlecode.com/files/JSMinNPP.1.15.uni.zip

http://sourceforge.net/projects/jsminnpp/files/latest/download

JSMinNpp 1.13 Released

What’s New in JSMinNpp 1.13:

  • Performance improved (JSFormat will be about 2X faster).
  • Linked editor with Json Viewer: Clicking a data node in Viewer, editor will navigate to corresponding line.
  • Added a logo.

Download links:
https://jstoolnpp.googlecode.com/files/JSMinNPP.1.13.uni.zip
http://sourceforge.net/projects/jsminnpp/files/Uni/JSMinNPP.1.13.uni.zip/download

Java, JNI and Notepad++ Plugin

最近把之前写的 JsFormatter 用 Java 移植了一下,于是想着能不能用 JNI 作为包装,让 Notepad++ 的插件调用 Java 版的算法,于是有了下面的两个项目:
https://github.com/sunjw/JsToolJava
https://github.com/sunjw/JsFormatterJavaNppPlugin

先说一下怎么跑这个插件,将 JsFormatterJavaNppPlugin 编译得到的 JSMinJava.dll 放到 npp 的插件目录,之后将 JsToolJava.jar 和 commons-lang-2.6.jar 也放入插件目录,最后将 %JAVA_HOME%\bin\client 添加到 PATH 环境变量。这样应该就能运行 JSMinJava 插件,其中 JSFormat 功能就是用 JNI 调用 Java 执行的。这个在 npp 6.3, JRE 1.6 上测试成功,其他配置不一定能正常工作。

继续阅读“Java, JNI and Notepad++ Plugin”

[转] Mount Nexus 4 on Fedora 17

原贴地址:
http://forums.fedoraforum.org/showthread.php?t=286547

Shiny new toy! I wrote a quick howto blog post for getting something working until a better solution comes along.

Link to blog edited out as per sub-forum rules — DBelton

======================

继续阅读“[转] Mount Nexus 4 on Fedora 17”

JSMinNpp 1.12 Released

What’s New:
1.12
Fix a bug in JSON Viewer.
Update JsonPP.
Fix “unexpect space” of JSLint.
Add an option to keep indent in empty line.
Fix “finally” bug.
Change project site to http://sunjw.us/jsminnpp/

Download links:
https://jstoolnpp.googlecode.com/files/JSMinNPP.1.12.uni.zip
http://sourceforge.net/projects/jsminnpp/files/Uni/JSMinNPP.1.12.uni.zip/download