您的位置:首页 > 移动开发 > Android开发

android开发经验和开发环境注意事项

2013-09-29 16:09 567 查看
一. 开发环境注意事项

用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 即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: