android

Eclipse配合ADT为Android项目添加Proguard混淆的简单新方法

之前我曾经写过一篇如何为用ADT创建的Android项目添加Proguard混淆支持的文章(
为Eclipse ADT创建的android项目通过ant添加proguard混淆支持
),当时我就说过,相信随着Google Android的不断更新发展以及Eclipse ADT插件的不断改进,总有一天,做Android项目时能够和J2ME项目一样方便的一键打包混淆。现在新版的SDK和ADT就已经添加了这样的功能(SDK Tools中已经整合了Proguard的发行包,连这步配置都省了!),虽然还不是一键,但也就是小改一个配置文件的事,相对以前的手改ant xml build file的做法来说已经是极大的简化了添加混淆支持的难度了。

先说说我写这篇文章时用的开发环境:Eclipse 3.5.2+ADT 9.0.0+SDK Tools R9+SDK Platform-tools R2。

声明我不保证在其他版本的IDE ADT和SDK Tools下我的方法是否可行且不会产生问题!

Continue reading…

Android中用MediaPlayer播放ogg的loop问题

经测试(2.1真机)发现使用MediaPlayer播放ogg音乐文件时的貌似无效,翻了一下google论坛发现是个undocumented问题,实际影响loop的是ogg中的一个metadata:ANDROID_LOOP,当这个被设为true的时候,无论怎么设置player的loop都不会有不loop的结果,记录一下。

支持C++标准库的Android NDK CrystaX!

最近在研究Box2D物理引擎在Android上的应用时,发现直接用NDK移植C++版本时遇到了一些STL库的问题,类似b2BroadPhase.h中的:
// Sort the pair buffer to expose duplicates.
std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);
这里,其它地方通过直接替换标准c函数还好解决,这种需要STL库的用法就不好办了。在Box2D的论坛上发现有人提到有个叫CrystaX的第三方版本的NDK,整合了C++标准库,可以直接在不修改任何源码的情况下编译Box2D!
下载地址:http://www.crystax.net/android/ndk.php

HTC Legend G6的恢复出厂设置方法

在Legend上用电子市场(Android Market)下载软件的时候误绑了Google Account,想删掉,结果发现提示什么有程序正在使用这个账号只能通过恢复出厂设置的方式清除。网上有朋友说可以通过清除应用程序管理里Google企业应用套件的保存数据的方式做到,结果发现这个G6的Google App里根本没有提到的清除选项,无奈只好恢复出厂设置,结果执行了之后一直卡在 正在重启 这个弹板这里,仔细看了一下后面好像有个什么对话框弹出来,但焦点已经被锁定了看不清后面到底提示的什么。最后在htc官网上找到了通过重启机器进类似bios的东西清掉的方法:
Performing a factory reset using phone buttons
If you cannot turn on your phone or access the phone settings, you can still perform a factory reset by using the buttons on the phone.

With the phone turned off, press and hold the VOLUME DOWN button, and then briefly press the POWER button.
Wait for the screen with the three Android images to appear, and then release the VOLUME DOWN button..
Press VOLUME DOWN to select CLEAR STORAGE, and then press POWER.
Press VOLUME UP to start the factory reset.

为Eclipse ADT创建的android项目通过ant添加proguard混淆支持

假设已有ADT创建的android项目HelloAndroid并且已经有可用的proguard混淆器(我用的proguard4.4)。
第一步要做的是为项目添加ant build支持。由于ADT插件并不直接支持proguard等混淆器,所以不能像j2me那样在有功能比较完善的插件(如EclipseME等)的基础上直接一键混淆一键打包,不过好在android sdk本身提供了比较完善的ant编译支持,可以通过类似命令行编译的方式,对android项目的整个编译、生成过程进行自定义,从而能够实现对编译中途生成的java bytecode进行插入proguard混淆操作然后再转android dex码生成apk。
进入命令行模式,并切换到项目目录,执行如下命令为ADT创建的项目添加ant build支持:
Continue reading…

发现一个代理发布Android Market付费App的网站

目前的Android Market只对少数几个国家的developer开放paid app的注册发布,很遗憾其中没有我们伟大的祖国,而且即使是想花25$入伙并且只发布free app的话,那些可用国家列表里也没有我们伟大的祖国,残念…。当然,可以选择HongKong过这关,但貌似Android Market对这方面的验证还是比较严格的,当初找国外朋友帮助注册的时候门槛费想用自己的信用卡付,结果就被发现了,直接封掉了帐号!

今天偶然间发现Google广告里有个号称提供Android Market代理发布付费app的网站:http://www.androidpublisher.com/,进去看了下,做的挺简陋,就是简单说明了一下意图,以及如何收代理费:GG剥削30%,代理剥削19%,剩下的大概一半归发布者。虽然不知道可不可靠,但感觉国内的Android开发者还是有一定的数量的,有兴趣的朋友可以投石问路一下。

Android中OpenGL ES开启DEBUG_CHECK_GL_ERROR DEBUG_LOG_GL_CALLS的2个小发现

发现1:当开启DEBUG_LOG_GL_CALLS的时候,会判断所有原本运行正常的glDrawArrays出现数组越界的异常,修改了几下,发现开启log calls后,会多读1个点的数据,也就是最后一个参数的count+1,所以原本正常长度的顶点数组会被访问越界,不晓得为何会这样。

发现2:在真机上使用vbo的时候,如果开了debug,会导致在调用vbo相关gl函数的时候出现unsupported操作异常,可实际vbo功能却执行的好好的,同样不晓得为何会这样。

Controlling the Android Emulator

Emulated Device Key Keyboard Key
Home HOME
Menu (left softkey) F2 or Page-up button
Star (right softkey) Shift-F2 or Page Down
Back ESC
Call/dial button F3
Hangup/end call button F4
Search F5
Power button F7
Audio volume up button KEYPAD_PLUS, Ctrl-5
Audio volume down button KEYPAD_MINUS, Ctrl-F6
Camera button Ctrl-KEYPAD_5, Ctrl-F3
Switch to previous layout orientation (for example, portrait, landscape) KEYPAD_7, Ctrl-F11
Switch to next layout orientation (for example, portrait, landscape) KEYPAD_9, Ctrl-F12
Toggle cell networking on/off F8
Toggle code profiling F9 (only with -trace startup option)
Toggle fullscreen mode Alt-Enter
Toggle trackball mode F6
Enter trackball mode temporarily (while key is pressed) Delete
DPad left/up/right/down KEYPAD_4/8/6/2
DPad center click KEYPAD_5
Onion alpha increase/decrease KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)

模拟器只能在尚未运行的时候通过设置界面调整屏幕大小,位置等信息,运行时并没有提供菜单或者其他UI进行调整,比如想切换landscape模式,就得通过上面的快捷键实现了。