一些在iOS开发中很好用的开源库地址

JSON 这个不用说了,JSON的编解码

http://stig.github.com/json-framework/

ASIHttpRequest 简化了Http相关操作处理

http://allseeing-i.com/ASIHTTPRequest/

MBProgressHUD 做等待提示很好用

https://github.com/jdg/MBProgressHUD/

MHNibTableViewCell 简化TableViewCell的制作

http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

https://github.com/hollance/MHNibTableViewCell

InAppSettingKit 做程序内偏好设置很方便

http://www.inappsettingskit.com/

https://github.com/futuretap/InAppSettingsKit

MkStoreKit 很好的程序内购买的包封装

http://blog.mugunthkumar.com/coding/introducing-mkstorekit-%E2%80%93-version-3/

其他一些好包推荐介绍地址

http://mobile.csdn.net/a/20110317/294018.html

Popularity: unranked [?]

Random Posts

在 Android 程序中禁止屏幕旋转和避免重启Activity

禁止屏幕随手机旋转变化

有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变化:
在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入 android:screenOrientation=”landscape” 属性。

  • landscape = 横向
  • portrait = 纵向
  • 避免在转屏时重启Activity

    android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次 Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
    要避免在转屏时重启Activity,可以通过在AndroidManifest.xml文件中重新定义方向(给每个Activity加上 android:configChanges=”keyboardHidden|orientation”属性)。
    在需要控制屏幕显示方向的Activity中重写 onConfigurationChanged(Configuration newConfig)方法,这样在转屏时就不会重启Activity了。

    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
    1.   //横向
    2.   setContentView(R.layout.file_list_landscape);
    3. }else{
    4.   //竖向
    5.    setContentView(R.layout.file_list);
    6. }

    在模拟器中可以按 CTL+F11 模拟做屏幕旋转。

    Popularity: unranked [?]

    Related

    Android NDK调试碰到signal 11 (SIGSEGV), fault addr deadbaad

    使用NDK开发的so文件在运行时崩溃,日志中提示
    signal 11 (SIGSEGV), fault addr deadbaad
    然后后面列出了一些寄存器值和pc代码行,stack等信息,根据pc代码行配合 arm-eabi-addr2line可以发掘出错位置所对应的函数名。用法如下;
    arm-eabi-addr2line -f -e libmyjni.so 0×00024039 (输出日志中最上面的pc值,可以回溯最终函数调用顺序)

    程序中需要有符号信息,不能使用下面的语句将调试符号剔除
    build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-strip –strip-debug apps/NDKTest/project/libs/armeabi/libmyjni.so

    Popularity: unranked [?]

    Related

    在SQlite中遍历一张表的同时更新这个表的内容碰到的一些问题

    在一个连接中遍历一个表的时候同时使用sql语句更新这个表的值,碰到错误”database table locked”
    首先尝试在遍历前使用 PRAGMA read_uncommitted = True;
    在遍历完成后在执行PRAGMA read_uncommitted = False;
    这么处理后在遍历过程中可以对表做更新操作,不过引起另外一个问题,只能遍历一半的表记录,且当为记录行数为基数时会出现“not an error”错误,经测试估计是在遍历过程中使用执行更新sql语句时,同时向后移动了遍历的位置。
    再次尝试使用两个链接来做遍历更新处理,其中一个链接做遍历,另外一个链接做更新。 在记录数少时一切正常,但是当记录数很多时候,在后面记录的更新时会出现“SQL logic error or missing database” 的错误。
    最终对要遍历的表采用limit关键字分片读取出需要的数据,然后对这些数据做更新,完成后再读入下一组数据继续处理。

       load a block data
       while has block data
          foreach record in block
           do update
          load next block data
    

    Popularity: 3% [?]

    Related

    在Android NDK 中使用STLport(译)

    Android NDK是Native C/C++开发,不过下载来看了一下缺少常见的STL库,使用起来诸多不便,于是网上google了一把,发现有人做了这样的事情,特别转过来
    ——————————–
    原文: Android NDK – getting STLPort up and running
    作者: Pete Cole
    ——————————-
    如果你想在Android NDK使用STLPort, 你必须要做点处理,即便你是在windows上使用cygwin.

    首先, 从http://umbel.mooo.com/ 获取一份修改版的 STLPort(by John Ripley (great job, John!)). 如果你是一个 cygwin 用户, 你首先要安装一个git包(译注:可以直接下载snapshot,这样就不要安装git了).

    然后将文件拷贝到你的工作目录下. 在我的机器上, 我将文件拷贝到了c:\android-ndk-1.5_r1 目录下, 并将 两个hello-stl 文件夹移动到其他和NDK有关的目录下:

    C:\android-ndk-1.5_r1\apps\hello-stl
    C:\android-ndk-1.5_r1\sources\samples\hello-stl
    

    然后在Build STLPort前必须修改一些文件…

    setup.sh
    将最前面的一些行修改正如下样子:

    1. #!/bin/bash
    2. if uname | grep -qi linux; then
    3. export NDK_HOST=linux-x86
    4. elif uname | grep -qi CYGWIN; then
    5. export NDK_HOST=windows
    6. else
    7. export NDK_HOST=darwin-x86
    8. fi

    将倒数第三行修改成如下样子:

    1. ln -sf "$NDK_DIR/build/prebuilt/${NDK_HOST}/arm-eabi-4.2.1/bin/arm-eabi-$tool" arm-linux-$tool

    stlport/build/lib/android.mak

    将TOOLCHAIN_PREFIX这一行修改成

    1. TOOLCHAIN_PREFIX := $(NDK_DIR)/build/prebuilt/$(NDK_HOST)/arm-eabi-4.2.1/bin/arm-eabi-

    译注: 我下载来的Wrapper包已经是这个样子了,不用修改

    sources/samples/hello-stl/Android.mk
    将STLPORT_BASE这一行修改成如下样子:

    1. STLPORT_BASE := /cygdrive/c/android-ndk-1.5_r1/stlport

    译注:我没有修改这边,执行了一个export NDK_WRAPPERS_BASE=basepath的操作

    将:

    1. LOCAL_LDLIBS += -L$(STLPORT_BASE)/build/lib/obj/gcc/so \
    2. -lstlport

    修改成

    1. LOCAL_STATIC_LIBRARIES := libstlport.5.1

    Building STLPort
    现在文件已经被合并了,你可以立即build STLPort了!

    执行如下cygwin shell脚本… 它将build STLPort的静态链接库! 对此你只需要做一次.

    1. export NDK_DIR=/cygdrive/c/android-ndk-1.5-r1
    2. cd $NDK_DIR
    3. ./env.sh
    4. ./setup.sh

    现在,像下面这样讲文件拷贝到你的工程中:

    1. cp -p \
    2. /cygdrive/c/android-ndk-1.5_r1\stlport\build\lib\obj\gcc\ar\libstlport.5.1.a \
    3. /cygdrive/c/android-ndk-1.5_r1\out\apps\hello-stl\android-1.5-arm

    Building your project’s shared library.
    现在你可以返回cygwin的shell窗口,然后执行如下命令:

    1. cd /cygdrive/c/android-ndk-1.5_r1
    2. make APP=hello-stl

    将编译你的共享库文件:
    C:\android-ndk-1.5_r1\apps\hello-stl\project\libs\armeabi\libhello-stl.so

    注: 这会将STLPort静态链接到你的库中.

    Building the hello-stl project

    在Eclipse中,使用New Project Wizard为每一个例子创建一新的Android project, 使用”Import from Existing Source” 选项从c:\android-ndk-1.5_r1\apps\hello-stl\project 导入源文件

    现在你可以编译和运行你的项目了. 将显示从共享库中返回来的std::string字符串 …!

    Popularity: 3% [?]

    Related

    SQLite出现database disk image is malformed(11)的处理

    SQLite有一个很严重的缺点就是不提供Repair命令。
    导致死亡提示database disk image is malformed
    它的产生有很多种可能,比如,磁盘空间不足,还有就是写入数据过程中突然掉电等。
    官方对产生原因的一些说明: http://www.sqlite.org/lockingv3.html#how_to_corrupt

    sqlite  my.sqlite3
    sqlite>PRAGMA integrity_check;
    

    获得提示

    *** in database main ***
    Page 1518: btreeInitPage() returns error code 11
    On tree page 1566 cell 2: Child page depth differs
    On tree page 1566 cell 3: Child page depth differs
    SQL error: database disk image is malformed
    

    可以尝试通过简单的导出导入方式对损坏的库文件作回复。
    首先导出数据

    sqlite3 my.sqlite3
    sqlite>.output tmp.sql
    sqlite>.dump
    sqlite>.quit
    

    再倒入到一个新库中

    sqlite3 mynew.sqlite3
    sqlite>.read tmp.sql
    sqlite>.quit
    

    这时新建的mynew.sqlite3一般可用。

    Popularity: 100% [?]

    Related

    symbian手机平台上的putty

    发现一个 Symbian 平台上的一个 ssh 客户端 putty for symbian。
    在PC上用习惯了小巧的 putty, 在 sourceforge.net 上闲逛,发现也有一个 putty for symbian OS ,这样以后在Nokia 智能手机上也能用 putty 来远程连接服务器做管理了。
    下载服务器上同时公布有源码下载,有兴趣的话可以下载研究一下。

    Popularity: 2% [?]

    Related

    给Symbian添加子菜单方法

    测试用Symbian程序的菜单越来越多,想通过子菜单方式将菜单的功能分组。
    研究了一下,发现在资源文件中可以做到,要使用MENU_ITEM的cascade属性。

    Popularity: 2% [?]

    Related

    WINCE不支持time函数?

    WinCE上不支持time.h中的常用的time函数,网上找了一小段代码为其补上。

    1. time_t time( time_t *inTT ) {
    2.  SYSTEMTIME sysTimeStruct;
    3.  FILETIME fTime;
    4.  ULARGE_INTEGER int64time;
    5.  time_t locTT = 0;
    6.  
    7.  if ( inTT == NULL ) {
    8.    inTT = &locTT;
    9.  }
    10.  
    11.  GetSystemTime( &sysTimeStruct );
    12.  if ( SystemTimeToFileTime( &sysTimeStruct, &fTime ) ) {
    13.    memcpy( &int64time, &fTime, sizeof( FILETIME ) );
    14.    /* Subtract the value for 1970-01-01 00:00 (UTC) */
    15.    int64time.QuadPart -= 0x19db1ded53e8000;
    16.    /* Convert to seconds. */
    17.    int64time.QuadPart /= 10000000;
    18.    *inTT = int64time.QuadPart;
    19.  }
    20.  
    21.  return *inTT;
    22. }

    更好的解决方案可以使用LuaCe中的实现(在luace.c文件中,和时间有关的几个函数实现都有)
    —–
    不过想不明白,这么基础的函数M$为什么不提供在SDK中。开发人员就一定是要用Systemtime函数?

    Popularity: 2% [?]

    Random Posts

    如何在VC调试器中显示Symbian字符串(译)

    在VC中编写Symbian程序,在调试状态下很不方便看Symbian的字符串内容,网络上搜到这么一篇,感觉不错,译载一下。
    原文标题: How to display Symbian strings and descriptors in Visual C++ debugger
    原文地址:http://www.newlc.com/How-to-display-Symbian-strings-and.html
    译文地址: http://www.sunnyu.com/?p=135
    本文由 sunny译于 2008.11.08 由于英文水平有限,译文难免有很多不足之处,欢迎指正。
    ————–译文开始—————-

    目前,在使用Visual Studio调试Symbian程序时,Symbian的字符串显示方式有点不好,不能直接显示他们的内容(你只能使用Memory窗口查看)。在这儿,我们介绍一个小的技巧,使你在调试时能够方便的显示Symbian中字符串的内容。

    我们是得益于Microsoft Visual Studio的”Auto Expand”特性做到这点的。这个特性允许我们指定调试器显示用户数据的方式。可以通过手工编辑AutoExp.dat文件来实现(文件默认在 C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin 目录下 )。

    使用你惯用的编辑器打开这个文件,然后 拷贝/粘贴 下面的内容到文件尾部。

    ;=======================================================
    ;
    ; Symbian Strings & Descriptors
    ;
    ;=======================================================
    TDes16=<,t> length=<iLength> max=<iMaxLength>
    TDesC16=<,t> length=<iLength>
    TPtr=length=<iLength> max=<iMaxLength> ptr=<iPtr+2,su>
    TPtr16=length=<iLength> max=<iMaxLength> ptr=<iPtr+2,su>
    TPtrC=length=<iLength> ptr=<iPtr,su>
    TPtrC16=length=<iLength> ptr=<iPtr,su>
    TBuf<*>=length=<iLength> max=<iMaxLength> buf=<iBuf,su>
    TBufC<*>=length=<iLength> buffer=<iBuf,su>
    HBufC16=length=<iLength> buffer=<iBuf,su>
    TLitC<*>=length=<iTypeLength> buf=<iBuf,su>

    TDes8=<,t> length=<iLength> max=<iMaxLength>
    TDesC8=<,t> length=<iLength>
    TPtr8=length=<iLength> max=<iMaxLength> ptr=<iPtr,s>
    TPtrC8=length=<iLength> ptr=<iPtr,s>
    TBuf8<*>=length=<iLength> max=<iMaxLength> buffer=<iBuf,s>
    TBufC8<*>=length=<iLength> buffer=<iBuf,s>
    HBufC8=length=<iLength> buffer=<iBuf,su>
    TLitC8<*>=length=<iTypeLength> buffer=<iBuf,s>

    TFileName= <iBuf,su>
    TFullName= <iBuf,su>

    重新运行IDE环境, 设置一两个断点, 开始调试方式运行程序, 你在断点可以看到….

    desc-display.png

    怎么样 ?

    ——

    以前都不知道M$的VS有这个特性,又学了一招。vs2005对应的文件在 C:\Program Files\Microsoft Visual Studio 8\Common7\Packages\Debugger 目录下

    Popularity: 2% [?]

    Related

    ← Previous PageNext Page →