android JB版本如何更新时区data文件

在android JB版本中,system/usr/share/zoneinfo目录下zoneinfo相关的3只文件是用来保存各个国家和地区城市的时区信息的数据文件。由于各国的时区信息是会变化的,例如2014年6月13日,俄罗斯宣布从2014年10月26日之后全国时区推后一小时,比如莫斯科之前是GMT+4,修改后是GMT+3,但是android中的该文件不会自动更新,所以测试过程中会遇到手机的时区信息显示不正确。这种情况下,就需要更新手机的时区信息文件。

1.  到网站ftp://ftp.iana.org/tz/releases/下载时区的tzdata*.tar.gz文件,由于JB版本使用的data和现在KK的不同,要下载2013年的版本

例如tzdata2013a.tar.gz

2.解压修改tzdata2013a.tar.gz相关时区文件,再次打包为tzdata2013a.tar.gz,具体如何修改可以参考FAQ04310 如何修改时区data文件

3. 把修改后tzdata2013a.tar.gz拷贝到路径\bionic\libc\tools\zoneinfo下

4.  修改generate脚本文件,使用如下内容替换:

\bionic\libc\tools\zoneinfo\generate 文件内容:

#!/bin/bash

# Run with no arguments from any directory, with no special setup required.

# Abort if any command returns an error exit status, or if an undefined

# variable is used.

set -e

set -u

echo "Looking for bionic..."

bionic_dir=$(cd $(dirname $0)/../../.. && pwd)

bionic_zoneinfo_dir=$bionic_dir/libc/zoneinfo

bionic_zoneinfo_tools_dir=$bionic_dir/libc/tools/zoneinfo

if [[ ! -d "$bionic_zoneinfo_dir"

|| ! -d "$bionic_zoneinfo_tools_dir" ]];

then

echo "Can‘t find bionic‘s zoneinfo directories!"

exit 1

fi

echo "Switching to temporary directory..."

temp_dir=`mktemp -d`

cd $temp_dir

trap "rm -rf $temp_dir; exit" INT TERM EXIT

# URL from "Sources for Time Zone and Daylight Saving Time Data"

# http://www.twinsun.com/tz/tz-link.htm

echo "Looking for new tzdata..."

#wget -N --no-verbose ‘ftp://munnari.oz.au/pub/tzdata*.tar.gz‘

cp $bionic_zoneinfo_tools_dir/tzdata*.tar.gz $temp_dir/

zoneinfo_version_file=$bionic_zoneinfo_dir/zoneinfo.version

if [ -f "$zoneinfo_version_file" ]; then

current_version=tzdata`sed s/\n// < $zoneinfo_version_file`

else

current_version=missing

fi

latest_archive=`ls -r -v tzdata*.tar.gz | head -n1`

latest_version=`basename $latest_archive .tar.gz`

if [ "$current_version" == "$latest_version" ]; then

echo "You already have the latest tzdata ($latest_version)!"

exit 1

fi

md5_sum=`md5sum $latest_archive`

echo "MD5: $md5_sum"

echo "Extracting $latest_version..."

mkdir $latest_version

tar -C $latest_version -zxf $latest_archive

echo "Compiling $latest_version..."

mkdir data

for i in \

africa \

antarctica \

asia \

australasia \

etcetera \

europe \

factory \

northamerica \

solar87 \

solar88 \

solar89 \

southamerica

do

zic -d data $latest_version/$i

done

echo "Compacting $latest_version..."

