Bluehost安装svn

环境:

Bluehost: 64位主机,可以通过 uname -a 命令查询,含有 x86_64 的就是64位系统了。
svn: 目前最新稳定版本1.6.15。

Bluehost用户目录下有个.local 目录,显然是为用户装自己的软件而提供的,那么以后我们要装的软件,都应该放在 $HOME/.local 目录下(来源:http://helpdesk.bluehost.com/index.php/kb/article/000530)。

整个过程如下:

mkdir ~/src
cd ~/src

wget http://subversion.tigris.org/downloads/subversion-1.6.15.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.gz

tar xvf subversion-deps-1.6.15.tar.gz
cd subversion-1.6.15
cd apr
./configure -prefix=$HOME/.local
make; make install

cd ..
cd apr-util/
./configure -prefix=$HOME/.local --with-apr=$HOME./local
make; make install

cd ..
cd neon/
./configure -enable-shared -prefix=$HOME/.local
make; make install
cd ..
rm subversion-1.6.15 -rf


tar xvf subversion-1.6.15.tar.gz 
cd subversion-1.6.15
wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
tar xvf sqlite-amalgamation-3.6.13.tar.gz 
mkdir sqlite-amalgamation
cp sqlite-3.6.13/sqlite3.c sqlite-amalgamation

./configure --prefix=$HOME/.local --without-berkeley-db --with-zlib=/usr/ --with-ssl LDFLAGS="-L/lib64"
make; make install 

后面报错:

cp .libs/mod_dav_svn.soT /usr/lib64/httpd/modules/mod_dav_svn.so
cp: cannot create regular file `/usr/lib64/httpd/modules/mod_dav_svn.so’: Read-only file system

没关系,我只是用来做svn client就行了。

最后,
vi ~/.bashrc
export PATH=$HOME/.local/bin:$PATH

Android SMS 写入UIM卡

Smart Phone跟Featrue Phone不一样,短信不会放在ICC卡上,毕竟卡的存储空间是有限的。最近一网友很纠结,老在问我如何把短信写到UIM卡上?有没有办法写个通用的程序?这个主要决定于手机厂家没有实现相应的接口函数。

Android 提供把短信写入ICC卡的接口为:

frameworks/base/telephony/java/android/telephony/SmsManager.java copyMessageToIcc

如果是CDMA的话,调用过程如下:
frameworks/base/telephony/java/com/android/internal/telephony/cdma/RuimSmsInterfaceManager.java 里的函数 copyMessageToIccEf 调用

frameworks/base/telephony/java/com/android/internal/telephony/RIL.java 里的 writeSmsToRuim ,这个要发出

一个 RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 请求号,RILD接收请求,传给 libril,再给 reference-ril,这样,只要在 reference-ril 里的
onRequest (int request, void *data, size_t datalen, RIL_Token t) 处理这个 RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 请求号即可,根据不同的模组,填入相应的AT处理函数。

像XT800,i909双网手机,在长按单条短信时,都弹出复制SMS至UIM卡选项。通过反编译Mms.apk包,可以看出他们都自己实现自己的接口,而没有实现Android默认的Api。xt800提供了一个content://sms/icc provider,大致是这样实现的:

String sSc = null;
Uri uSim = null;
ContentValues values = new ContentValues();
values.put("type", Integer.valueOf(mBody.mBoxId));
values.put("address", mBody.mAddress);
values.put("body", mBody);
values.put("data", Long.valueOf(mBody.mDateTime));
values.put("service_center", sSc);

if (MessageUtils.getDefaultMode().equals("CDMA")) {
    Log.("ComposeMessageActivity", "start copy msg to UIM");
    sSc = mContentResolver.insert(Uri.parse("content://sms/icc", values));
} else if (MessageUtils.getSecondaryMode().equals("CDMA")) {
    sSc = mContentResolver.insert(Uri.parse("content://sms/icc2", values));
}

Log.("ComposeMessageActivity", "finish copy msg to UIM");

i909的,自己实现
private void copyMessageToUIM(MessageItem msgItem), 调用SmsManager.MakeSubmitPDU, 也是自己的实现的。

程序员的气场

文章来源: 中华剑(小贱贱)的QQ空间

昨天和市领导还有软件公司一个老总去省委政法委开会,是省政法委关于综治信访维稳中心信息管理系统的征求意见会。到省委大院停车场下车时,看见前面有三个人也往1号楼方向走,其中两人身子有点瘦小,各背着个背包,走路时还有点弯着腰。于是老总说,估计这几个人也是去开会的,应该是搞软件的。待到我们到达会议室时,发现的确那三人就在会议室里,原来就是负责开发管理信息系统的软件公司的技术人员。后来跟老总交谈说他真猜对了,他说这就是程序员的气场 :( 。于是让我想起《我是业主》里的李大辉。 😀

Android CDMA 手机开发要点

Android从1.6版本开始支持CDMA,cdma-import分支由Teleca CDMA团队开发,最后合并到主干。浏览 http://android.git.kernel.org, 在heads可以查看cdma-import的代码变化,从ril层到上层的应用程序。

RIL

多了下面的请求号:

RIL_REQUEST_CDMA_SET_SUBSCRIPTION
RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE
RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE
RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE
RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE
RIL_REQUEST_CDMA_FLASH
RIL_REQUEST_CDMA_BURST_DTMF
RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY
RIL_REQUEST_CDMA_SEND_SMS
RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG
RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG
RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION
RIL_REQUEST_CDMA_SUBSCRIPTION
RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM
RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM

自动上报:

RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL
RIL_UNSOL_CDMA_CALL_WAITING
RIL_UNSOL_CDMA_OTA_PROVISION_STATUS
RIL_UNSOL_CDMA_INFO_REC
RIL_UNSOL_RESPONSE_CDMA_NEW_SMS

主要工作在 hardware/ril/reference-cdma-sms 实现cdma 短信的编解码,模组特殊AT处理。

Telephony Framework

在 telephony framework层,该启动 CDMAPhone 还是 GSMPhone ?

frameworks/base/telephony/java/com/android/internal/telephony/PhoneFactory.java 里的makeDefaultPhone函数:

//Get preferredNetworkMode from Settings.System
int networkMode = Settings.Secure.getInt(context.getContentResolver(),
        Settings.Secure.PREFERRED_NETWORK_MODE, preferredNetworkMode);

如果要设置成EvDo网络,则需要在init.rc配置文件里添加:
setprop ro.telephony.default_network 6
RILConstants.java有对应的值。

如果设置错了,怎么办?在类PhoneProxy中处理消息 EVENT_RADIO_TECHNOLOGY_CHANGE,进行纠正,选择是使用GSM还是CDMA,给PhoneApp发送一个Intent通知radio technology变化。

APP
应用不需要做太大的修改,其中设置应用添加与中国电信CDMA特性相关的,比如接入点名称:
中国电信互联星空设置 ctwap
中国电信互联网设置 ctnet

这些在国外手机是不需要分什么wap、net的,但中国电信CDMA的天翼视讯、天翼阅读仅支持ctwap接入。

关于 android RIL 调试

首先,要了解RIL是如何启动的,拿G1做个例子

init.rc:

service ril-daemon /system/bin/rild
    socket rild stream 660 root radio
    socket rild-debug stream 660 radio system
    user root
    group radio cache inet misc audio

/system/build.prop:

ro.ril.hsxpa=1
ro.ril.gprsclass=10
rild.libpath=/system/lib/libhtc_ril.so

阅读 /hardware/ril/rild/rild.c。

如果/system/bin/rild 启动有带参数,则解析参数,否则找系统变量 rild.libpath

也可以不按照G1的,一口气写完:
init.rc:
/system/bin/rild -l /system/lib/libreference-ril.so — -d /dev/ttyS0

/hardware/ril/rild/rild.c 里有一段注释: “special override when in the emulator”, 紧接着是 #if 1 … #endif 代码块。
它读取 /proc/cmdline,

# cat /proc/cmdline ,模拟器上的值
qemu=1 console=ttyS0 android.checkjni=1 android.qemud=ttyS1 android.ndns=2

找到与字符串“android.qemud“匹配的,则表示运行在模拟器上,会覆盖ril系统设置,连接为模拟器准备的 /dev/socket/qemud

所以,在开发生产版本,要把 #if 1 修改为 #if 0, 或者在编译kernel里把生成的 /proc/cmdline 配置去掉android.qemud。

要调试 RIL,最好的方法就是打开 radio的log:

$ adb logcat -b radio

最好加上 log语法亮度工具 coloredlogcat.py,一些常见的LOG TAG要明白,他们是:

RIL: /hardware/ril/reference-ril/refereince-ril.c
AT: /hardware/ril/reference-ril/atchannel.c
RILD: /hardware/ril/rild/rild.c
RILC: /hardware/ril/libril/ril.cpp
RILB frameworks/base/telephony/java/com/android/internal/telephony/BaseCommands.java
RILJ: /frameworks/base/telephony/java/com/android/internal/telephony/gsm/RIL.java
GSM: /frameworks/base/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java

如何在模拟器上外接 gsm modem?

请参考 http://i-miss-erin.blogspot.com/2009/09/android-emulator-external-gsm-modem.html

Pages: Prev 1 2 3 ... 11 12 13 14 15 16 17 18 19 20 21 Next