ubuntu发现不了android设备的高级解决办法

首先如果你按照官方的做法,发现不了android设备的话,这个方法可能可以帮助你,官方的方法可以看这个网址http://source.android.com/source/initializing.html的Configuring USB Access 或许有些朋友会觉得这个方法not work,就像我这样,adb device死活检测不到设备,我也百思不得其解,我开始怪这个设备不好,因为其他的设备都能检测出。 但是有点不心死,去google找找是不是别人你同样遭遇,结果,在stackoverflow找到相同遭遇的人,并有热心大牛给出了方法,网址可见这里:http://stackoverflow.com/questions/6484279/detecting-device-for-debugging-adb-does-not-work 我把方法搬运到这个blog里吧 首先是查看你的设备的vendorid,相信经过以前的折腾,你会记得lsusb这个命令 :::sh Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 007: ID 2207:0006 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 看到我的设备usb的vendorid是2207,然后打开~/.android/adb_usb.ini这个文件,没有就创建一个吧。添加下面的内容 :::sh 0x2207 没错就是填入vendorid。这样后adb kill-server然后再adb devices,应该就可以看到设备了。 然后大牛还有个友情提醒,更新sdk,这个文件可能会被覆盖,请重新上述步骤。

March 26, 2013

android:NDK调用系统接口的版本兼容问题

私有开源项目gplayer是一个android多功能播放器,其中画面显示调用本地接口surface和skia,音频播放调用了audiotrack。最大的问题是android每个版本的库和头文件都会不一样,不能做到编译一次,运行所有版本的目的。现在参考了另一个开源项目andless的做法,为调用android的本地库做一些兼容工作。 基本思想 开始时是直接调用surface和audiotrack的api,现在要把调用audiotrack和surface的api写在另外一个cpp文件中,就像给这些api包装了一下,然后单独给这个cpp编译成so,这个so是和系统库相关的,例如支持android2.3.3的so叫做audiotrack10.so和surface10.so。接着,我们的播放器根据系统的版本调用相应的so来完成功能。 具体实现 现在以audiotrack为例子说明一下。这里只截取了部分代码,用来说明问题,有兴趣可到我的github页面下载整个工程。 #define FROM_ATRACK_CODE 1 #include "audiotrack.h" #define TAG "AudioTrackWrapper" namespace android { extern "C" { static AudioTrack* track; int AndroidAudioTrack_register() { __android_log_print(ANDROID_LOG_INFO, TAG, "registering audio track"); track = new AudioTrack(); if(track == NULL) { return ANDROID_AUDIOTRACK_RESULT_JNI_EXCEPTION; } __android_log_print(ANDROID_LOG_INFO, TAG, "registered"); return ANDROID_AUDIOTRACK_RESULT_SUCCESS; } }// extern "C" }; //namespace android 可以看到只要我们调用了AndroidAudioTrack_regisger就可以获得一个audiorack对象。注意到在#include "audiotrack.h"前面出现的宏定义了吗?这是一个重点内容,我们看看audiotrack.h里面是什么东东。 #ifdef __cplusplus extern "C" { #endif #ifdef FROM_ATRACK_CODE int AndroidAudioTrack_register(); #else int (*AndroidAudioTrack_register)() __attribute__((weak)); #endif #ifdef __cplusplus } #endif Info 对于__attribute__不熟悉的话可以google一下,这里是声明了弱符号 好了,如果定义了FROM_ATRACK_CODE这个宏,包含的这个头文件就是简单的函数声明,如果没有这个宏,就定义一个AndroidAudioTrack_register的函数指针,这样做的作用是什么呢?看看我们是如何调用这个api的把。 ...

March 20, 2013

ubuntu12.04不能连接cmcc等热点的解决办法

出现的现象是可以连接ChinaNet,但是连接不上cmcc,公司的路由也连接不上,上网搜索,说是ubuntu12.04的网卡驱动没有支持11n,具体没有深究,这里给出了解决方法。 解决方发其实就是禁用无线的11n,首先是打开文件/etc/modprobe.d/iwlwifi-disable11n.conf,没有的话就建立一个把。填入以下内容。 :::java options iwlwifi 11n_disable=1 接着重启计算机,连上应该就可以了,亲测可行。

March 16, 2013

just for today

Just for today I will try to live through this day only and not tackle my whole life problem at once. I can do something for twelve hours that would appall me if I had keep it up for a lifetime. Just for today I will be happy, This assumes to be true what Abraham Lincoln said, that “Most folks are as happy as they make up their minds to be.” ...

March 14, 2013

为android编译ffmpeg

之前的教程是在桌面系统上实现的,由于系统已经为我们提供好了相关的库,所以我们之需要调用库的接口就可以使用ffmpeg为我们提供的功能了。但是我们现在需要在android系统上面调用这些函数,ffmpeg没有为我们提供可在android上运行的动态链接库。这时候我们需要。 此次移植的是ffmpeg0.11.2,使用的编译工具是android提供的android-r8d,编译脚本与Android.mk参考了abitno。 First of the first,我们需要在ffmpeg主页下载源代码。到目前为止,ffmpeg的版本已经发展到了1.1.3,可我们的目标却是0.11.2,真是个固步自封的熊孩子。说话回来,我们不是在追求最新,只是追求可用。 ffmpeg的链接: http://www.ffmpeg.org/download.html,其实ffmpeg已经把代码托管到github,把github的版本库拉回来,想用哪个版本就切换到那个版本会更方便点。 ##config.h config.h是一个很重要的配置文件,但是这个文件不是手工编写或者默认提供,而是需要通过configure得到。configure又是如何使用的?ffmpeg源代码目录敲入命令./configure --help,可以列出configure的相关选项。下面我提供了一个脚本,里面记录了configure的选项,只要我们运行脚本,就会配置ffmpeg了。 :::sh #!/bin/sh ANDROID_NDK=/home/gavin/android-ndk-r8d SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm TOOLCHAIN=`echo $ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86` export PATH=$TOOLCHAIN/bin:$PATH FLAGS="--target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm --cpu=armv7-a " FLAGS="$FLAGS --sysroot=$SYSROOT" FLAGS="$FLAGS --disable-avdevice --disable-static --enable-shared --disable-ffplay --disable-doc --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-avfilter --disable-encoders --disable-muxers --disable-filters --disable-devices --enable-version3 --enable-asm --enable-neon " EXTRA_CFLAGS="-I$ANDROID_NDK/sources/cxx-stl/system/include" EXTRA_CFLAGS="$EXTRA_CFLAGS -fPIC -march=armv7-a -mfloat-abi=softfp -mfpu=neon" #EXTRA_CFLAGS="$EXTRA_CFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16" EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -nostdlib" EXTRA_CXXFLAGS="-Wno-multichar -fno-exceptions -fno-rtti" ABI="armeabi-v7a" echo $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" --extra-cxxflags="$EXTRA_CXXFLAGS" > info.txt ./configure $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" --extra-cxxflags="$EXTRA_CXXFLAGS" | tee configuration.txt Info 把libavutil/libm.h里面的static方法注释掉 ...

March 10, 2013