完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1, android上如何增加一个PC可见的盘符
1)在sysconfig1.fex中的luns中设置PC可见的盘数:luns=4 2)在init.rc中建立一个目录:mkdir /mnt/inet 0000 systemsystem 3).在vold.fstab中增加mounts的方法:dev_mount inet /mnt/inetauto /devices/virtual/block/nandh 4).更改config_evb.mk中: PRODUCT_PROPERTY_OVERRIDES+= ro.additionalmounts=/mnt/extern_sd;/mnt/u***host1;/mnt/inet ro.additionalshares=/mnt/extern_sd;/mnt/u***host1;/mnt/inet ro.udisk.lable=crane-evb 5).更改frameworks/base/services/java/com/android/server/MountService.java中增加头文件: import java.io.File;及在for (String path: volumesToShare) { 后增加: String tmp; if(path.equals(tmp)) { File f=newFile("/mnt/sdcard/mpgio.sys"); if(!f.exists()){ Slog.e(TAG, "not mount nandh"); return ; } Slog.e(TAG, "mount nandhsuccess"); } 2,Android4.0.1显示在切换中有时会出现红色边框 看是否有配置以下属性: persist.sys.strictmode.visual 此属性值设成0 3,播放电影字幕和菜单重叠 播放外带字幕电影,播放电影且已有字幕出现在屏幕上时触摸屏幕调出子菜单,字幕和菜单重叠,下一条字幕出现时则恢复正常。 修改 Gallery2srccomandroidgallery3dappMediaController.java 在initControllerView 函数最后加 mUpSubPos += 10; 即可 4,卡启动时,如何识别到nand并对其进行操作 关于要在卡启动识别到nand,有两种情况: 1. nand上已经有分区; 2. nand是裸片; 第一种情况下卡启动时nand驱动能够初始化成功,用户可以通过mount命令挂载nand的分区; 第二种情况下要先给nand一个虚拟的mbr,使得启动时nand能够初始化成功, 可以通过修改nand驱动的源码达到这一目的。 A10平台修改linux-3.0/drivers/block/sun4i_nand/nfd/mbr.c A1X平台修改linux-3.0/drivers/block/sun5i_nand/nfd/mbr.c 具体改动如下: int mbr2disks(struct nand_disk* disk_array) { int part_cnt = 0; int part_index; #if 0 if(_get_mbr()){ printk("get mbr errorn" ); return part_cnt; } part_index = 0; for(part_cnt = 0; part_cnt part_secur[part_index] = 0; //查找出所有的LINUX盘符 for(part_cnt = 0; part_cnt < mbr->PartCount && part_cnt < MAX_PART_COUNT; part_cnt++) { //if((mbr->array[part_cnt].user_type == 2) || (mbr->array[part_cnt].user_type == 0)) { PRINT("The %d disk name = %s, class name = %s, disk size = %dn", part_index, mbr->array[part_cnt].name, mbr->array[part_cnt].classname, mbr->array[part_cnt].lenlo); disk_array[part_index].offset = mbr->array[part_cnt].addrlo; disk_array[part_index].size = mbr->array[part_cnt].lenlo; part_secur[part_index] = mbr->array[part_cnt].user_type; part_index ++; } } disk_array[part_index - 1].size = DiskSize - mbr->array[mbr->PartCount - 1].addrlo; _free_mbr(); PRINT("The %d disk size = %lun", part_index - 1, disk_array[part_index - 1].size); PRINT("part total count = %dn", part_index); #else part_index = 1; disk_array[0].offset = 0; disk_array[0].size = DiskSize; part_secur[0] = 0; #endif return part_index; } 红色部分为改动的内容,旧版的SDK需要做适当的修改才可通过编译, 去掉:part_secur[0] = 0; 6,手机 拨号 apk拨号应用被隐藏 安装了contacts.apk和phone.apk,依然在launcher看不到拨号 frameworks/base/core/res/res/values/config.xml:581: 该属性为false时,会隐藏拨号,请注意自己的项目中是否覆盖了该属性 7,如何修改USB的Pid vid 根据项目需求,我们现需要修改平台的vendor Id & product Id, 在sys_config1.fex里面,有如下字段: ;-------------------------------- ;--- USB Device ;-------------------------------- [u***_feature] vendor_id = 0x18D1 mass_storage_id = 0x0001 adb_id = 0x0002 manufacturer_name = "USB Developer" product_name = "Android" serial_number = "20080411" [msc_feature] vendor_name = "USB 2.0" product_name = "USB Flash Driver" release = 100 luns = 2 相信vendor_id便是vid,改变此键值,即可达到改变vid的目的,那pid是怎么修改呢? android的设置 -> 存储 -> USB计算机连接,有三个选项,分别是:媒体设备(MTP)、 相机(PTP)、USB大容量存储。我分别用这三种模式与电脑连接,得到的pid & vid信息 如下: 媒体设备(MTP) : vid = 18D1 ; pid = 0007 相机(PTP) : vid = 18D1 ; pid = 0009 USB大容量存储 : vid = 18D1 ; pid = 0003 请问pid根据什么规则变化呢?我该如何配置相应的值? 请参见sys_config1.fex和文件 init.sun5i.u***.rc 媒体设备(MTP): vid = 18D1 ; pid = 0007 对应: on property:sys.u***.config=mtp,adb write /sys/class/android_u***/android0/enable 0 write /sys/class/android_u***/android0/idVendor 18d1 write /sys/class/android_u***/android0/idProduct 0007 write /sys/class/android_u***/android0/functions $sys.u***.config write /sys/class/android_u***/android0/enable 1 start adbd setprop sys.u***.state $sys.u***.config 其它类似 8,外部SD卡无法写入 只能读,程序无法写入 Androidmanifest权限声明内容: 看到sd目录和extsd目录的权限相同,都是system,但用户组不一样 sd是sdcard_rw,外部sd是media_rw 可以简单处理,修改一下extsd的用户组到sdcard_rw 修改system/vold/Volume.cpp 542行 if (primaryStorage) { // Special case the primary SD card. // For this we grant write access to the SDCARD_RW group. gid = AID_SDCARD_RW; } else { // For secondary external storage we keep things locked up. gid = AID_MEDIA_RW; } 改为 if (1) { // Special case the primary SD card. // For this we grant write access to the SDCARD_RW group. gid = AID_SDCARD_RW; } else { // For secondary external storage we keep things locked up. gid = AID_MEDIA_RW; } 9,高清播放器删除最后一张图片时,图片再无法移动问题 改 Gallery2srccomandroidgallery3duiPhotoView.java public void startSlideInAnimation(int direction) { ... mTransitionMode = direction; 改成 mTransitionMode = TRANS_NONE; } 10,A10的v1.4版本没有声音 配置文件没有加pa_dev的权限导致: 比如crane-evb-v12r:对应目录android4.0.4devicesoftwinnercrane-evb-v12rueventd.sun4i.rc 里面加pa_dev的权限: /dev/pa_dev 0777 system system 11,阿拉伯文下高清播放器不能搜索到.avi格式的媒体文件 由于阿拉伯文下 .avi后缀的视频,后缀名被转码后识别不了,需要修改以下地方。 frameworksbasemediajavaandroidmediaMediaFile.java public static MediaFileType getFileType(String path) { int lastDot = path.lastIndexOf("."); if (lastDot < 0) return null; return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase(Locale.ENGLISH)); } public static MediaFileType getFileType(String path) { int lastDot = path.lastIndexOf("."); if (lastDot < 0) return null; return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase(Locale.ENGLISH)); } public static MediaFileType getFileType(String path) { int lastDot = path.lastIndexOf("."); if (lastDot < 0) return null; return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase(Locale.ENGLISH)); } 12,字体设置为大、超大时,竖屏在解锁界面,解锁的图标显示不全 800x600,lcd_denisty 160 frameworks/base/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml 适当加大72行的android:layout_weigh 这样解锁部分的面积会增加,解决这个问题 其他分辨率需要修改其他layout文件夹下的keyguard_screen_tab_unlock.xml 13,设置-安全-屏幕锁定-图案界面,在坚屏时不显示取消/下一步 800x600,lcd_denisty 160 packages/apps/Settings/res/layout-sw600dp/choose_lock_pattern_tutorial.xml 把两个layout_marginTop都适当改小 14,音效里的Normal和Flat功能反 frameworks/base/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h gEqualizerPresets数组,名字可以随意修改 14,动态壁纸 线性光幕效果有黑块 将壁纸设为动态壁纸中的“线性光幕效果”时,在主界面旋转屏幕时未显示完整,即往边上拉存在黑块问题。 修改: androidpackageswallpapersBasicsrccomandroidwallpapernexusNexusRS.java @Override public void setOffset(float xOffset, float yOffset, int xPixels, int yPixels) { //mXOffset = xOffset; //mScript.set_gXOffset(xOffset); } 15,android4.0量产时用户区不能格式化 版本为v1.0,量产配置已经加入erase_flag=1,仍然不能格式化 16,如何修改setting里面各字体对应的大小 感觉setting里面字体大小选择的变化幅度太大,希望小不要太小,特大不要太大,每级变化的幅度缩小点该如何修改 android4.0packagesappsSettingsresvaluesarrays.xml文件里 默认是0.15的梯度改成合适的梯度如 17,user模式下gsensor不可用 不能编译成user模式只能ENG模式,user模式下Gsensor不能旋转 mma7660出现过这种情况,原因是sensors.exDroid.so编译出来以后没有安装到/system/lib/hw下可以在build/target/product/generic_no_telephony.mk中加入 sensors.exDroid,再重新编译即可 18,浏览器退出和浏览器为android模式时看在线视频卡 A10 1:在浏览时有时偶尔会退出 2:浏览器用android模式,看在线视频十几分钟左右后会卡,但用ipad模式不会卡 1. 需要具体分析问题,我们其它客户案上浏览正常 2。android模式采用的flash格式播放,而ipad采用的html5。flash由于自身格式和片源分割的关系,在线视频有机率产生不同步或卡顿问题。该问题由flash自身引起,这也是为何flash会逐渐被html5取代的一个方面 19,3g dongle在特定的区域死机 dongle在信号好的地方可以正常使用,在信号差的地方,连接慢,且使用几分钟后会出现蓝屏、黑屏、死机等现象 3G dongle属于射频产品,对USB线的要求比较高,特别是在信号不强的情况下,使用时使用带有屏蔽处理较好的USB OTG线即可。 20,android4.0.3中camera延时录制是什么功能? 该功能主要是拍摄车水马龙、行云流水等用的;假设录制的正常帧率是15fps,如果设置成延时1s,则代表1s会录制1帧,如果想实际录制的视频有1s的内容(15帧),则实际需要录制15s;一些客户反馈,录制一段视频后,实际播放的时间很短,就是因为这个原因 21,android4.0中如何自动弹出USB盘 修改 frameworksbasepackagesSystemUIsrccomandroidsystemuiu***StorageNotification.java //Intent intent = new Intent(); // Intent intent = new Intent(); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_stop_notification_title, // com.android.internal.R.string.u***_storage_stop_notification_message, // com.android.internal.R.drawable.stat_sys_warning, false, true, pi) ; //intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); //PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); //setU***StorageNotification( // com.android.internal.R.string.u***_storage_stop_notification_title, // com.android.internal.R.string.u***_storage_stop_notification_message, // com.android.internal.R.drawable.stat_sys_warning, false, true, pi); ... } void updateU***MassStorageNotification(boolean available) { StorageManager mStorageManager = null; if (available) { if(mContext != null) { mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE); } else { Slog.w(TAG, "mContext is null ,getSystemService error !"); } // Intent intent = new Intent(); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi); if(mStorageManager != null) { mStorageManager.enableU***MassStorage(); } // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi); // intent.setClass(mContext, com.android.systemui.u***.U***StorageActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // // PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); // setU***StorageNotification( // com.android.internal.R.string.u***_storage_notification_title, // com.android.internal.R.string.u***_storage_notification_message, // com.android.internal.R.drawable.stat_sys_data_u***, // false, true, pi) } else if(!mUmsAvailable || !atLeastOneDeviceMounted()) { setU***StorageNotification(0, 0, 0, false, false, null); if(mStorageManager != null) { mStorageManager.disableU***MassStorage(); } } } 22,电池提示无法获取电池使用数据 设置--电池--,里面提示无法获取电池使用数据 android4.0(1.2版本之后,之前没有此功能) 在devicesoftwinnercrane-xxxoverlayframeworksbasecoreresresxml 目录下, 增加 power_profile.xml power_profile.xml 内容如下 23,android2.3上如何开启U盘自动扫描 插入U盘后在播放器中看不到U盘文件,如何才能打开 需修改 frameworksbasecorejavaandroidproviderSettings.java frameworksbasepackagesSettingsProvidersrccomandroidproviderssettingsDatabaseHelper.java packagesprovidersMediaProvidersrccomandroidprovidersmediaMediaScannerReceiver.java packagesprovidersMediaProvidersrccomandroidprovidersmediaMediaScannerService.java 具体修改如若无法完成,可参考相关补丁包 24,如何降低CPU最高频率 目前系统为动态调频,如何限定最高CPU频率? 降低CPU频率需要作以下两个修改: 1)在licheetoolspackchipssun5iconfigsandroidxxxsys_config1.fex文件(“xxx”为对应的方案配置文件目录)中修改启动频率: [target]boot_clock =1008 boot_clock为启动的CPU频率,单位为MHz,根据需要自行修改,该值不能大于最高频率; 2)在licheelinux-3.0archarmmach-sun4icpu-freqcpu-freq.h文件中修改CPU的最高频率: #define SUN4I_CPUFREQ_MAX (1008000000) SUN4I_CPUFREQ_MAX为CPU允许运行的最高频率,单位是Hz,根据需要自行修改; 25,android4.0在阿拉伯语语言问题 android4.0在阿拉伯语语言系统下,APK程序进入到”设置”--“应用程序“--”储存转移“,点击“移至平板电脑”,出现无法移动的对 话框 问题补充 2012/04/27 20:19 在使用google market下载apk时,出现错误的提示框,也是由于 android4.0 在阿拉伯文支持上有问题。 由于android4.0对阿拉伯文支持问题,在调用String.format()方法的时候会出现有乱码的情况。 具体此问题,需要修改 frameworksbaseservicesjavacomandroidserverMountService.java 将 public int createSecureContainer(String id, int sizeMb, String fstype, String key, int ownerUid) { public int createSecureContainer(String id, int sizeMb, String fstype, String key, int ownerUid) { public int createSecureContainer(String id, int sizeMb, String fstype, String key, int ownerUid) { public int createSecureContainer(String id, int sizeMb, String fstype,String key, int ownerUid) { 。。。 String cmd = String.format("asec create %s %d %s %s %d", id, sizeMb, fstype, key, ownerUid); 修改为 String cmd = "asec create "+id+" "+ sizeMb+" "+ fstype+" "+ key+" "+ ownerUid; 即可 26,如何在摄像头录像界面,预览画面跟随录像分辨率变化 例如:在media_profiles.xml文件中,分别设置了720p和480p的录像分辨率: bitRat widt heigh frameRat /> bitRat sampleRat channels="2" /> bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> 在camera.cfg文件中,对应的摄像头配置里面,需根据上面红色字体在 key_support_preview_size = 添加1280x720,640x480 跟录像设置的分辨率一样的预览支持分辨率 27,nexus和galaxy4动态壁纸显示问题 设置好动态壁纸,切换横竖屏,显示出现问题,被拉伸,或缺失 nexus packages/wallpapers/Basic/src/com/android/wallpaper/nexus/NexusRS.java 69行resize函数 @Override public void resize(int width, int height) { super.resize(width, height); // updates mWidth, mHeight // android.util.Log.d("NexusRS", String.format("resize(%d, %d)", width, height)); } 改成 @Override public void resize(int width, int height) { super.resize(width, height); // updates mWidth, mHeight createProgramVertex(); // android.util.Log.d("NexusRS", String.format("resize(%d, %d)", width, height)); } galaxy4 packages/wallpapers/Galaxy4/src/com/android/galaxy4/Galaxy4Wallpaper.java onSurfaceChanged函数改为 @Override public void onSurfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) { super.onSurfaceChanged(surfaceHolder, format, width, height); if (mRenderScript != null) { mRenderScript.setSurface(surfaceHolder, width, height); } if (mWallpaperRS == null) { mWallpaperRS = new GalaxyRS(); mWallpaperRS.init(mRenderScript, getResources(), width, height); mWallpaperRS.start(); } mWallpaperRS.resize(width, height); } packages/wallpapers/Galaxy4/src/com/android/galaxy4/GalaxyRS.java文件, 添加如下代码 public void resize(int w,int h) { mWidth = w; mHeight = h; createProgramVertex(); }, 28,android4.0修改system/build.prop文件后看不到变化 第一次烧录后开机,看不到修改后的信息,要在烧录后第2次打开才能看到修改后的内容 原因:是在修改system/build.prop文件后,没有使用make systemimage-nodeps命令 解决方法:修改文件后,使用make systemimage-nodeps命令后,再pack 29,韩文字幕显示会有乱码 1.修改 Gallery2srccomandroidgallery3dappMovieViewControl.java,见以下代码红色部分: private View.OnClickListener mSubCharSetListener = new View.OnClickListener() { public void onClick(View v) { mMediaController.setHolding(true); mControlFocus = EDITOR_SUBCHARSET; mDialogTitle.setText(R.string.charset_title); mListFocus = 0; String currentCharset = mVideoView.getSubCharset(); String[] CharsetList = mRes.getStringArray(R.array.screen_charset_values); for(int i = 0; i < CharsetList.length; i++) { if(currentCharset.equalsIgnoreCase(CharsetList)) { mListFocus = i; break; } } ArrayAdapter R.layout.simple_list_item_single_choice, mRes.getStringArray(R.array.screen_charset_entries)); mListView.setAdapter(adapter); mListView.setItemChecked(mListFocus, true); mListView.smoothScrollToPosition(mListFocus); mListDialog.show(); } }; 2.修改Gallery2resvaluesarrays.xml,如下: 3.修改Gallery2resvaluesstrings.xml,如下: 4.简体中文支持,修改Gallery2resvalues-zh-rCNstrings.xml,如下: 播放视频时,记得 在 播放界面 选择 相应的字幕 。例如 韩文 ,在播放界面,选择 "..."后,选择韩文字幕 。 30,修改sys_config1后,如果能不升级整个固件就让其生效 每次升级整个固件太慢,有没有办法部分升级? 1. 在android shell中将/dev/block/nanda mount到某个节点: mount -t vfat /dev/block/nanda /mnt/nand 2. 修改sys_config1后build固件,然后在licheetoolspackoutbootfs下找到scrpt.bin和script0.bin 3. 然后用adb连接后,将scritp.bin和script0.bin推到所mount节点的根目录下,替换原有同名文件: adb push script*.bin /mnt/nand/ 4. 最后sync重启即可 adb shell sync reboot 31,如何修改浏览器默认模式 在android4.0.1/packages/apps/Browser/res/xml/debug_preferences.xml中将 40 android:titl 41 android:entries="@array/pref_development_ua_choices" 42 android:entryValues="@array/pref_development_ua_values" 43 android:defaultValu/> 中修改defaultValue的值,对应如下: Android :0 Desktop :1 iPhone:2 iPad :3 Froyo-N1:4 Honeycomb-Xoom:5 追问:BrowserSetting.java文件中需要同步修改,否则会出现显示值和实际值第一次不一致的情况: public int getUserAgent() { if (!isDebugEnabled()) { return 0; } /* modified by Gary. start {{----------------------------------- */ /* 2011-11-29 */ /* modify the default user agent */ return Integer.parseInt(mPrefs.getString(PREF_USER_AGENT, "3")); /* add by Gary. end -----------------------------------}} */ } 32,电量管理不准以及低电不关机 v1.0和v1.1中感觉电池电量不准,在低电情况下,系统也没有自动关机 需确认sys_config1.fex以下几个地方: 1. pmu_battery_rdc的值为100 2. pmu_battery_cap为正确的电池电量 3. pmu_bat_para的放电曲线校正 对于低电系统没有自动关机问题,一般尝试修改pmu_battery_cap: pmu_bat_para4 = 0 pmu_bat_para5 = 5 33,android4.0 GC0307 Camera曝光调节不正常 调节曝光等级-4比等级-3还亮 把gc0307.c驱动里的这个数组, static struct regval_list sensor_ev_neg4_regs[ ] = { {{0xf0},{0x00}}, {{0x7a},{0xc0}}, {{0xd1},{0x30}}, {{0xf0},{0x00}}, {{0x7a},{0x00}}, {{0xd1},{0x50}}, }; 改成 static struct regval_list sensor_ev_neg4_regs[ ] = { {{0xf0},{0x00}}, {{0x7a},{0xc0}}, {{0xd1},{0x30}}, {{0xf0},{0x00}}, {{0x7a},{0xc0}}, {{0xd1},{0x30}}, }; 34,adb中使用busybox adb自带的shell使用很不爽,能不能使用busybox 在adb中运行如下命令即可: busybox sh 要退出busybox模式,输入exit即可 35,如何单独替换内核 有没有办法不升级整个固件,单独替换内核 在android shell中将/dev/block/nanda mount到某个节点: mount -t vfat /dev/block/nanda /mnt/nand 然后用adb连接后,将bImage直接push到所mount节点的linux目录下,替换bImage: adb push bImage /mnt/nand/linux 最后sync重启即可 adb shell sync reboot 36,竖屏机器在取消“自动选择屏幕”后如何避免变成横屏显示? 文件: android4.0frameworksbasepolicysrccomandroidinternalpolicyimplPhoneWindowManager.java 函数: public int rotationForOrientationLw(int orientation, int lastRotation) { .... default: // For USER, UNSPECIFIED, NOSENSOR, SENSOR and FULL_SENSOR, // just return the preferred orientation we already calculated. if (preferredRotation >= 0 && sensorChanged) { return preferredRotation; } return Surface.ROTATION_270; //这里修改Surface.ROTATION_0 -> Surface.ROTATION_270 } 37,录像时不能选择分辨率 摄像头录像时,选择分辨率的选项没有 如果想在720p和480p之间选择,在mediaprofile.xml文件中,按如下设置: bitRat widt heigh frameRat /> bitRat sampleRat channels="2" /> bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> bitRat widt heigh frameRat /> bitRat sampleRat channels="2" /> bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> 38,A13上Goodix TP触摸无效 A10上正常,A13无效 原因: 中断号由A10的EINT21变为A13上的EINT11。 解决方法: 在中断处理函数中把对EINT21的处理变为对EINT11的处理。 goodix_touch.c static irqreturn_t goodix_ts_irq_handler(int irq, void *dev_id) { struct goodix_ts_data *ts = dev_id; int reg_val; print_int_info("==========------TS Interrupt-----============n"); //clear the IRQ_EINT11 interrupt pending reg_val = readl(gpio_addr + PIO_INT_STAT_OFFSET); if(reg_val&(1<<(IRQ_EINT11))) { print_int_info("==IRQ_EINT11=n"); writel(reg_val&(1<<(IRQ_EINT11)),gpio_addr + PIO_INT_STAT_OFFSET); queue_work(goodix_wq, &ts->work); } else { print_int_info("Other Interruptn"); return IRQ_NONE; } return IRQ_HANDLED; } 39,播放部分音视频文件的时候,声音出现卡顿 在其它机器上不会,DDR频率为360M 由于客户的板子loyout或者制作不是很完善,导致DDR频率为360M时,出现播放视频声音卡顿,把DDR频率降为240M左右解决 40,如何修改蓝牙名称 如果你想修改默认的名字,可以这么做: 文件external/bluetooth/bluez/src/main.c 将 main_opts.name = g_strdup("BlueZ"); 里面的BlueZ换成你想要的名字即可! 由于没有悬赏分,只能这么回答了,呵呵~~~ 41,如何更改android编译选项 比如eng,usr,debug 在相应的device目录下,如crane-evb,打开vendorsetup.sh 将里面 add_lunch_combo crane_evb-eng 最后的eng修改成你希望的模式即可。 如: add_lunch_combo crane_evb-user add_lunch_combo crane_evb-userdebug 42,为何通过U***Manager调用getDeviceList获取设备列表总是空的 这个是因为缺少android.hardware.u***.host权限, http://www.oschina.net/code/download_src?file=android-4.0.1%2Fdata%2Fetc%2Fandroid.hardware.u***.host.xml 下载该文件,放在/system/etc/permisson/下,可以解决 43,低电自动关机重启 低电状态下,自动关机后重启,进不了系统,偶尔能进入系统但是触屏没反应 原因在于源不足以支持系统开机,而此时电池又电量太低,导致不能满足整个系统的开机功耗。解决方法是提高开机的门限电和Android关机门限。 1:boot阶段开机的门限电压设置方法 : 在sys_config1脚本中 [boot_extend] vol_threshold = 3500 2:修改Android 低电关机的门限 BatteryService.java private final void shutdownIfNoPower() { // shut down gracefully if our battery is critically low and we are not powered. // wait until the system has booted before attempting to display the shutdown dialog. if (mBatteryLevel < 5 &&(5为5%即可关机修改 为更大的值,具体值可以根据具体情况而定) 44,sys_config1中power20x是什么意思 power指PMU的PIN 20x意义如下: 201表示axp20_rtc 202表示"axp20_analog/fm" 203表示"axp20_pll" 204表示"axp20_hdmi" 45,A13 wifi关闭后电源没有关断 A13方案的wifi在关闭后电源没有关断,导致休眠唤醒出问题 检查USB WIFI部分的u***_drv_vbus_gpio的配置是否正确 在A13方案中,除使用gpio外,还会用到PMU的LDO,请注意 46,如何修改鼠标的按键定义 鼠标插上以后,左键和右键的功能都是左键的,如何将右键修改为返回 这个是android的标准做法,如果定制,可以修改frameworks/base/services/input/inputreader.cpp文件中的: uint32_t CursorButtonAccumulator::getButtonState() const { uint32_t result = 0; if (mBtnLeft) { result |= AMOTION_EVENT_BUTTON_PRIMARY; } if (mBtnRight) { result |= AMOTION_EVENT_BUTTON_SECONDARY; } if (mBtnMiddle) { result |= AMOTION_EVENT_BUTTON_TERTIARY; } if (mBtnBack || mBtnSide) { result |= AMOTION_EVENT_BUTTON_BACK; } if (mBtnForward || mBtnExtra) { result |= AMOTION_EVENT_BUTTON_FORWARD; } return result; } 目前因为下面函数 static bool isPointerDown(int32_t buttonState) { return buttonState & (AMOTION_EVENT_BUTTON_PRIMARY | AMOTION_EVENT_BUTTON_SECONDARY | AMOTION_EVENT_BUTTON_TERTIARY); } 将鼠标左右键的功能设置成判断鼠标是否点击的操作,所以功能一致,如果需要修改,这需要改一下上面的getButtonState函数中的标志位即可,比如需要将右键改为后退键,只需要 函数中: if (mBtnRight) { result |= AMOTION_EVENT_BUTTON_SECONDARY; } 改为 if (mBtnRight) { result |= AMOTION_EVENT_BUTTON_BACK; } 即可。 47,android4.0上如何将一个电阻屏的工程修改为电容屏的? 在android4.0上需要修改些什么才能从电阻屏转化为电容屏? 该部分在发给客户的定制文档中已有说明,针对4.0相关的修改点如下: 1. sys_config1.fex文件:屏蔽掉RTP相关的配置: [rtp_para] rtp_used =0 rtp_screen_size =7 rtp_regidity_level = 7 rtp_press_threshold_enable = 0 rtp_press_threshold = 0x1f40 rtp_sensitive_level = 0xf rtp_exchange_x_y_flag = 0 配置正确的CTP参数,以ft5x为参考: [ctp_para] ctp_used =1 ctp_name = "ft5x_ts" ctp_twi_id = 2 ctp_twi_addr =0x38 ctp_screen_max_x = 1024 ctp_screen_max_y = 768 ctp_revert_x_flag = 0 ctp_revert_y_flag = 0 ctp_exchange_x_y_flag = 0 ctp_int_port = port:PH21<6> ;ctp_wakeup = port:PB13<1><1> ctp_reset = port:PH20<1> ctp_io_port = port:PH21<0> 该部分的参数意义可以查看收到的‘Android定制文档’ 2.驱动相关: 正确编译相关驱动,默认已提供敦泰、蕙鼎驱动; 在init.sun4i.rc文件中正确insmod相关驱动: insmod /system/vendor/modules/sun4i-ts.ko //注释掉默认的电阻屏驱动 insmod /system/vendor/modules/ft5x_ts.ko //正确加载使用的驱动 3.其他细节 (1)4.0上需添加一个tp的idc文件,用于参数校正,文件名用驱动的input name即可; crane_xxx中的sun4i-ts.idc文件改名为ft5x_ts.idc 同时在crane_xxx.mk文件修改拷贝动作: device/softwinner/crane-xxx/ft5x_ts.idc:system/usr/idc/ft5x_ts.idc (2) 去掉rtp上用到的触摸校准程序: crane-xxx.mk中去掉: PRODUCT_PACKAGES += TSCalibration2 使在编译打包时不包含该触摸校准应用; 48,android平台的OMX框架是否有硬件加速 android平台的OMX的解码框架支持硬件加速 49,A13怎么用串口打印信息? A13调试版本固件支持SD卡输出打印,以及打开JTAG功能的配置方法如下: 1.修改配置文件 sys_config1.fex,支持调试打印从SD0接口输出: [uart_para] uart_debug_port = 1 uart_debug_tx = port:PG3<4><1> uart_debug_rx = port:PG4<4><1> 修改为: [uart_para] uart_debug_port = 0 uart_debug_tx = port:PF2<4><1> uart_debug_rx = port:PF4<4><1> [uart_para0] uart_used = 0 uart_port = 0 uart_type = 2 uart_tx = port:PG3<4><1> uart_rx = port:PG4<4><1> 修改为: [uart_para0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PF2<4><1> uart_rx = port:PF4<4><1> [mmc0_para] sdc_used = 1 修改为: [mmc0_para] sdc_used = 0 同时个改u-boot源文件“licheeu-bootincludeconfigssun5i_a13.h”,配置打印由uart0输出: #define CONFIG_CONS_INDEX 2 /* which serial channel for console */ 修改为: #define CONFIG_CONS_INDEX 1 /* which serial channel for console */ 修改配置文件 sys_config1.fex,支持JTAG: [jtag_para] jtag_enable = 0 修改为: [jtag_para] jtag_enable = 0 50,swi entry mismatch,有没有相关资料啊 [ 0.212] gpio config [ 0.212] gpio finish [ 0.408] ERROR : swi entry mismatch[ 0.408] The input swi number is 16777215, 0x00ffffff [ 0.411] ERROR : swi entry mismatch[ 0.414] The input swi number is 16777215, 0x00ffffff 问题补充 2012/04/06 17:04 出问题在Jump to Boot1.处,还没有到uboot,我使用的是crane_sdk_v4.0.8-1版本 问题补充 2012/04/06 17:05 我在lunch使用的是evb配置 问题补充 2012/04/11 17:10 fail:/home/sys161117/lichee/tools/pack/out/bootfs/vendor/system/media 0 问题补充 2012/04/11 17:11 打包的时候有这个错误 fail:/home/sys161117/lichee/tools/pack/out/bootfs/vendor/system/media 0 问题补充 2012/04/12 09:20 出现这个问题是因为设置了 设置启动就是hdmi显示 http://service.awbase.com:8000/ask/?q-137.html 1.在licheetoolspackchipssun4iwbootbootfsboot.ini中更改以下 display_device= 3 display_mode = 4 2.在sys_config1.fex中更改以下 screen0_output_type = 3 screen0_output_mode = 4 51,有没有单独烧写uboot和配置的方式 更新uboot可以直接mount /dev/nanda分区,将u-boot.bin放在/nanda/linux/下,具体方式可以通过adb 追问:你这个是不是必须要到android起来才能操作,我想在boot下或者tf卡上烧写 52,通过 USB充电使用 机器通过 USB线接电脑充电使用,在玩游戏的过程中耗电量大于充电量,导致没有电流流入电池,反而是电池在耗电,但是机器显示电量百分比一直不会下降,也不会低电提示和低电关机。直到电池电量完全耗尽,机器会强制关机。 该问题为充电下电量处理的问题,在v1.2版本已经修正 53,系统无法启动:key found, jump to fel 打印信息如下: HELLO! BOOT0 is starting! boot0 version : .2.2 dram size =512 Succeed in opening nand flash. Succeed in reading Boot1 file head. The size of Boot1 is 0x00036000. The file stored in 0X00000000 of block 2 is perfect. Check is correct. Ready to disable icache. Succeed in loading Boot1. Jump to Boot1. [ 0.128] boot1 version : 1.2.6 [ 0.128] pmu type = 3 [ 0.156] axi:ahb:apb=3:2:2 [ 0.156] set dcdc2=1400, clock=1008 successed [ 0.158] key [ 8.370] timeout, but no power key found [ 8.370] key found, jump to fel 请检查下按键处的电阻是否有焊接,从打印来看是boot检测到按键,走到升级流程去了 54,windows下如何用adb调试呢? 1. 在 pad上选:“设置”-> "开发人员选项" -> u*** 调试,这里勾上。 2.接上windows,若没安装过 adb驱动,则会提示新设备,安装下面目录里面的驱动即可: tools\tools_winUSBDriver.rar 3. 用下面的 adb应用程序即可: tools_winPlatformToolsplatform-tools如:E:\platform-toolsadb shell 55,MXC622X GSENSOR在android4.0上怎么配置 首先在android4.0Xdevicesoftwinnercrane-xxBoardConfig.mk中添加如下配置: # Gsensor board config # we can use this string : mma7660, mxc622x , bma250 SW_BOARD_USES_GSENSOR_TYPE := mxc622x SW_BOARD_GSENSOR_DIRECT_X := true SW_BOARD_GSENSOR_DIRECT_Y := false SW_BOARD_GSENSOR_DIRECT_Z := false SW_BOARD_GSENSOR_XY_REVERT := true 注意:修改该文件后,为确保修改后能编译相关文件, 比较快速简便的方法是:进入android4.0xdevicesoftwinnercommonhardware目录下,输入find . | xargs touch命令touch该文件夹下的所有文件。 然后在android4.0Xdevicesoftwinnercrane-xxinit.sun4i.rc中添加如下配置: # gsensor module insmod /system/vendor/modules/mecs.ko insmod /system/vendor/modules/mxc622x.ko chmod 777 /system/bin/memsicd mkdir /data/misc/sensors 0777 system system service memsicd /system/bin/logwrapper /system/bin/memsicd class main 最后在android4.0Xdevicesoftwinnercrane-xxueventd.sun4i.rc中添加如下配置: /dev/mxc622x 0777 system system /dev/ecompass_ctrl 0777 system system 在licheetoolspackchipssun4iconfigscranexxsys_config1.fex文件中,gsensor的配置如下: [gsensor_para] gsensor_used =1 gsensor_name = "mxc622x" gsensor_twi_id = 1 gsensor_twi_addr =0x15 gsensor_int1 = gsensor_int2 = 56,android 4.0 v1.1版本,编译gps报错 报错信息: make: *** Notice file: frameworks/base/cmds/svc/NOTICE -- out/target/product/crane-evb-v13/obj/NOTICE_FILES/src//system/framework/svc.jar.txt 没有规则可以创建“out/target/product/crane-evb-v13/obj/lib/gps.exDroid.so”需要的目标“device/softwinner/common/hardware/libhardware/gps//haiweixun/gps.exDroid.so”。停止。 因为编译脚本的改变,所以把android4.03devicesoftwinnercommonhardwarelibhardwaregpshaiweixun这个文件名gps.sun4i.so改为gps.exDroid.so再编译就可以了 57,RTL8188 wifi反馈搜索不到中文名的ap; 追踪发现wap_supplicant中得到的SCAN_RESULTS中就没有中文名ap,确认是driver中没有上报该ap; 修改方法: linux-3.0driversnetwirelessrtl8192cuincludedrv_conf.h mark掉CONFIG_VALIDATE_SSID这个定义 该定于主要用于搜索到SSID后再进行一次过滤,如果是非ascii字符则放弃掉该ap: if(!( (ssid->Ssid >= 0x20) && (ssid->Ssid <= 0x7e) )){ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("ssid has nonprintabl asciin")); ret= _FALSE; break; } 同RTL沟通,该定于主要用于前期在上层收到非ascii字串后会导致应用程序挂死,目前系统已没有该问题,所以需要该功能的客户可以将该定义注释掉; 58,android canvas无法进行裁剪绘制不规则图形 我实现的是一个翻书效果的应用,但是进行翻页时报错。 异常信息如下: unSupportedOperationException at.android.view.GLES20Canvas.clippath(GLES20Canvas.java:413); 不知道这是什么原因 原因是android4.0默认开启硬件加速,绘制由GLES20Canvas处理,该类的clipPath方法直接抛出了上述异常 解决方法:如果您有应用程序的源代码,可以在需要进行clipPath的view进行 setLayerType(View.LAYER_TYPE_SOFTWARE,mPaint);操作,进行软件渲染 59,AndroidModify_V104修改语言等,还是中文 修改语言,时区,机型等在第一次烧写后是中文的,重新启动或恢复出厂设置后又是修改后的语言(比如英语), 1:能在第一次烧写后就是修改后的语言吗? 2:时区不能随语言的变更而自动改变吗?(或者有对应的说明吗?因为有时候比如印度、意大利等都不太清楚是哪个时区,有个对照表) 3:修改卷标后无效,还是原来的卷标 1. 目前还做不到,需要首次启动后再重起才行 2。时区和语言是两个设置项,需单独设置。对于地区和时区的对照可以自行上网查找相关资料 3。请更新到V105测试 60,视频老化退出或者停住 v1.0和v1.1在进行视频老化测试的时候,循环播放一晚 视频出现退出播放或者在切换中定住的问题 该问题由解码库的bug引起,目前已经确认并解决,后续版本会fix该问题 61,客户反馈,使用新版IC之后仍发现u*** host口不能接低速设备; 这个目前是已经支持的,测试过都没问题的。 1. 确定u*** host口硬件连接是否和evb板一样。这点一般没问题。 2. 更新 lichee/linux代码到最新的版本。 62,F20的CVBS没有输出 我们现在有个F20的机器,CVBS没有输出, 请问下代码的位置,或者是否有开关没打开 CVBS没有输出有可能是引脚功能没有配置正确,首先确认引脚是否有输出可通过测试程序fb_tv来测,应用在releasexx/test/display/fb下。 确认有输出后,可通过代码更改引脚的功能定义,修改文件名为: linux-v2.6.36.4driversvideosun3idispde_bspdedisp_tv.c中的Disp_TVEC_Init(void)函数,默认为: gdisp.screen[0].dac_source[0] = DISP_TV_DAC_SRC_COMPOSITE; gdisp.screen[0].dac_source[1] = DISP_TV_DAC_SRC_Y; gdisp.screen[0].dac_source[2] = DISP_TV_DAC_SRC_PB; gdisp.screen[0].dac_source[3] = DISP_TV_DAC_SRC_PR; 将对应的dac更改在DISP_TV_DAC_SRC_COMPOSITE就可以了。 63,android 2.3.4 v2.05版本,播放视频待机唤醒后,视频显示反了 显示屏旋转180度方案上 在android2.3.4frameworksbasemediaCedarX-ProjectsCedarXAndroidGingerbreadCedarXPlayer.cpp文件中的status_t CedarXPlayer::prepare_l()这个函数中,添加针对屏反方案的控制 例如: status_t CedarXPlayer::prepare_l() { if (mFlags & PREPARED) { return OK; } mIsAsyncPrepare = false; if(mScreenID == 0) { //master screen mPlayer->control(mPlayer, CDX_CMD_SET_VIDEO_ROTATION, 2, 0); } if(mPlayer->control(mPlayer, CDX_CMD_PREPARE, 0, 0) != 0){ return UNKNOWN_ERROR; } finishAsyncPrepare_l(0); return OK; } 64,android4.0,如何预装apk? 可参考android2.3.4的做法: 1. 在目录/android2.3.4/device/softwinner/crane-evb/apk 下有一些apk。 2. 然后crane_evb.mk文件中有语句: # pre-installed apks #PRODUCT_COPY_FILES += # $(call find-copy-subdir-files,*.apk,$(LOCAL_PATH)/apk,system/preinstall) 在android4.0上同样的在./device/softwinner/crane-xxx建个目录apk,同时修改相应的crane_xxx.mk,在里面添加 # pre-installed apks #PRODUCT_COPY_FILES += # $(call find-copy-subdir-files,*.apk,$(LOCAL_PATH)/apk,system/preinstall) 这样就可以预装apk了。 64,android4.0.10 wifi无法连接 E/CommandListener( 82): Failed to open /proc/sys/net/ipv6/conf/wlan0/use_tempa ddr: No such file or directory E/WifiStateMachine( 175): Unable to change interface settings: java.lang.Illega lStateException: Unable to communicate with native daemon to set ipv6privacyexte nsions - com.android.server.NativeDaemonConnectorException: Cmd {interface ipv6p rivacyextensions wlan0 enable} failed with code 400 : {Failed to set ipv6 privac y extensions (No such file or directory)} E/WifiHW ( 175): Supplicant not running, cannot connect E/WifiHW ( 175): Supplicant not running, cannot connect E/WifiHW ( 175): Supplicant not running, cannot connect E/WifiHW ( 175): Supplicant not running, cannot connect E/WifiHW ( 175): Supplicant not running, cannot connect E/WifiStateMachine( 175): Failed to setup control channel, restart supplicant D/WifiHW ( 82): Enter: wifi_get_fw_path function, fw_type=0, E/SoftapController( 82): iface:wlan0, fname: WL_FW_RELOAD - function not suppo rted E/SoftapController( 82): Softap fwReload - failed: -1 E/WifiStateMachine( 175): Failed to reload STA firmware java.lang.IllegalStateE xception: Error communicating to native daemon D/CommandListener( 82): Setting iface cfg D/CommandListener( 82): Trying to bring down wlan0 D/CommandListener( 82): broadcast flag ignored D/CommandListener( 82): multicast flag ignored E/CommandListener( 82): Failed to open /proc/sys/net/ipv6/conf/wlan0/use_tempa ddr: No such file or directory D/NetworkManagementService( 175): rsp <213 00:92:c3:a2:be:7f 0.0.0.0 0 [down br oadcast multicast]> D/NetworkManagementService( 175): flags <[down broadcast multicast]> E/WifiStateMachine( 175): Unable to change interface settings: java.lang.Illega lStateException: Unable to communicate with native daemon to set ipv6privacyexte nsions - com.android.server.NativeDaemonConnectorException: Cmd {interface ipv6p rivacyextensions wlan0 enable} failed with code 400 : {Failed to set ipv6 privac y extensions (No such file or directory)} ^C 如果是用的rtl8192wifi的话,参考下面修改 1. BoardConfig.mk文件: # Wifi related defines #BOARD_WPA_SUPPLICANT_DRIVER := WEXT #WPA_SUPPLICANT_VERSION := VER_0_8_X # Wifi chipset select BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl SW_BOARD_USR_WIFI := rtl8192cu BOARD_WLAN_DEVICE := rtl8192cu endif 2. init.sun4i.rc文件: #add for realtek wifi service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf socket wpa_wlan0 dgram 660 wifi wifi group wifi inet disabled oneshot 65,android 2.3.4 v2.05版本,摄像头预览颜色偏蓝 显示屏旋转180度方案上 在 CameraHardware.cpp 在void CameraHardware::setOveralyRotation(V4L2BUF_t * pV4L2Buf, int preview_width, int preview_height) 添加的这个函数中,把blit_para.src_image.pixel_seq = G2D_SEQ_VUVU; /* not use now */ 和blit_para.dst_image.pixel_seq = G2D_SEQ_VUVU; /* not use now */ 改为blit_para.src_image.pixel_seq = G2D_SEQ_NORMAL; /* not use now */ 和blit_para.dst_image.pixel_seq = G2D_SEQ_NORMAL; /* not use now */ 66,android 4.0.10进土豆网,只能看今日热点,其它的视频看不了? 1 、修改device/softwinner对应产品目录下的Boardconfig.mk,在文件后面添加一行代码 USE_OPENGL_RENDERER := true; 2、修改device/softwinner对应产品目录下的crane_xxxx.mk文件中增加PRODUCT_PROPERTY_OVERRIDES特性 hwui.render_dirty_regions=false 例如:PRODUCT_PROPERTY_OVERRIDES += persist.sys.u***.config=mass_storage,adb ro.product.firmware=0.3 hwui.render_dirty_regions=false 修改完后重新编译即可 67,编译crane_sdk_v4.0.8-1到命令pack过不去 cp: cannot stat `/system/build.prop': No such file or directory cp: cannot stat `/system/media/bootanimation.zip': No such file or directory 检查在你的产品目录下是否存在这两个文件,build.prop是属性配置脚本,bootanimation.zip是开机动画 `/system/build.prop'这个文件在系统编译完成之后一定存在,请确认是否正常编译完成~ `/system/media/bootanimation.zip'开机动画可能不存在,但不会引起打包失败~ 68,android4.0 AndroidModify_V105_2012_0307 只能该bootlogo和开机logo , 动画,语音,国家,地区,型号改不了。 修改后,第一次启动后要重启才能生效 69,android 2.3.4 v2.05版本,系统不能恢复出厂设置 在system/vold/volume.cpp中,用下面程序替换这个函数 formatVol int Volume::formatVol() { if (getState() == Volume::State_NoMedia) { errno = ENODEV; return -1; } else if (getState() != Volume::State_Idle) { errno = EBUSY; return -1; } if (isMountpointMounted(getMountpoint())) { SLOGW("Volume is idle but appears to be mounted - fixing"); setState(Volume::State_Mounted); // mCurrentlyMountedKdev = XXX errno = EBUSY; return -1; } bool formatEntireDevice = (mPartIdx == -1); char devicePath[255]; dev_t diskNode = getDiskDevice(); dev_t partNode = MKDEV(MAJOR(diskNode), (formatEntireDevice ? 1 : mPartIdx)); setState(Volume::State_Formatting); int ret = -1; // Only initialize the MBR if we are formatting the entire device if (formatEntireDevice) { sprintf(devicePath, "/dev/block/vold/%d:%d", MAJOR(diskNode), MINOR(diskNode)); SLOGI("init mbr %s (%s)", getLabel(), devicePath); if (initializeMbr(devicePath)) { SLOGE("Failed to initialize MBR (%s)", strerror(errno)); goto err; } } getDeviceNodes(&partNode, 1); sprintf(devicePath, "/dev/block/vold/%d:%d",MAJOR(partNode), MINOR(partNode)); if (mDebug) { SLOGI("Formatting volume %s (%s)", getLabel(), devicePath); } if (Fat::format(devicePath, 0)) { SLOGE("Failed to format (%s)", strerror(errno)); goto err; } ret = 0; err: setState(Volume::State_Idle); return ret; } 70,android系统上有屏闪现象 android2.3和android4.0都有 目前android2.3.4 v2.05系统上发现客户上是背光电路少了滤波电容,将该电容接上,问题改善。 71,出现“加密失败”,是什么原因,怎么解决? 在第一次升级后起来,此时断电,在重新开机,会显示“加密失败”。 什么加密?具体什么环境,请描述全面一点 72,更新android2.3的最新2.0.5的时候报错 在外部服务器上更新最新的2.3版本2.0.5,使用git pull后提示出错 具体信息是很多内容出现conflict 由于最近的一次patch操作发布有点问题,导致版本有回退 所以在git pull报错的时候可以通过如下步骤解决: git reset --hard HEAD^ git pull 73,android 4.0 v1.0版本,摄像头录像时会退出 提示相关的打印信息是: D/SurfaceView( 637): pckname = com.android.camera D/CameraHardware( 87): new_preview_format : yuv420sp D/CameraHardware( 87): new_picture_format : jpeg D/dalvikvm( 637): GC_CONCURRENT freed 142K, 6% free 7531K/8007K, paused 2ms+2ms D/dalvikvm( 637): GC_FOR_ALLOC freed 32K, 7% free 7652K/8199K, paused 20ms I/dalvikvm-heap( 637): Grow heap (frag case) to 7.962MB for 331516-byte allocat ion D/dalvikvm( 637): GC_FOR_ALLOC freed <1K, 8% free 7976K/8583K, paused 20ms E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found E/MediaProfiles( 637): The given camcorder profile camera 0 quality 1001 is not found W/dalvikvm( 637): threadid=13: thread exiting with uncaught exception (group=0x 409da1f8) E/AndroidRuntime( 637): FATAL EXCEPTION: Thread-70 E/AndroidRuntime( 637): java.lang.RuntimeException: Error retrieving camcorder profile params 主要是在media_profiles.xml文件中,从android4.0 v1.0开始,添加了timelapse功能,比如之前有一段是这样配置的: bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> 没有配置timelapse功能,所以在v1.0版本上开始录像时会报上面的错误,导致摄像头程序退出。在上面那一段下面添加下面一段就可以解决该问题了: bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> bitRat widt heigh frameRat /> bitRat sampleRat channels="1" /> 74,如何在4.0系统上配置卡的uart输出 修改device下的对应平台目录的pactage.sh,修改如下 --- ./pack -c sun4i -p crane -b evb-v13 +++ ./pack -c sun4i -p crane -b evb-v13 -d card0 75,v1.0版本提示init:no such service "wpa_supplicant" 升级v1.0后,wifi不可用,提示: init:no such service "wpa_supplicant" 因为v1.0中讲原来在crane-common的init.rc中的wifi服务移动到各平台 的init.sun4i.rc,因此需要在平台的rc中添加wifi服务: # wifi related service service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin class main socket wpa_wlan0 dgram 660 wifi wifi group system wifi inet disabled oneshot 76,android 4.0升级到v1.0 蓝牙不能用 看打印信息,提示权限问题,但是,在init.sun4i.rc里面又有设置权限 在init.sun4i.rc中,由于更新到v1.0版本,在设置bluetooth相关权限之前,添加了这一段: # wifi related service service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin class main socket wpa_wlan0 dgram 660 wifi wifi group system wifi inet disabled oneshot 所以导致bluetooth的权限设置不成功。把这段放到设置权限的后面,即可解决该问题。 77,android4.0摄像头界面,点设置会退出 客户板子上只有一摄像头,但是在camera.cfg文件里面配置成了两个,改成一个摄像头的配置就好了 78,Music与Gallery菜单不识别U盘文件 放在U盘里面的文件,在music等应用中看不到 主要因为目前不是默认扫描U盘等USB host设备所致。 若要设置默认扫描,则可以进行如下修改: frameworksbasepackagessettingsproviderresvaluesDefaults.xml内的 “def_is_scan_u***_host”变量的值由“false”改成“true”。 79,为什么背光调节调到最亮变黑了? a10+android4.0 系统: pwm那里有点问题.调整pwm时发现调到最高,应该是输出高电平,但是现在却直接变低电平了. 这是因为客户那边屏的datasheet不对,导致屏的参数设置不对。 刚开始是: lcd_pwm_freq = 14200 后来改为: lcd_pwm_freq = 210000 之后问题就不存在了。 80,u***_drv_vbus_gpio可以从PH3 改为 PH2吗? 在layout一个新板时用到USB2, evb上是: u***_drv_vbus_gpio = port:PH3<1><0> 可以改为PH2吗?目前PH2没别的功能用的 可以,只要PH2没有被占用。 81,如何让超清播放器中的缩略图保持原始宽高比 现在的缩略图会被拉伸 修改packages/apps/Gallery2/src/com/android/gallery3d/data/UriImage.java文件约210行处 if (mType == MediaItem.TYPE_MICROTHUMBNAIL) { bitmap = BitmapUtils.resizeDownAndCropCenter(bitmap, targetSize, true); } else { bitmap = BitmapUtils.resizeDownBySideLength(bitmap, targetSize, true); } 改为 if (false) { bitmap = BitmapUtils.resizeDownAndCropCenter(bitmap, targetSize, true); } else { bitmap = BitmapUtils.resizeDownBySideLength(bitmap, targetSize, true); } 修改packages/apps/Gallery2/src/com/android/gallery3d/data/ImageCacheRequest.java文件约70行 if (mType == MediaItem.TYPE_MICROTHUMBNAIL) { bitmap = BitmapUtils.resizeDownAndCropCenter(bitmap, mTargetSize, true); } else { bitmap = BitmapUtils.resizeDownBySideLength(bitmap, mTargetSize, true); } 改为 if (false) { bitmap = BitmapUtils.resizeDownAndCropCenter(bitmap, mTargetSize, true); } else { bitmap = BitmapUtils.resizeDownBySideLength(bitmap, mTargetSize, true); } 82,android2.3的2.0.5版本出现开机花屏问题 该问题确认为发布时文件修改导致,造成lcd0_ch0的时钟无法设置,只能采用boot的设置值 因此某些屏上就出现了花屏现象,后续版本或补丁会修复此事 83,系统在关机后一定时间内自动启动 目前支持RTC唤醒系统的功能,但这一部分官方发布的linux内核还存在bug,导致在关机时RTC唤醒了系统,从而重启; 现在提供一个临时的解决方法,禁掉RTC中断功能,彻底的解法还在处理中; 临时解决方法的弊端:闹钟功能无法正常使用,无论是开机状态、待机状态等等; 更新rtc-sun4i.c文件(留意前面有‘+’号的更新): diff --git a/drivers/rtc/rtc-sun4i.c b/drivers/rtc/rtc-sun4i.c index 4ee00e9..85b46e3 100755 --- a/drivers/rtc/rtc-sun4i.c +++ b/drivers/rtc/rtc-sun4i.c @@ -112,6 +112,7 @@ static void __iomem *sunxi_rtc_base; static int sunxi_rtc_alarmno = NO_IRQ; static int losc_err_flag = 0; +#ifdef F23_ALARM /* IRQ Handlers, irq no. is shared with timer2 */ static irqreturn_t sunxi_rtc_alarmirq(int irq, void *id) { @@ -159,6 +160,7 @@ static void sunxi_rtc_setaie(int to) break; } } +#endif /* Time read/write */ static int sunxi_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm) @@ -403,6 +405,7 @@ static int sunxi_rtc_settime(struct device *dev, struct rtc_time *tm) return 0; } +#ifdef F23_ALARM static int sunxi_rtc_getalarm(struct device *dev, struct rtc_wkalrm *alrm) { struct rtc_time *alm_tm = &alrm->time; @@ -527,6 +530,7 @@ static int sunxi_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm) return 0; } +#endif static int sunxi_rtc_open(struct device *dev) { @@ -544,18 +548,26 @@ static const struct rtc_class_ops sunxi_rtcops = { .release = sunxi_rtc_release, .read_time = sunxi_rtc_gettime, .set_time = sunxi_rtc_settime, +#ifdef F23_ALARM .read_alarm = sunxi_rtc_getalarm, .set_alarm = sunxi_rtc_setalarm, +#endif }; static int __devexit sunxi_rtc_remove(struct platform_device *pdev) { - struct rtc_device *rtc = platform_get_drvdata(pdev); + struct rtc_device *rtc = platform_get_drvdata(pdev); + +#ifdef F23_ALARM free_irq(sunxi_rtc_alarmno, rtc); +#endif + rtc_device_unregister(rtc); platform_set_drvdata(pdev, NULL); - + +#ifdef F23_ALARM sunxi_rtc_setaie(0); +#endif return 0; } @@ -621,6 +633,8 @@ static int __devinit sunxi_rtc_probe(struct platform_device *pdev) ret = PTR_ERR(rtc); goto err_out; } + +#ifdef F23_ALARM ret = request_irq(sunxi_rtc_alarmno, sunxi_rtc_alarmirq, IRQF_DISABLED, "sunxi-rtc alarm", rtc); if (ret) { @@ -628,10 +642,20 @@ static int __devinit sunxi_rtc_probe(struct platform_device *pdev) rtc_device_unregister(rtc); return ret; } +#endif sw_rtc_dev = rtc; - platform_set_drvdata(pdev, rtc);// + platform_set_drvdata(pdev, rtc); + /*clear the alarm count value!!!*/ + writel(0x00000000, sunxi_rtc_base + SUNXI_RTC_ALARM_DD_HH_MM_SS_REG); + /*clear the alarm irq when init*/ + writel(0x00000000, sunxi_rtc_base + SUNXI_ALARM_EN_REG);//0x114 + /*clear the alarm irq*/ + writel(0x00000000, sunxi_rtc_base + SUNXI_ALARM_INT_CTRL_REG);//0x118 + /*Clear pending count alarm*/ + writel(0x00000003, sunxi_rtc_base + SUNXI_ALARM_INT_STATUS_REG);//0x11c + return 0; err_out: @@ -696,3 +720,4 @@ MODULE_DESCRIPTION("Sochip sunxi RTC Driver"); MODULE_AUTHOR("ben"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:sunxi-rtc"); 在C版A10软件上替换附件中的同名文件,否则会出现关机自动重启问题 Android2.3替换licheelinux-2.6.36driversrtcsun4i下的rtc-sw.c Android4.0替换licheelinux-3.0driversrtc下的rtc-sun4i.c 84,如何修改:设置--显示--重力感应坐标系? 问一下,现在客户要求设置--显示--重力感应坐标系-- 里面,默认选择的是“默认坐标系”,而不是“特殊坐标系”,要改哪里? 修改位置: android4.0: framework/base/packages/settingprovider/res/values/default.xml android2.3.4: android2.3.4devicesoftwinnercrane-commonoverlayframeworksbasepackagesSettingsProviderresvaluesdefault.xml 85,a10 NAND支持列表中:使用前请联系原厂更新固件,什么意思? 由于支持列表不断在更新,且以最新软件为准 如果固件不够新则可能没法支持所有列表中的型号 86,android2.3.4有mkfs.sh,android4.0.3对应文件在哪? 2.3.4的时候,有个mkfs.sh可以确定copy哪个驱动到系统里面,4.0.3好像没看到这个文件,是在哪里copy的? 4.0是用extract-bsp来做拷贝工作的, 见脚本 devicesoftwinnercommonvendorsetup.sh cp -rf $LINUXOUT_MODULE_DIR modules/modules 会拷贝这目录下所有的文件: licheeoutandroidlibmodules3.0.8+ 如果想新添加一个驱动,就可以把驱动放进上面目录 87,低电充电时,触摸屏容易误点或跳点 不充电时也会有,但充电时更明显 主要因触摸屏***扰导致,充电时更明显是因为充电源的干扰相对较大。 此问题主要从两个方面解决: 1 |
|
|
|
只有小组成员才能发言,加入小组>>
4542个成员聚集在这个小组
加入小组3343 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4270 浏览 1 评论
4299 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 08:48 , Processed in 0.528722 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号