当我尝试使用Android studio将应用程序推送到我的设备时,我在AS中获得了以下日志读数,大约80%的时间.有线索吗?
Waiting for device.
Target device: htc-htc_one_m8-FA43NWM07298
Uploading file
local path: /Users/Pete/Development/github/myApp/app/build/outputs/apk/myApp_debug.apk
remote path: /data/local/tmp/com.my.app
Installing com.my.app
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.my.app"
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String android.os.SystemProperties.native_get(java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Ljava_lang_String_2)
at android.os.SystemProperties.native_get(Native Method)
at android.os.SystemProperties.get(SystemProperties.java:52)
at com.htc.customization.HtcCustomizationManager.<init>(HtcCustomizationManager.java:65)
at com.htc.customization.HtcCustomizationManager.<clinit>(HtcCustomizationManager.java:60)
at android.os.Environment$UserEnvironment.getCustomizationReader(Environment.java:523)
at android.os.Environment$UserEnvironment.isDynamicSwitchSupported(Environment.java:534)
at android.os.Environment$UserEnvironment.<init>(Environment.java:222)
at android.os.Environment.initForCurrentUser(Environment.java:142)
at android.os.Environment.<clinit>(Environment.java:136)
at android.os.Environment.getLegacyExternalStorageDirectory(Environment.java:726)
at android.os.Debug.<clinit>(Debug.java:96)
at android.ddm.DdmHandleHello.handleHELO(DdmHandleHello.java:164)
at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:91)
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
java.lang.UnsatisfiedLinkError: android.os.Debug
at android.ddm.DdmHandleHello.handleFEAT(DdmHandleHello.java:176)
at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:93)
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
java.lang.UnsatisfiedLinkError: android.os.Debug
at android.ddm.DdmHandleProfiling.handleMPRQ(DdmHandleProfiling.java:215)
at android.ddm.DdmHandleProfiling.handleChunk(DdmHandleProfiling.java:106)
at …Run Code Online (Sandbox Code Playgroud) 当我尝试在Verizon的4G/LTE上使用我的应用程序时,我收到了一些崩溃用户的报告.
查看堆栈跟踪,看起来Android的HttpClient.execute()实现正在抛出一个OOM.这仅发生在4G/LTE设备上,特别是HTC Thunderbolt,并且仅在4G/LTE上.WiFi,3G,UMTS都可以.也适用于Sprint的WiMax 4G工作正常.
两个问题:
什么是引起Android开发者注意的最佳方式?除了在http://code.google.com/p/android/issues上报告之外,还有哪些更好的选择?
关于如何解决这个问题的任何想法?我自己没有4G设备,我无法在模拟器中实现这一点,所以我需要在这里做一些有根据的猜测.我可以尝试在我的代码中捕获OOM并尝试清理并强制GC,但我不确定这是不是一个好主意.评论或其他建议?
这是我的代码正在做的事情:
HttpParams params = this.getHttpParams(); // returns params
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, this.getHttpSchemeRegistry() );
DefaultHttpClient httpClient = new DefaultHttpClient( cm, params );
HttpResponse response = null;
request = new HttpGet( url );
try {
response = httpClient.execute(request); // <-- OOM on 4G/LTE. OK otherwise
int statusCode = response.getStatusLine().getStatusCode();
Log.i("fetcher", "execute returned, http status " + statusCode );
...
Run Code Online (Sandbox Code Playgroud)
这是崩溃的堆栈跟踪:
E/dalvikvm-heap(11639):2055696字节分配的内存不足.I/dalvikvm(11639):"Thread-16"prio = 5 tid = 9 RUNNABLE I/dalvikvm(11639):| group ="main"sCount = …
我在Android上使用Camera API,并使我的代码可以在包括Samsung Galaxies和HTC Desire在内的多个平台上运行.到目前为止,我只是在HTC Desire Z上遇到问题,这是间歇性的.
在我的代码中,我正在调用以下指令
camera.startPreview();
camera.autoFocus(autoFocusCallback);
Run Code Online (Sandbox Code Playgroud)
我已经创建了所需的autoFocusCallback类.我想再次强调一下,这段代码适用于手机,包括我遇到问题的手机,所以不要仔细检查代码.:)在调用回调之后,我的代码继续拍摄照片,但那部分现在无关紧要.
间歇性问题是对于某个随机图片(在20-100次中发生一次),回调不会发生.我已经用我自己的Log.i()验证了这是执行的最后一个命令(即代码没有进入回调).调试还显示没有报告错误.
为了让您放心,我的回调看起来像这样
AutoFocusCallback autoFocusCallback = new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
Log.i("tag","this ran");
...
...
}
};
Run Code Online (Sandbox Code Playgroud)
成功运行的Logcat结果看起来像这样
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): startPreview X
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): autoFocus E
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): autoFocus X
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): runAutoFocus E
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): af start (fd 49)
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): native_set_afmode: ctrlCmd.status == 0
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): af done: 1
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): runAutoFocus X
07-12 10:17:51.184: …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中已经看到这个问题了一段时间.它通过随机硬锁或重启HTC手机在使用OpenGL进行渲染时显示出来.检查logcat它似乎是一个死锁问题,因为你会看到这个打印...
waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够找到的最佳信息来源是:http: //groups.google.com/group/android-developers/browse_thread/thread/d5b7e87f4b42fa8f/d6214ed7a02efc98?q = free&lnk = ol&
他们建议在glSurface的OnDraw函数末尾添加glFinish.我使用这个解决方案没有很好的结果(它仍然崩溃,但不常见).还有其他人听说过这个问题吗?遇到任何更好的解决方案?
这是一个场景.有文件夹:
图像(通常是背景,但不仅限于此类图像)仅位于其中/res/drawable.
我在Galaxy S3上测试应用程序并正确显示背景.我在HTC One X上测试并且没有显示背景图像.
如果我将图像复制/res/drawable到/res/drawable-xhdpi,则One X将显示图像.
从逻辑上思考,这不应该发生,对吧?!如果没有图像drawable-xhdpi,那么Android应该将其查看到其他文件夹,直到它达到默认值,/res/drawable并且它应该从那里拉出来.
为什么在某些手机上没有发生这种情况?
PS.我注意到一些平板电脑存在同样的问题,但我现在不记得哪些平板电脑了.
PPS.我在这里提到了背景图片,但问题并没有受到约束.它也与其他图像一起发生.我知道xhdpi手机有大图像的问题,我不希望你认为问题是背景图像太大.它也会出现在"正常"大小的其他图像中.
问题:某些Android设备(在问题的底部列出)在使用setOrientationHint(int degrees)前置摄像头拍摄的视频功能时会出现意外行为.预期的行为是视频顺时针旋转,但这些设备逆时针旋转视频.
我的目标:在摄像机设置或硬件方向内识别变量,使我能够预测何时会发生这种情况.具体来说,我想避免在我的代码中特别包装这些手机!
进一步说明:我正在使用标准MediaRecorder对象录制视频,在准备录制时,我使用了设置视频的方向setOrientationHint().在文档中setOrientationHint(),为degrees参数指定了以下内容:
degrees - 以度为单位顺时针旋转的角度.支持的角度为0°,90°,180°和270°.
该功能旨在添加包含旋转角度的合成矩阵,以便视频播放器可以按预期显示视频.所以,我所做的是使用CameraInfo类获取相机硬件的方向,并将其用作fn中的degrees参数setOrientationHint.(我已尝试使用AOSP作为指南对此代码进行修改,但我的结果完全相同.)
一个真实示例:三星Galaxy S3前置摄像头(事实上大多数其他摄像头)的硬件方向为270,所以我在录制时会使用它,并且生成的视频会正确显示.HTC Vivid同样会为同一台相机返回270的硬件方向,但只有degrees在setOrientationHintfn中使用90作为参数时才能正确显示.如果我像任何其他手机一样使用270硬件方向,则视频将颠倒过来.
注意:该setOrientationHint()功能包括警告:
请注意,某些视频播放器可能会选择在播放期间忽略视频中的合成矩阵.
然而,这不是正在发生的事情,因为如果我伪造它并放入90而不是270,我可以轻松地在这些手机上解决这个问题.
我见过的手机专门展示了这个问题:运行Android 4.0.3的HTC Vivid(PH39100),运行Android 4.0.3的HTC EVO 4G(PG86100),运行Android 2.3.4的HTC Thunderbolt(ADR6400L).请注意,它们都是HTC手机.也许HTC的某个人顺时针错误地逆时针方向错误.
我们的应用程序使用了很多位图.它适用于例如G1,XOOM.但是在HTC Desire上有一个OutOfMemory错误.在代码中我们使用try/catch(OutOfMemoryError e)并且所有设备(Desire除外)抛出异常,但HTC只是在没有OOM异常的情况下杀死应用程序.我们将位图的内存限制在12 Mb,似乎这个解决方案解决了这个问题,但客户在HTC Desire HD上仍有问题.即使有12 Mb的限制也有OOM.这是日志:
06-07 12:03:43.978 E/dalvikvm-heap( 29616):1140128-byte external allocation too large for this process.
06-07 12:03:43.978 E/dalvikvm( 29616):Out of memory: Heap Size=12311KB, Allocated=9420KB, Bitmap Size=12139KB, Limit=21884KB
06-07 12:03:43.978 E/dalvikvm( 29616):Trim info: Footprint=15751KB, Allowed Footprint=15751KB, Trimmed=3440KB
06-07 12:03:43.978 E/GraphicsJNI( 29616):VM won't let us allocate 1140128 bytes
Run Code Online (Sandbox Code Playgroud)
AFAIK设备有不同的堆大小限制(G1:16mb,Droid:24 mb,Xoom 48 mb).在我看来,系统应该至少提供16 MB,但我们有12 MB的OOM.我的问题是:如何找出Android 2的位图有多少可用堆大小?*?或者请建议如何以其他方式避免此类问题.仅供参考我们不能使用较少的位图,尤其是当它在其他设备上正常工作时.在此先感谢您的帮助!
我有一个Android应用程序,它有搜索文本框,一些按钮,webviews(1个可见2个不可见)和一个admob adview.该应用程序只搜索一些特殊网站,它在模拟器,三星galaxy设备上运行良好.但我对HTC One X有疑问(不了解其他HTC型号).
问题是,当您单击搜索按钮时,webview会加载页面.然后"有时"当你试图触摸甚至滚动时,webview只返回带有滚动条的全白区域.特别是在广告刷新后,会发生这 甚至有时候广告的背景和文字区域也会变成白色 - 也是不可读的.在广告上只是蓝色箭头和蓝色电话图像保持可见!
有没有人有这样的问题,以及任何解决方案?提前致谢.
这是我的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/layoutDashboard"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@drawable/border_shape"
android:orientation="vertical"
android:paddingTop="1sp" >
<EditText
android:id="@+id/editxtKeyword"
android:layout_width="fill_parent"
android:layout_height="43dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="2dp"
android:ems="10"
android:hint="@string/editxtKeyword_hint"
android:singleLine="true" >
</EditText>
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_gravity="center_vertical"
android:layout_weight="0.30"
android:paddingBottom="2dp"
android:paddingLeft="1dp"
android:scrollbars="none" >
<LinearLayout
android:id="@+id/layoutButtons"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_marginTop="0dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:orientation="horizontal" >
<
<Button
android:id="@+id/btnAk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="1dp"
android:background="@drawable/custom_button_shape"
android:text="asd" /> …Run Code Online (Sandbox Code Playgroud) 我有一个简单的输入字段,其maxlength ="2"属性.代码如下所示:
<input id="txtLoginName" maxlength="2">
Run Code Online (Sandbox Code Playgroud)
它适用于大多数Android设备.但是,在HTC One M7上,它不起作用.在这个设备上,它只允许我输入任意数量的字符.
有什么建议吗?我认为到目前为止它应该是一个特定于设备的问题.
提前致谢.
我根据SDK中的示例编写了自己的SyncAdapter.它应该从外部源添加联系人,它在设备模拟器中工作得很好.但是当我在HTC Desire上运行它后,我无法在Contacts-> Display选项中看到我的帐户
此外,我在Desire上尝试了谷歌的例子,也无法在这个列表中看到它们.有谁知道任何解决方案?