(

cat $latest_version/* | grep ‘^Link‘ | awk ‘{print $1, $2, $3}‘

(

cat $latest_version/* | grep ‘^Zone‘ | awk ‘{print $2}‘

cat $latest_version/* | grep ‘^Link‘ | awk ‘{print $3}‘

) | LC_ALL="C" sort

) | grep -v Riyadh8 > setup

javac -d . \

$bionic_zoneinfo_tools_dir/ZoneCompactor.java \

$bionic_zoneinfo_tools_dir/ZoneInfo.java

java ZoneCompactor setup data

echo "Updating bionic to $latest_version..."

mv zoneinfo.dat zoneinfo.idx $bionic_zoneinfo_dir

echo $latest_version | sed ‘s/tzdata//‘ > $bionic_zoneinfo_dir/zoneinfo.version

5.    执行修改完的generate脚本(./generate),执行成功后命令行信息

6.  脚本执行成功后,路径bionic/libc/zoneinfo下会更新zoneinfo.dat zoneinfo.idx和zoneinfo.version三只文件,查看这三只文件的修改时间,应该是最新的时间。

7.将这三只文件push到手机system/usr/share/zoneinfo下测试或者重新build整个工程.

时间: 2024-10-05 12:02:14

android JB版本如何更新时区data文件的相关文章

Android ADT,SDK 更新后一个问题:新建项目layout和src文件夹为空

Android SDK和ADT更新到23.0.0后,结果问题出现了,在创建一个默认的blank activity后,发现layout和src文件夹为空,没有默认的框架文件,原来以为是安装出问题,删除重装,还是没有办法解决.今天发现两个文件又有更新包了,不知道是不是Android SDK的23.0.0版本和ADT的23.0.0版本本身导致的问题,不过更新到23.0.1后解决问题了. 解决方案: 步骤一:启动SDK Manager,按照提示把Android SDK tools更新至最新版本23.0.

Android 最新L版本,更新内容

Android L版本重大修改 一:New Android Runtime (ART) 新的运行环境,4.4一下的版本ART是可选的运行环境,默认还是Dalvik.但是在Android L版本之后默认环境就是ART了. 新的特性如下: 1.Ahead-of-Time (AOT).提前预编译,在运行时之前将代码编译成可执行的文件,并保存起来. 2.改进了垃圾回收功能. 3.改进了bug调试功能. 大多数应用不需要更改便可以运行在ART环境下,但是一下的情况你需要注意一下: 1.使用了Java Na

Android真机连接Eclipse时,打不开File Explorer下的data文件夹解决方法

    当用真机开发Android时,连接了Eclipse后,默认在File Explorer下是达不开我们手机的data文件夹的,这里打不开是因为权限不足.以下有个小技巧可以解决这问题. 首先,测试机先root,然后在手机上安装上R.E 管理器(或类似软件),再将/data/data及其子文件夹下的访问权限都修改为可读可写可执行即可.这时候再使用eclipse的File Explorer就可以展开了,这时候就可以查看应用下的SQLite数据库了.

Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3881477.html 联系方式:[email protected] [正文] Android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹,问题在于data文件夹没有权限,用360手机助手或豌豆荚也是看不见的. 有以下两种解决方法: 方法一:使用adb

Android与Asp.Net Web服务器的文件上传下载BUG汇总【更新】

遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是:(1)文件名称中含有不符合规范的字符,比如“:”,“?”或者空格等.(2)需要先创建文件夹目录再创建文件,不能直接创建文件. 2. android.os.NetworkOnMainThreadException异常,从服务器请求数据后,写入文件时报错 出错原因:在主线程内执行了访问http的操作,最

Android studio关于真机调试DDMS中的data文件夹打不开的解决方法

由于做开发的时候想打开查看数据库存放的内容,在eclipse中数据库文件默认就在/data/data/应用包名/databases/数据库名,而用Android studio打开DDMS下面找时发现点击data下拉按钮没有任何反应(如下图所示)后来找了很久才发现是权限问题,需要修改文件的权限: 上面是未修改过的,可以看到data文件夹的读写权限只对用户组内的用户开放,对其他用户不开放,所以我们只需要把读写权限赋予其他用户即可,具体步骤如下所示: 1.进入Android SDK安装目录,找到pla

mysql 5.7版本目录无data文件夹的解决办法

安装mysql 5.7+版本时,若发现因根目录下,缺少data文件夹的情况, ***请不要去拷贝其他版本的data文件夹!*** 因为此操作会出现很多潜在问题:比如我遇到的执行show variables like "%charact%"; 语句时,报错表不存在! 打开cmd命令窗口,并且进入到mysql安装目录的bin目录下.然后输入命令: mysqld --initialize-insecure --user=mysql 然后回车:去目录下查看,已经自动创建好data文件夹. 问题

android基础知识13:AndroidManifest.xml文件解析

1.重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

Android App内检测更新新版本APK

Rayland主板虽然作为一块基于Android的工控板,但是很多设备厂商并不想让用户看到Android系统信息.所以APK默认设置为开机启动项.img去除了Android头部和底部菜单.但是随之带来了APK更新的问题,传统的插入u盘,sd卡手动安装新版本APK的方式已经不够用了.所以我们需要点自动的东西. App内检测更新新版本APK 检测新版本APK 我们使用 四大组件之一的BroadcastReceiver来检测 sd卡或是u盘设备的接入. public class StorageMoun