Java, JavaScript

Eclipse ADT的Custom debug keystore所需证书规格

最近开始研究Google Play的In-app Billing IAB内置计费API,发现一个比较烦人的问题就是测试时应用必须经过正式签名,而默认Eclipse ADT调试运行使用的是临时生成的Debug专用证书,默认为C:\Users\XXX\.android\debug.keystore

于是每次调试内置计费必须使用ADT的Export Signed Application Package打带正式签名的包,比较麻烦。后来发现ADT允许自定义调试用证书,在Window->Preferences->Android->Build->Custom debug keystore这里,试了一下选择正式证书后提示:”Keystore was tampered with, or password was incorrect”,如下图所示:
Continue reading…

Android系统实现横竖屏两方向自动旋转的方法

Android系统不像iOS有shouldAutorotateToInterfaceOrientation:以及项目info.plist中的支持屏幕朝向属性设置那么直白的屏幕朝向支持,而且2.2以下和2.3以上还有对自动旋屏功能支持的差异:

在2.2一下,manifest中可以通过android:screenOrientation=”landscape”属性设置朝向,但这显然没有像iOS那样指明是landscape right还是landscape left,而且测试发现实际效果也只是锁定在了landscape的一个朝向,并不支持根据重力感应的两方向自动旋转。

在2.3及以上的target下,可以通过设置android:screenOrientation=”sensorLandscape”实现landscape的两方向自动旋转,为了同时兼容两种情况,可以采用以下的方法:

public static final int ANDROID_BUILD_GINGERBREAD = 9;
public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;

@Override
public void onCreate(Bundle savedInstanceState)
{
     super.onCreate(savedInstanceState);
     if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD)
     {
         setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
     }
}

MotoDroid的glTexSubImage2D作用贴图尺寸问题

之前用MotoDroid机器的时候曾经发现过一个比较恶心的事,就是glGenTextures函数生成的贴图ID是乱数的问题,后来发现GL官方也说不保证此函数返回值是连续正整数,也就罢了。这次又发现MotoDroid上的glTexSubImage2D函数问题,就是在获取gl信息中的最大贴图尺寸时,ME525和Milestone2都返回2048×2048(其它机型未测),但在贴图尺寸为2048×2048的时候调用glTexSubImage2Dj局部更新贴图时,会出现错误覆盖贴图已有内容的问题,而将贴图尺寸降为1024×1024后就不会出现这种问题了。

Android真机执行ndk-gdb后出现”found running pid:0 could not extract pid of application…”的解决方法

先说出这问题时的周遭环境:

Android SDK Tools r12
Android SDK Platform-tools r6
Android NDK r6
HTC G10 DesireHD(root)
Eclipse 3.7 Indigo
ADT 12.0.0
Windows XP SP3

问题描述:按着Sequoyah Native Debug的教程走,到执行ndk-gdb起服务的时候,提示”found running pid:0 could not extract pid of application…”说找不到程序的PID(顺带一提,之前还有一次是提示could not extract package’s data directory…,经查发现原因应该是设备没有root),执行adb shell ps发现要调试程序的进程就在那里,PID也看到正常,为什么ndk-gdb说获取不到PID呢?

Continue reading…

[ZT]如何解决:Android中 Error generating final archive: Debug Certificate expired on … 的错误

问题概述:

在导入一个app后提示如下错误:

“Error generating final archive: Debug Certificate expired on 10/09/18 16:30”

 

原因分析:

android要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,adt使用debug keystore,在 preference->android->buid中设置。debugkeystore默认有效期为一年,如果你是从一年前开始完android程序,那么在一年后导入这个app的时候很可能出现debug keystore过期,导致你无法生成 apk文件。

此时你只要删除debug keystore就行,系统又会为你生成有效期为一年的私钥。

 

解决方法:

进入C:\Documents and Settings\Administrator\.android 删除路径下的debug.keystore及 ddms.cfg。

(不同环境下的目录可能略有不同,可在eclipse中查找此路径:Window->Preferences->Android->Build下 Default debug keystore)

然后重新导入即可。

原文:http://www.cnblogs.com/yyangblog/archive/2011/01/07/1929657.html

为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中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模式,就得通过上面的快捷键实现了。