大家好。这是我在StackOverflow上的第一篇文章,虽然我已经使用这个网站好几年了。通常我可以通过引用其他人提出的问题找到我可能遇到的任何疑问的答案;然而,在这种情况下,尽管已经完成了相当多的功课,但我完全难过了
我目前正在开发一个Android应用程序,该应用程序需要与一块硬件(更具体地说是PIC32板)进行通信,并显示电路板实时返回的数据。
目前我只是使用Eclipse和Android模拟器来设计界面和编写应用程序的后端。而且,我现在已经到了一个阶段,我想在物理Android设备上测试应用程序的操作。但是,每当我尝试直接从手机安装应用程序时(我通过Dropbox发送.apk)我总是收到错误'应用程序包安装程序(进程com.android.packageinstaller)意外停止。请再试一次'。现在,我完成了我的作业,似乎确定错误可能在应用程序的Android Manifest文件中。但是,我只是看不出这个问题的位置。我已经看到通过删除某些标签或复制标签解决了其他问题;然而,即便如此,我的应用程序也不想在我的设备上安装,尽管每次运行模拟器时它都会安装并运行得非常完美。
我正在开发的应用程序基于硬件制造商提供的演示代码。它已被适当修改。而且,当我为我的应用程序适当修改Manifest文件并使用演示应用程序对其进行测试时,一切似乎在物理设备上都能正常工作。所以,有些东西告诉我Manifest文件实际上可能不是问题。我的应用程序和演示应用程序之间的主要区别在于我已将代码分成适当的包,其中一个包含应用程序代码(活动),另一个包含用于与PIC32板通信的代码。我还添加了一个活动 - 演示代码只有一个,但目前有两个。最后的区别是我已经定义了一个全局对象,用于与板通信,可以被所有应用程序的活动使用。但是,我不认为这些是造成这个问题的原因。
所以再一次,应用程序似乎在模拟器上工作正常,但它根本不想在物理Android设备上安装 - 每次我尝试安装时都会显示一条显示此消息的警告对话框。
我非常感谢任何人提供的任何帮助和建议,并提前感谢。
此外,这是我正在开发的应用程序的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tribosonics.android.TribosonicsApp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" >
</uses-sdk>
<uses-sdk android:targetSdkVersion="10" >
</uses-sdk>
<!--
<permissions>
<feature name="android.hardware.usb.accessory" />
<library
name="com.android.future.usb.accessory"
file="/system/framework/com.android.future.usb.accessory.jar" />
</permissions>
-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".GlobalAccessoryManager"
android:debuggable="true"
android:icon="@drawable/tribosonics_icon"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
android:resource="@xml/accessory_filter" />
<activity
android:name=".TribosonicsApp"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SetScanPreferences"
android:screenOrientation="portrait" >
</activity>
<uses-library android:name="com.android.future.usb.accessory" />
</application>
</manifest>
答案 0 :(得分:4)
android清单,图标图片很大所以请减少图片图标大小并运行应用程序它正常工作。
答案 1 :(得分:1)
我在LogCat中看到了以下异常:
E/AndroidRuntime(28817): FATAL EXCEPTION: main
E/AndroidRuntime(28817): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.example.app/.MyActivity } from ProcessRecord{487978e8 28817:com.android.packageinstaller/10063} (pid=28817, uid=10063) requires android.permission.ACCESS_FINE_LOCATION
我认为问题是由于清单中的一些<uses-permission...>
标记造成的,但在我的情况下,我的清单android:permission="..."
标记中有一个application
属性,这似乎导致了包管理器获得例外和barff。删除这个让我再次前进。
答案 2 :(得分:0)
将android:debuggable="true"
更改为android:debuggable="false"
,看看它是否有所不同。