Posts tagged android

windows使用其他版本java

换到自己的笔记本上做安卓开发,出现了一个很烦人的问题,就是一直报 Can’t bind to local 86XX for debugger 这样一个错。网上查了一下,原因是jre7不兼容的问题,需要退回到jre6才行。我安装了jre6,又不想卸载jre7,就想,改了环境变量的PATH应该就好了吧。 JAVA_HOME = “C:\Program Files\Java\jre6” PATH = “…;%JAVA_HOME%\bin” 可是修改之后,进入命令行输入java -version一看,问题没有解决,还是java 1.7的版本。这很奇怪啊。 网上继续查了一下,原来java installer会把java.exe复制一份到windows/system32下面,而PATH的特点是先到先得,在系统目录找到java.exe后,就直接执行了。需要把jre\bin的目录在PATH中设置到系统目录之前,就解决问题了。 JAVA_HOME = “C:\Program Files\Java\jre6” PATH = “%JAVA_HOME%\bin;…” 顺带再骂一句java,每个主要版本升级都闹出一堆不兼容来,不知怎么想的。一处开发到处执行这个口号唉。。。不提。。 又记起那时候在公司配置Jira系统的痛苦了。。 参考 Can’t bind to local 86XX for debugger Windows ignores JAVA_HOME: how to set JDK as default?

难题:识别独立安卓设备

今天碰巧朋友问到我怎么识别独立的安卓手机,就花了一些时间琢磨了一下。 其实这个问题可以秒答,就是IMEI。 TelephonyManager.getDeviceId(); 这需要一个权限: <uses-permission android:name=”android.permission.READ_PHONE_STATE” /> 问题如果这么简单就好了,问题在于: 平板等其他设备,无SIM卡,因此无Telephony模块。 有些设备恢复出厂设置的操作会清空IMEI (水货硬解通常会导致这个结果) 参考这个硬解技术贴 参考这个恢复出厂设置不慎的操作案例 我国许多山寨手机厂商偷懒,刷机不改IMEI,所以IMEI都是一样的 因此其实问题从这里才开始。网上能够搜索到的解决方案有以下几点: – WIFI MAC 一个方案是优先采用IMEI,当IMEI相同时,再比较WIFI的MAC地址。但如果手机没有WIFI功能或者WIFI功能没有开启(飞行模式),则无法获取到MAC地址。更加让人惆怅的是,我国大山寨厂商实在是懒透了,无线网卡的MAC地址居然也不修改,不少自刷机的也是这病情(例如这个,这个还有这个)。至于说蓝牙MAC地址就更别说了。IMEI重复的病因,与MAC地址相同的其实是一个原因,都是刷机或山寨,所以这个wifi MAC地址的方案其实算不上互补了,必须另谋途径。 – Serial NO 另一个方案是用serial NO。这个值仅在android 2.3版本以上才提供支持。通过adb可以这样查看: adb shell getprop ro.serialno 代码中可使用系统变量android.os.Build.SERIAL访问。如果这个值能够取到这是仅次于IMEI的最好方法了。缺点是这个值在2.2及以下版本的android系统不支持。不过好在如今的安卓世界2.2及以下的占有率已经越来越低了,翻新速度很快,因此这个值很值得一试。 – Android id 其实安卓系统提供了Settings.Secure.ANDROID_ID来获取唯一设备号。 import android.provider.Settings.Secure; private String android_id = Secure.getString( getContext().getContentResolver(), Secure.ANDROID_ID); 但同样2.2以前的系统支持得不好。这个值是系统初次启动后生成的,因此恢复出厂设置后这个值会变,导致观测到的设备数虚高。在手机刷机、重置频繁的环境,这个值是不靠谱的。另外某大厂生产的设备居然有个BUG,这个值是会重复的(DROID2),因此这个值还是别用为好。 – generated UUID 最后还有一个自己生成UUID的办法,保存这个ID,每次访问服务器时上传,自己告诉系统自己是谁。这个方法比所有硬件方法都更不靠谱,因为只需卸载软件和清理数据就会导致这个值被删除,从而产生新的UUID,造成观测到的设备数量虚高。更别说刷机和恢复出厂设置了。这个方法非常适合用来统计软件安装次数,而非独立设备数。 结论 综上所述,目前为止我还没找到非常完美的统计独立设备的方案,尤其是在中国这个水货、硬解、山寨、刷机市场泛滥和不规范的安卓世界,更是难上加难。 但是反过来想,是不是一台完全刷新,安装了全新的ROM的手机,就已经不是原来的那台手机了呢?统计独立设备数的目的究竟是什么?如果要的是独立活跃设备数,其实用自己生成的UUID已经足够,因为原来使用的那个UUID已经失去活性,可以忽略了。对于APP开发者而言这个情况与用户换了一台手机,完全弃用旧手机的情况其实是一样的。假如是采取活跃UUID的方式,则即使是使用ANDROID_ID或者自己生成的UUID都是可取的做法了。 本文参考 [1] identifying-app-installations […]

android adb fail

adb 在我的机器上启动了无数监听线程…… 居然把我系统的网络缓冲区用光了…… 说实话,这还是头一次看到别人写的程序导致这种错误|||(一般都是咱自己搓是吧… 这叫做内存泄漏啊,这叫做套接字泄露啊,严重产品问题啊……adroid不能只注意产品质量,也要注意开发工具的质量啊,否则谁愿意给你做东西啊。

android sdk install fail

明明装了jdk的,各种环境变量配得好好的,android sdk就是不肯安装,说什么找不到jdk,哼。 网上查了半天,其实解决这种傲娇娘最简单的办法就是不理她。 点击back转身走开,然后再点next回来,她就什么都答应你了。 引用: http://kurtyu1209.blogspot.com/2011/03/android-sdk-jdk.html