android eng 模式,android 4.0 编译模式 eng - user 时遇到的有关问题
android 4.0 編譯模式 eng -- > user 時遇到的問題
關鍵詞:android ?4.0 ?user ?eng ?camera ?nand ?串口
平臺信息:
內核:linux3.0
系統:android4.0.3
平臺:S5PV310(samsung exynos 4210)
問題描述:android4.0編譯模式由eng變成user后出現如下問題:
1、設置中wifi開關選項沒有了(打開、關閉選項);
2、不能安裝應用程序apk;
3、camera提示插入sd卡(實際sd卡、nand正常掛載);
4、串口終端有信息輸出,但是不能操作(只能看到內核輸出信息,敲鍵盤沒反應)。
一、更改編譯腳本build_android.sh
找到下面腳本,改為user模式:
eng模式為:
echo make -j$CPU_JOB_NUM PRODUCT-full_$SEC_PRODUCT-eng
echo
make -j$CPU_JOB_NUM PRODUCT-full_$SEC_PRODUCT-eng
user模式為:
echo make -j$CPU_JOB_NUM PRODUCT-full_$SEC_PRODUCT-user
echo
make -j$CPU_JOB_NUM PRODUCT-full_$SEC_PRODUCT-user
二、問題分析、解決
1、對2、3兩個問題分析
不能安裝應用程序apk; camera提示插入sd卡(實際sd卡、nand正常掛載);
感覺是nand、sd卡的權限不,查看權限:
shell@android:/mnt $ la -la
drwxr-xr-x root system 2000-01-01 14:38 asec
drwxr-xr-x root system 2000-01-01 14:38 obb
d---rwxr-x system sdcard_rw 1970-01-01 00:00 sdcard //sd卡權限
d---rwxr-x system sdcard_rw 1970-01-01 00:00 sdcard2//nand權限
drwx------ root root 2000-01-01 14:38 secure
d--------- system system 2000-01-01 14:38 usb
2、對比編譯生成的system,發現問題
發現有system/etc/permissions在兩種模式下有所不同,編譯成user時4.0.3_r1/out/target/product/smdkv310/system/etc/permissions/少了一些xml文件,
如:android.hardware.camera.xml、android.hardware.wifi.xml、platform.xml等
我們知道out目錄下生成的文件,是在其它地方copy過來的,找到這些xml文件在源頭在:4.0.3_r1/frameworks/base/data/etc中,查看4.0.3_r1/frameworks/base/data/etc/ndrAoid.mk編譯選項,發現一些問題:
########################
include $(CLEAR_VARS)
LOCAL_MODULE := platform.xml
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := ETC
# This will install the file in /system/etc/permissions
#
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
LOCAL_MODULE_TAGS := eng這個值為eng,所以在user模式下編譯時,對應的文件不做copy,LOCAL_MODULE_TAGS:= user時編譯時出錯。編譯腳本太深入的話,我也看不懂里面的東西,所以想了一種比較簡單的方法,編譯時不判斷模式,直接copy文件:
3、在device.mk中加入copy操作,解決問題
我們在4.0.3_r1/device/samsung/smdkv310/deivce.mk中加入copy命令,如下:
PRODUCT_COPY_FILES += \
frameworks/base/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml\
frameworks/base/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml\
frameworks/base/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml\
frameworks/base/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml\
frameworks/base/data/etc/platform.xml:system/etc/permissions/platform.xml\
frameworks/base/data/etc/tablet_core_hardware.xml:system/etc/permissions/tablet_core_hardware.xml
編譯完成后要檢查一下4.0.3_r1/out/target/product/smdkv310/system/etc/permissions/這個目錄下,是否把frameworks/base/data/etc/目錄下的xml文件復制過來。
注意:燒錄時,清除userdata\cache兩個分區,這里面會記憶一些系統信息,不清除的話,還是會出現錯誤現象。
前三個問題解決,我們再看下第四個問題:
4、串口的操作選擇(debugable使能)
問題:串口終端有信息輸出,但是不能操作(只能看到內核輸出信息,敲鍵盤沒反應)。
這個問題也是無意間發現的,其實在user模式下,串口本來就不能操作的,也就是說這是正常的現象,但是我們考慮到在試產過程中總會出現一些問題,要用到串口跟蹤信息,所以還是想找到原因:
(1)default.prop
我們對比下default.prop在兩種模式編譯下的差異:
user模式下,串口不可用:
shell@android:/ $ cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=0 //這個值為0也就是說不能用debug,所以串口就不能使用
persist.sys.usb.config=mass_storage
shell@android:/ $
user模式下,串口可用:
shell@android:/ # cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=1
ro.debuggable=1 //這個值為1,所以串口可以操作使用
persist.sys.usb.config=mass_storage,adb
(2)、全局搜索,找到對這個值設定的位置4.0.3_r1/build/core/main.mk更改:4.0.3_r1/build/core/main.mk
ifeq (true,$(strip $(enable_target_debugging)))
# Target is more debuggable and adbd is on by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1//eng模式下
# Include the debugging/testing OTA keys in this build.
INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
# Target is less debuggable and adbd is off by default
ADDITIONAL_DEFAULT_PROPERTIES +=ro.debuggable=1//user模式下,原來為0,現在改為1
endif # !enable_target_debugging
關于user、eng這兩種模式,BSP中應該都支持,也許我們拿到的BSP不全,這里面的問題只是針對user、eng編譯里的個別問題。我不能詳細的分析,一方面我做驅動方面的工作,對系統方面了解有限,另一方面BSP編譯規則一般是由芯片廠去做這部分工作。希望對遇到相同問題的“同學”有所幫助,自己也做一點備忘記錄。
總結
以上是生活随笔為你收集整理的android eng 模式,android 4.0 编译模式 eng - user 时遇到的有关问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 灰尘的旅行中+什么东西I“我”看起来像一
- 下一篇: 河南漯河郾城附近虾沟?