一. 开发环境注意事项
用elipse开发的时候,开始只要用eclipse导入就会编译不过,提示class R 重定义了,原因是因为elipse导入android工程后会自动生成R.java,所以只要删除gen文件夹就可以了,如:
gingerbread\packages\apps\InternetTv\下的gen文件夹
二. Google weather APK
详见http://www.eoeandroid.com/thread-42450-1-1.html
三. Tablelayout 布局
Java中定义位置:setGravity(Gravity.RIGHT/LEFT/ CENTER_HORIZONTAL….)
如下:
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
row.setGravity(Gravity.RIGHT);
xml中布局:android:paddingRight=”30px”,设置内容与右边距30px
如下:
<TableLayout
android:id="@+id/table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1,2,3,4"
android:paddingRight="30px"
>
</TableLayout>
五 .修改默认语言,国家,时区
如果你想把语言默认设置成韩语,请做这样的修改:
在device\rockchip\rk29sdk下修改rk29sdk.mk
PRODUCT_PROPERTY_OVERRIDES += \
dalvik.vm.heapsize=48m \
wifi.interface=wlan0 \
wifi.supplicant_scan_interval=15 \
persist.webview.minscale=0.5 \
persist.webview.maxscale=2 \
persist.webview.wml=disable \
product.version=rk29_gingerbread_v1.28_0701 \
EXTERNAL_STORAGE_STATE=removed \
persist.sys.timezone=Asia/Seoul \ // 设置时区 为汉城,默认为中国上海
//如果要在setting中的select timezone增加选项,请在setting 包下的xml的timezone.xml中增加。
persist.sys.language=ko \ // 设置语言
persist.sys.country=KR // 设置国家
请修改这个文件后,编译时请make clean之后,再make。
六 打开wifi
请先解压附件中的压缩包。
1.替换掉 KERNEL目录下的 drivers/net/wireless/rtl8192C/目录。在make menuconfig 中把WIFI驱动设置成 8192C,重新生成KERNEL.IMG
2.屏蔽掉 gingerbread\external\wpa_supplicant_6\wpa_supplicant\src\drivers\driver_wext.c文件中的 .combo_scan = wpa_driver_wext_combo_scan,
重新生成 SYSTEM.IMG文件。再重新烧录就可以支持 RTL8188。
七 修改频率
你们板子的死机和横条纹问题可能出在CPU供电电压过低问题或DDR3硬件走线不合格问题上。请按下面方法修改后测试下。
先
修改 /home/chenxiao/rk_pro/RK2918_R-BOX_SDK_V1.06_110817/itv-kernel-2-2-1/arch/arm/mach-rk29/cpufreq.c
static struct cpufreq_frequency_table default_freq_table[] = {
// { .index = 950000, .frequency = 204000 },
// { .index = 1050000, .frequency = 300000 },
{ .index = 1200000, .frequency = 408000 },
// { .index = 1125000, .frequency = 600000 },
// { .index = 1200000, .frequency = 816000 },
{ .index = 1350000, .frequency = 1008000 },
// { .index = 1250000, .frequency = 912000 },
// { .index = 1250000, .frequency = 1008000 },
// { .index = 1300000, .frequency = 1104000 },
// { .index = 1300000, .frequency = 1128000 },
// { .index = 1325000, .frequency = 1152000 },
// { .index = 1350000, .frequency = 1176000 },
// { .index = 1460000, .frequency = 1200000 },
{ .frequency = CPUFREQ_TABLE_END },
};
如果还是出现这样的情况可以在配置文件中把内存频率降低到406MHz
另外硬件上把R149改为1.5K
八.增加APK应用软件
1.Z:\RK2918_R-BOX_SDK_V1.06_110817\gingerbread\build\target\product目录下修改generic.mk文件,如增加GoogleWeather.apk,就如下:PRODUCT_PACKAGES := \
AccountAndSyncSettings \
DeskClock \
AlarmProvider \
Bluetooth \
Calculator \
Calendar \
Camera \
CertInstaller \
DrmProvider \
Email \
Gallery3D \
Mms \
Music \
Provision \
Protips \
QuickSearchBox \
Settings \
Sync \
SystemUI \
Updater \
Desktop2D_mbx \
VpadMonitor \
CalendarProvider \
FileBrowser \
GoogleWeather \
RockChipsSkypeTest \
CommWebSite \
SyncProvider
2.在Z:\RK2918_R-BOX_SDK_V1.06_110817\gingerbread\device\rockchip\sdkDemo\apk目录下增加相应的apk文件
九 预装APK注意事项
你好,对于您提到的预安装apk的问题,情况是这样的: 对于那种需要通过调用其他动态库.so的apk(通常的情况是通过jni调用C或者C++代码),预安装通常会出现问题,因为预安装apk时,您的工程中存放动态库的目录没有该apk需要的.so文件,因而一旦点击这些预安装的图标,就会出现装载so文件失败的情况,表现在UI上就是图标一闪而过,什么都不执行或者报错。与预安装不同,手动安装时,安装器会获取apk的信息,当该apk中存有.so的动态库时,会主动将so拷贝到存放动态库的目录。如果您想预安装这些需要装载动态库的apk时,必须手动将so拷贝出来,然后放到out\target\product\rk29sdk(sdkDemp)\system\lib下。
提取apk的.so的方法为:在串口中切换到apk的目录下,以skeype为例,敲入cd /data/data/com.rk.skype/,这儿com.rk.skype为包名,可以看到这个目录下有个lib文件夹,进入这个文件夹会发现libSkypeKitVideoDemo.so ,
这个就是RockchipsSkypeTest.apk在加载时需要用到的动态库。拷贝时,请参考以下命名:busybox cp libSkypeKitVideoDemo.so /flash/ ,这里是将libSkypeKitVideoDemo.so 拷贝到flash中,然后你就可以将libSkypeKitVideoDemo.so 放入到out\target\product\rk29sdk(sdkDemp)\system\lib了,然后再生成的固件就可以了,对于其他需要加载动态库的apk,也需要这样处理。
十.修改About R-Box选项中版本显示相关
Model number ,kernel Version, Build number的显示在
gingerbread\packages\apps\Settings\src\com\android\settings目录下的
DeviceInfoSettings.java文件中,如下地方修改:
setStringSummary("device_model", "123iTV");//Build.MODEL);//Jason wang
setStringSummary("build_number", PRODUCT_VERSION);//+"\n")+Build.DISPLAY);//Jason wang
及private String getFormattedKernelVersion()函数中可修改对应的版本信息,也可在相应的mk文件中改版本信息
十一。删除display,默认成hdmi,1080P 60Hz输出
因本来就是默认hdmi,1080p输出,所以只需在
gingerbread\packages\apps\Settings\res\xml目录下,把
display_settings.xml文件中的display布局删除即可
即删掉如下部分:
<!--Display interface and mode Settings
<PreferenceScreen
android:title="@string/display_output_settings"
android:summary="@string/display_output_settings_summary">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.rockchip.displayoutputsettings"
android:targetClass="com.rockchip.displayoutputsettings.DisplayOutputSettings" />
</PreferenceScreen-->
十二 不显示notifications下的“no service”
在gingerbread\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar目录下的CarrierLabel.java文件中,删掉如下红色部分
if (something) {
setText(str.toString());
} else {
//setText(com.android.internal.R.string.lockscreen_carrier_default);//Jason wang
}
十三 keypad map
在gingerbread\device\rockchip\sdkDemo\proprietary\internettv下有个qwerty.kl;
十四 修改动态图片anim
直接在drawable里替换图片,然后在res/anim 下调用对应图片
1. 如:<?xml version="1.0" encoding="utf-8"?>
2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
3. <alpha
4. android:fromAlpha="0.1"
5. android:toAlpha="1.0"
6. android:duration="3000"
7. />
8. <!-- 透明度控制动画效果 alpha
9. 浮点型值:
10. fromAlpha 属性为动画起始时透明度
11. toAlpha 属性为动画结束时透明度
12. 说明:
13. 0.0表示完全透明
14. 1.0表示完全不透明
15. 以上值取0.0-1.0之间的float数据类型的数字
16.
17. 长整型值:
18. duration 属性为动画持续时间
19. 说明:
20. 时间以毫秒为单位
十五 修改内存512显示补丁
在\itv-kernel-2-2-1\fs\proc下替换meminfo.c文件
十六 更新后的代码可修改scale
更新代码后,只要修改BoardConfig.mk 中定义的BOARD_DEFAULT_SCREEN_SCALE 即可