存档

文章标签 ‘android’

android4.4.2安装google plus的问题

2014年12月20日 没有评论

首先是要取的安装包apk文件,有了之后安装总失败,用

adb logcat *:error

看,发现系统报错:“Package com.google.android.apps.plus requires unavailable shared library com.google.android.maps”,于是自作聪明把google maps装上,结果还是不行,还是老错误。于是问了下google,发现其实要的不是google maps,而是……别的。
首先要下gapps包(http://goo.im/下找),然后把system/etc/permissions/com.google.android.maps.xml和system/framework/com.google.android.maps.jar放到系统的相应目录下,权限改成644即可

分类: tips 标签: , ,

term-init.sh:使得android4.1.2的linux支持init.d

2013年9月14日 没有评论

  手头有一个三星的sch-i879(cdma2000+gsm双卡双待)手机。官方的ROM(4.1.2)有一堆的不如意,尽管已经root了,而且也干掉了一大堆的无用的被植入的应用,而且还把google的支持加进去了,但还是有一个非常大的硬伤:android 4.1.2的virtual SD card,这是一种虚拟的sdcard技术,实际上是用/data/media目录做了个fuse文件系统,然后挂载成/storage/sdcard0,也就是/sdcard的真实路径。这个技术在系统没有插入tf卡的时候是比较好用的,因为好多应用都必须有sdcard才能跑起来,但对于我插的有32G class10的tf卡来说,这个功能就相当鸡肋了。
  原因有二:
1,本身机器就内存(指ROM)不够,sd卡还从用户分区(/data)里刨去一块儿,用户可用内存(ROM)更小了。
2,机器内存(ROM)小,用户分区小就导致了这种方式下的/sdcard空间不可能很大的,这样就导致了像地图导航软件、词典软件等等需要把大量数据放到/sdcard上的应用来讲是不可接受的
解决方案:
  大家用过Linux的知道,在/etc/init.d目录下可以放好些脚本,用来在启动机器时做一些定制的工作。android也是linux,故而也应该能支持,但目前现状就是很多官方ROM都没打开这个支持,不幸的是我的i879也在其列。于是我就在网上找,终于在xda上找到一个脚本:term-init.sh,可以用来使android4.1.2支持init.d。

附上脚本内容:

#!/system/bin/sh
#Script to enable init.d by Ryuinferno @ XDA
 
error_msg(){
echo "You do not need this mod..."
sleep 1
echo "If you are reapplying, please delete these files if present:"
echo "/system/bin/sysinit"
sleep 1
echo "/system/etc/install-recovery.sh"
sleep 1
echo "/system/etc/install-recovery-2.sh"
sleep 1
echo "And run again..."
sleep 1
echo "If init.d is still not working, read the FAQ part in my thread..."
sleep 1
echo "Aborting..."
mount -o remount,ro -t auto /system
echo ""
echo "Ryuinferno @ XDA"
exit 1
}
 
echo "Init.d Enabler by Ryuinferno @ XDA"
echo ""
sleep 1
 
id=`id`; 
id=`echo ${id#*=}`; 
id=`echo ${id%%\(*}`; 
id=`echo ${id%% *}`
if [ "$id" != "0" ] && [ "$id" != "root" ]; then
	echo "Script NOT running as root!"
	sleep 1
	echo "Superuser access not granted!"
	sleep 1
	echo "Please type 'su' first before running this script..."
	exit 1
else
	echo "Hello Supaa User! :P"
	echo ""
	sleep 1
fi
 
if [ ! "'which busybox'" ]; then
	echo "busybox NOT INSTALLED!"
	sleep 1
	echo "Please install busybox first!"
	exit 1
else
	echo "busybox found!"
	sleep 1
fi
 
bbb=0
 
if [ ! "`which grep`" ]; then 
	bbb=1
	echo "grep applet NOT FOUND!"
	sleep 1
	else 
	echo "Awesome! grep found! :D"
	sleep 1
fi
 
if [ ! "`which run-parts`" ]; then 
	bbb=1
	echo "run-parts applet NOT FOUND!"
	sleep 1
	else
	echo "Good! run-parts found! :)"
	echo ""
	sleep 1
fi
 
if [ $bbb -eq 1 ] ; then
	echo ""
	echo "Required applets are NOT FOUND!"
	echo ""
	sleep 1
	echo "Please reinstall busybox!"
	exit 1
fi
 
echo "Great! Let's proceed..."
echo ""
sleep 1
echo "Press enter to continue..."
read enterKey
 
clear
sleep 1
echo "Mounting system as rewritable..."
mount -o remount,rw -t auto /system
 
sleep 1
echo ""
echo "Checking for the presence of sysinit in /system/bin..."
sleep 1
if [ -e /system/bin/sysinit ]; then
	echo "sysinit found..."
	if [ -z "`cat /system/bin/sysinit | grep "init.d"`" ]; then
		echo "Adding lines to sysinit..."
		echo "" >> /system/bin/sysinit
		echo "# init.d support" >> /system/bin/sysinit
		echo "" >> /system/bin/sysinit
		echo "export PATH=/sbin:/system/sbin:/system/bin:/system/xbin" >> /system/bin/sysinit
		echo "run-parts /system/etc/init.d" >> /system/bin/sysinit 
		echo "" >> /system/bin/sysinit
	else
		echo ""
		echo "Your sysinit should already be running the scripts in init.d folder at boot..."
		error_msg
	fi
else
	echo "sysinit not found, creating file..."
	echo "#!/system/bin/sh" > /system/bin/sysinit
	echo "# init.d support" >> /system/bin/sysinit
	echo "" >> /system/bin/sysinit
	echo "export PATH=/sbin:/system/sbin:/system/bin:/system/xbin" >> /system/bin/sysinit
	echo "run-parts /system/etc/init.d" >> /system/bin/sysinit 
	echo "" >> /system/bin/sysinit
fi
 
sleep 1
echo "Setting correct permissions and ownership for sysinit..."
chmod 755 /system/bin/sysinit
chown 0.2000 /system/bin/sysinit
 
sleep 1
echo ""
echo "Checking for the presence of install-recovery.sh..."
sleep 1
if [ -f /system/etc/install-recovery.sh ] && [ -z "`cat /system/etc/install-recovery.sh | grep "daemon"`" ]; then
	if [ ! -z "`cat /system/etc/install-recovery.sh | grep "init.d"`" ];then
		echo "Your install-recovery.sh seems to be already modified for init.d..."
		error_msg
	fi
	echo "install-recovery.sh found, renaming it as install-recovery-2.sh..."
	mv /system/etc/install-recovery.sh /system/etc/install-recovery-2.sh
	echo "Recreating install-recovery.sh..."
	echo "#!/system/bin/sh" > /system/etc/install-recovery.sh
	echo "# init.d support" >> /system/etc/install-recovery.sh
	echo "" >> /system/etc/install-recovery.sh
	echo "/system/bin/sysinit" >> /system/etc/install-recovery.sh
	echo "" >> /system/etc/install-recovery.sh
	echo "# excecuting extra commands" >> /system/etc/install-recovery.sh
	echo "/system/etc/install-recovery-2.sh" >> /system/etc/install-recovery.sh
	echo "" >> /system/etc/install-recovery.sh
elif [ -f /system/etc/install-recovery.sh ] && [ ! -z "`cat /system/etc/install-recovery.sh | grep "daemon"`" ]; then
	if [ -f /system/etc/install-recovery-2.sh ] && [ ! -z "`cat /system/etc/install-recovery-2.sh | grep "init.d"`" ];then
		echo "Your install-recovery-2.sh seems to be already modified for init.d..."
		error_msg
	fi
	echo "install-recovery.sh is used for superuser, using install-recovery-2.sh instead..."
	if [ -f /system/etc/install-recovery-2.sh ]; then
		echo "" >> /system/etc/install-recovery-2.sh
		echo "# init.d support" >> /system/etc/install-recovery-2.sh
		echo "/system/bin/sysinit" >> /system/etc/install-recovery-2.sh
		echo "" >> /system/etc/install-recovery-2.sh
	else
		echo "#!/system/bin/sh" > /system/etc/install-recovery-2.sh
		echo "# init.d support" >> /system/etc/install-recovery-2.sh
		echo "" >> /system/etc/install-recovery-2.sh
		echo "/system/bin/sysinit" >> /system/etc/install-recovery-2.sh
		echo "" >> /system/etc/install-recovery-2.sh
	fi
	if [ -z "`cat /system/etc/install-recovery.sh | grep "install-recovery-2.sh"`" ]; then
		echo "" >> /system/etc/install-recovery.sh
		echo "# extra commands" >> /system/etc/install-recovery.sh
		echo "/system/etc/install-recovery-2.sh" >> /system/etc/install-recovery.sh
		echo "" >> /system/etc/install-recovery.sh
	fi
else
	echo "install-recovery.sh not found, creating it..."
	echo "#!/system/bin/sh" > /system/etc/install-recovery.sh
	echo "# init.d support" >> /system/etc/install-recovery.sh
	echo "" >> /system/etc/install-recovery.sh
	echo "/system/bin/sysinit" >> /system/etc/install-recovery.sh
	echo "" >> /system/etc/install-recovery.sh
fi
 
sleep 1
echo "Setting the correct permissions and ownership for install-recovery.sh..."
echo "Also for install-recovery-2.sh if it exists..."
chmod 755 /system/etc/install-recovery.sh
chown 0.0 /system/etc/install-recovery.sh
if [ -f /system/etc/install-recovery-2.sh ]; then
	chmod 755 /system/etc/install-recovery-2.sh
	chown 0.0 /system/etc/install-recovery-2.sh
fi
 
sleep 1
echo ""
echo "Checking for the presence of the init.d folder..."
sleep 1
if [ -d /system/etc/init.d ]; then
	echo "init.d folder found..."
else 
	echo "init.d folder not found, creating the folder..."
	mkdir /system/etc/init.d
fi
 
sleep 1
echo ""
echo "Creating basic init.d scripts..."
echo "#!/system/bin/sh" > /system/etc/init.d/08setperm
echo "#set correct permissions to /system/etc/init.d folder" >> /system/etc/init.d/08setperm
echo "" >> /system/etc/init.d/08setperm
echo "mount -o remount,rw -t auto /system" >> /system/etc/init.d/08setperm
echo "chmod -R 777 /system/etc/init.d" >> /system/etc/init.d/08setperm
echo "mount -o remount,ro -t auto /system" >> /system/etc/init.d/08setperm
echo "" >> /system/etc/init.d/08setperm
 
echo "#!/system/bin/sh" > /system/etc/init.d/00test
echo "#init.d test" >> /system/etc/init.d/00test
echo "" >> /system/etc/init.d/00test
echo "if [ -f /data/Test.log ]; then" >> /system/etc/init.d/00test
echo "rm /data/Test.log" >> /system/etc/init.d/00test
echo "fi" >> /system/etc/init.d/00test
echo "" >> /system/etc/init.d/00test
echo 'echo "Init.d is working !!!" >> /data/Test.log' >> /system/etc/init.d/00test
echo 'echo "excecuted on $(date +"%d-%m-%Y %r" )" >> /data/Test.log' >> /system/etc/init.d/00test
echo "" >> /system/etc/init.d/00test
 
sleep 1
echo "Setting correct permissions and ownership for init.d folder and scipts..."
chmod 777 /system/etc/init.d
chmod 777 /system/etc/init.d/08setperm
chmod 777 /system/etc/init.d/00test
chown 0.0 /system/etc/init.d
chown 0.0 /system/etc/init.d/08setperm
chown 0.0 /system/etc/init.d/00test
 
sleep 1
echo ""
echo "Mounting system as read-only..."
mount -o remount,ro -t auto /system
sleep 1
echo ""
echo "Done!!!"
sleep 1
echo "Please reboot at least twice before checking /data..."
sleep 1
echo "If init.d is working, you will see a Test.log in /data..."
sleep 1
echo ""
echo "Enjoy!!! =)"
echo "Ryuinferno @ XDA 2013"
exit

使用方法:
1,将手机root(越狱);
2,安装busybox(支持run-parts)、终端模拟器;
3,将脚本拷贝到/sdcard上,并赋予执行权限;
4,在终端模拟器上su成root,然后再执行这个脚本,按照提示执行即可;
5,重启后发现/data下有个文件叫Test.log,即成功!

后续工作:
  系统支持init.d之后呢?我们这么干是为了什么呢?呵呵,我想是在init.d目录下写个脚本,将/storage/sdcard0和/storage/extSdcard用bind方式挂载到一起,在这之前先删掉/data/media/目录下的东西,这样以来就算是脏脏的解决了现有的问题了。顺手贴上我的脚本(/etc/init.d/extsd2inter):

#!/system/bin/sh
#extsd2inter is a modification that allows to switch internal sd to ex
 
if cat /proc/mounts | grep -q "/storage/sdcard0"; then
	if lsof | grep -q "/storage/sdcard0"; then
		fuser -km /storage/sdcard0
	fi
	umount /storage/sdcard0
	if cat /proc/mounts | grep -q "/storage/sdcard0"; then
		# umount failed
	else
		# umount success
	fi
fi
until cat /proc/mounts | grep -q "/storage/extSdCard"; do
	sleep 1
done
if cat /proc/mounts | grep -q "/storage/sdcard0"; then
	if lsof | grep -q "/storage/sdcard0"; then
		fuser -km /storage/sdcard0
	fi
	umount /storage/sdcard0
fi
mount -o bind /storage/extSdCard/ /storage/sdcard0

国行i9220刷成港版的ics(4.0.3)了

2012年6月8日 没有评论

  我的samsung galaxy note(国行,GT-i9220),由于是国行,被阉割了google的所有东西,google的其他都好说,可以单装,唯一不痛快的是,如果不越狱(root)的话,是没法直接在google play(google新的菜市场)上下载、安装东西。我又不想越狱,那么就只有逃离国行的版本了。
  正巧,港版的ics(4.0.3)早就正式出了,于是我就从samsung-updates.com上下了这个rom,为了刷机,我还在mbp上装了个virtualbox来跑windows xp,终于环境一切都搞好了,开始刷机。国行刷港行的rom,还需要摸黑操作,直接刷是成功不了的。
  总之,当一切的一切都过去,刷机完成之后,看到google play真是亲切呀。

tracks for android的小问题

2011年10月25日 没有评论

在服务器上布了个tracks,并在HTC desire HD上装上了tracks for android,发现有个问题,在手机上编的action,如果有中文的话,同步到服务器上后再同步回来,到手机上就变成了乱码。先挖个坑,以后看有没有办法解决。

分类: TroubleShooting 标签: , ,

大坏蛋(htc desire hd)的gps问题

2011年2月12日 没有评论

春节前入手了传说中的神机:HTC Desire HD,江湖人称“大坏蛋
各方面感觉都挺满意的,尤其是电池,虽然有心理准备说电池可能会不经用,于是为此还专门加钱买了一个组电和一个座充,但实际感觉电池还行,特别是像我这样的,一天一冲够了。但是组电有个小小的问题,就是当我换上充好的组电时,非得重启好几次机器才能认出组电的电量,否则,机器还是认为没有电池,直接关机。这是另外的一个小问题,暂且不提。
我这里主要讲下gps的问题,我的现象是这样的,就是搜星巨慢,网上改设置的部分都尝试过了,还是不行,站在室外,等10分钟搜不着星是常事儿,但我也还真搜着过星,否则我就去找js了。那是阳光明媚的晴天,我把大坏蛋背部贴着阳台的玻璃,能搜着星,最多7颗。网上搜一下,发现也有搜星巨快的,而且我也用过adp1,也就是G1,搜星也没这么夸张过,所以我怀疑是这台机器的gps信号有问题,感觉应该是个体现象,所以提醒大家,买机器的时候一定要试gps搜星,不要怕麻烦(的确挺麻烦的,因为js柜台都在室内,而且好多还在地下室!)。

分类: google, Misc 标签: , , ,

在android下作弊玩儿机器人塔防(robo defense)

2010年12月25日 1 条评论

  在我的adp1(G1,Dream)上,机器人塔防(robo defense)这个游戏玩儿了有点时间了,从破解版到free版,最后又到破解版。每次攒点积分去升级性能,总觉得太慢,尤其是某一次当我重新刷机后重装这个游戏后发现我的游戏级别已经是好几十级了,但是一些性能级别却都刚入门的时候,我就有点耐心不够了,总想找点歪点子把性能升上去。
  知道robo defense会在sd卡上保留一个进度文件,具体在sd卡的根目录下,叫robo_defense_full.bak,于是我拽下来一看,原来是”Java serialization data, version 5″,google了一下,发现这个文件的编辑不太好搞,需要写点java程序,而且,就算是这个文件编辑修改成功,要程序重新读入这个文件,貌似需要把fobo defense卸载再重新安装,这太复杂了,这条路也算是断了。
  后来终于让我发现了,有更好的办法。

/data/data/com.magicwach.rdefense/shared_prefs/AndroidDefense.xml

对,就是AndroidDefense.xml这个文件。于是开始操作:
用命令
adb pull /data/data/com.magicwach.rdefense/shared_prefs/AndroidDefense.xml .
把文件AndroidDefense.xml抓回来,然后再开一个文本编辑器(如UltraEdit、EditPlus等)将其打开,修改

<int name=”ADRewardPoints” value=

这一行,在value=””的引号里,写入你想要的积分(reward),就像这样:

<int name=”ADRewardPoints” value=”99999999″ />

这里需要注意的是,这里自己填的值是否不能大于文件里前面描述的ADAchievement:Huge Score的值,这个不得而知,没测试过,为了保险起见,我填写了一个和ADAchievement:Huge Score里一样大的值。
  修改完毕,用命令adb push AndroidDefense.xml /data/data/com.magicwach.rdefense/shared_prefs/AndroidDefense.xml把文件AndroidDefense.xml放回原处。
  最后再打开robo defense,resume游戏,发现积分已经是你自己写的那个数目了。这就行了,有这么多积分,想干啥就干啥,统统的upgrade,呵呵。

精简cyanogenmod 6.1.0 rc1的rom中自带的软件

2010年10月20日 没有评论

用usb线连上我的adp1(cyanogenmod 6.1.0 rc1的rom)

开个dos窗口

输入命令:

adb root

adb shell

mount -o remount,rw /system

cd /system/app

rm Email.apk YouTube.apk CMStats.apk FileManager.apk Protips.apk RomManager.apk

reboot

为什么要删除这些软件呢?

1,有些不需要的软件,如Protips.apk,这是主屏幕提示的一个小工具,没啥用;CMStats.apk,这是cyanogenmod收集报告的软件,也没啥用;

2,可能会用的着。这种也从系统自带的里面删掉,需要的话重新再从菜市场(market)中安装即可,这样的话还能及时从菜市场升级,而且不想要的时候可以非常方便的卸载。这种像Email.apk、YouTube.apk、FileManager.apk和RomManager.apk这些

分类: tips 标签: , ,

android菜市场上的财务记账软件

2010年9月4日 没有评论

我需要这么个东西
最早是wm下的listpro来记账
后来在google的在线文档上自己搞了个表格模板
用来记账
再后来,google的服务在国内访问不时的有问题
尤其是文档站点和表格站点
所以最近我还是想找一款好用一点的软件来做记账
当时考虑几点最基本要求:

1,能方便的导入导出数据;
2,能跟web站点同步(毕竟web上维护数据更容易些,而且报表也更容易做的漂亮些)
3,没有了

。。。。。。:)
考察了android的菜市场上的几种记账软件
随手记,这是金蝶出的
优点是ui很不错,而且大公司出的,貌似更容易得到信任
而且支持跟web同步
缺点是:
软件包太大,3.52M,不知道里面都有些什么东西
跟web同步功能的账号需要花钱购买
数据(在客户端)不能导入导出
还有个著名的supermoney(超级理财)
这个ui也不错
缺点就是不能跟web站点同步
还有种叫挖财365
这个貌似中规中矩
可是缺点就是ui方面感觉差点
还有种号称国外用的很多的easymoney
感觉也许功能很强
但的确不是很好用
没有web同步;
分类太多了,而且没有子分类

