一. 開發環境注意事項
用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 即可