应用程序在模拟器上运行但不在实际设备上运行
App working on the emulator but not on actual devices
当我尝试在实际设备(已测试 Galaxy S7 和 Galaxy Tab 2)上以调试模式启动我的应用程序时遇到问题。在安装过程中,会出现一个对话框,指示安装失败并出现 "INSTALL_PARSE_FAILED_MANIFEST_MALFORMED" 错误。错误消息继续显示“<activity>
没有有效的 android:name”。下面复制的清单文件的第 23 行是有罪的(该行对应于“<application
”行正下方的行)。据我所知,我给 activity 起的名字是完全正确的。
更奇怪的是,当在模拟器上启动时,该应用程序会安装并完美运行...
我可以补充一点,对话框提示我应该卸载可能安装的以前的版本,但我没有,如果我回答要删除它,它无法卸载它(这一次,看起来正常)。
知道是什么导致了这个问题吗?
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="GL.MesContacts"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="26">
</uses-sdk>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="GL.MesContacts.ActivitePrincipale"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:enabled="true"
android:exported="false"
android:label="string resource"
android:name="GL.MesContacts.RecepteurChangementEtatTelephone">
<intent-filter>
<action
android:name="android.intent.action.PHONE_STATE">
</action>
</intent-filter>
</receiver>
</application>
正如您在清单 package="GL.MesContacts"
中定义的那样,activity 名称应该只是 .ActivitePrincipale
像这样 <activity
android:name=".ActivitePrincipale">
....
</activity>
重命名您的包以仅包含小写字符。它不能包含大写字符。
查看 this answer 了解更多信息。
尝试将您的包名称更改为小写:
package="gl.mescontacts"
当我尝试在实际设备(已测试 Galaxy S7 和 Galaxy Tab 2)上以调试模式启动我的应用程序时遇到问题。在安装过程中,会出现一个对话框,指示安装失败并出现 "INSTALL_PARSE_FAILED_MANIFEST_MALFORMED" 错误。错误消息继续显示“<activity>
没有有效的 android:name”。下面复制的清单文件的第 23 行是有罪的(该行对应于“<application
”行正下方的行)。据我所知,我给 activity 起的名字是完全正确的。
更奇怪的是,当在模拟器上启动时,该应用程序会安装并完美运行...
我可以补充一点,对话框提示我应该卸载可能安装的以前的版本,但我没有,如果我回答要删除它,它无法卸载它(这一次,看起来正常)。
知道是什么导致了这个问题吗?
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="GL.MesContacts"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="26">
</uses-sdk>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="GL.MesContacts.ActivitePrincipale"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:enabled="true"
android:exported="false"
android:label="string resource"
android:name="GL.MesContacts.RecepteurChangementEtatTelephone">
<intent-filter>
<action
android:name="android.intent.action.PHONE_STATE">
</action>
</intent-filter>
</receiver>
</application>
正如您在清单 package="GL.MesContacts"
中定义的那样,activity 名称应该只是 .ActivitePrincipale
像这样 <activity
android:name=".ActivitePrincipale">
....
</activity>
重命名您的包以仅包含小写字符。它不能包含大写字符。 查看 this answer 了解更多信息。
尝试将您的包名称更改为小写:
package="gl.mescontacts"