Cyanogen Mod 6.0 rc1的rom的一些问题

2010年7月18日 没有评论

这个Cyanogen mod 6.0 rc1 for Dream的ROM用过几天后
发现还是有些问题的
感觉问题主要应该出在新的app2sd上
在5.x的版本时,app2sd是把一些东西挪到存储卡的linux分区上
但6.0rc1的版本却是挪到存储卡的fat32的某个目录下

我先说问题吧
第一次出问题是当我发现自带的Message程序能够看彩信
只是不是那么完美
而且handsms有带广告
所以我打算卸载掉装在内存卡上的handsms的时候
貌似卸载完毕后系统挂了,然后自动重启了
这下重启后
就出问题了
首先是发现应用程序里n多程序都有一模一样的2个logo
于是又手工重启
等好一会儿貌似sd卡都挂上了
都显示比较正常了
发现live wallpaper没了
退回到原来的壁纸了
而且widget里所有安装在sd卡上的widget都不能工作了

第二次发生sd卡的错误是当我把手机通过usb线连上pc的时候
我点手机上的挂载
想在pc上操作手机sd卡上fat32区的东西的时候
系统又崩了,然后又自动重启了
这回的问题显示跟上回的一样
所以我才还是app2sd的问题

分类: google 标签: , , , , ,

推荐android 2.2(Froyo) for G1的rom:Cyanogen Mod 6.0 rc1

2010年7月14日 没有评论

最近
将我的adp1(也就是HTC Dream,或者说是G1)升级到了android 2.2(Froyo)
用的还是Cyanogen Mod的ROM
android 2.2的版本他们也是发布不久
版本号是6.0.0-DS-RC1,6月11号发布的
安装过程很简单
因为我以前刷过Cyanogen Mod的5.0.8的版本(android 2.1)
也安装过Amon_RA’s recovery image的最新版:1.7.0
DangerSPL也装了
所以很简单
重启机器(启动时按住Home键)到Recovery Mode
本来要求是先做下Nandroid backup的
但我没什么可备份的(有用的东西都已经备份了)
于是直接wipe(把wipe下面的选项都做了一遍)
最后再用[Alt+F] Flash zip from sdcard安装这个新ROM和google addon的包
装完后,再重启
OK了

这个rom感觉用起来比5.0.8(android 2.1)的要好很多
一个是速度快
再个是以前5.0.8上的bug都没有了
我用机器人塔防一点问题没有
而且也不会自动跳出
而且耗电好像也省了些

最赞的应该是支持live wallpaper了

不过有个问题
就是6.0.0的这个rom不再支持以前5.0.8的那种app2sd
以前是在卡上分一块linux分区(ext2或ext3或ext4)
mount到系统的/sd-ext/目录下
放一部分app到这个目录下实现app2sd的
而在6.0.0(android2.2)里
直接就支持了选择应用程序装在内存里还是装在存储卡里
而且还支持把应用程序在内存和存储卡中迁移
不过他是在卡的fat32分区里弄一块来放应用程序的

最后
再贴下这两个包的下载地址吧
CyanogenMod-6 for D/S: 6.0.0-DS-RC1 – 06/11/2010
MD5Sum: ed6577234c6d3f1877019c58ac33882b

Google Addon: FRF91-MDPI-3