嗨,我试图用GCM尝试,但不能使它工作。 不知道在哪里,我与它搞乱,下面是我得到的错误。 我想我的应用程序直接在设备和调试从那里部署,但是当过我尝试部署它给这个错误
Waiting for device.
Target device: HT24LW108632
Uploading file
local path: D:\Data\Android\AndroidTest\out\production\AndroidTest\AndroidTest.apk
remote path: /data/local/tmp/Android.Test
Installing Android.Test
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/Android.Test"
pkg: /data/local/tmp/Android.Test
Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Android.Test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="14"/>
<permission
android:name="Android.Test.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="Android.Test.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:name="MainActivity"
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:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="Android.Test" />
</intent-filter>
</receiver>
<service android:name=".GCMIntentService" />
</application>
</manifest>
我的设备是HTC ONEX
- Android的版本:4.03
- 的HTC Sense版本:4.0
- 软件编号:1.29.110.11
- HTC SDK API级别:4.12
- HTC扩展版本:HTCExtension_403_1_GA_7
请指导,因为我在Android的海新的鱼类。
编辑1:我注意到,如果我评论这行下面,然后应用程序部署和执行,但很明显,我不能去直接使用,无需下文提到的许可......请帮助....
<permission android:name="Android.Test.permission.C2D_MESSAGE" android:protectionLevel="signature" />
更改
android:name="MainActivity"
至
android:name=".MainActivity"
或者你的类名前加上小写完全合格的包名
android:name="thepackage.MainActivity"
不要改变这一切命名为属性android:name
里面activity
,我建议的标签。
代替:
<permission android:name="android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
至:
<uses-permission android:name="android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
尝试。
<activity android:name="MainActivity"
应该形成像
<activity android:name="com.company.appname"
要做到这一点没有错误去打包(右键)>的Android工具>重命名的应用程序包
试着写活动名称由跟随“” 代替
<activity android:name="MainActivity"
android:label="@string/app_name">
使用
<activity android:name=".MainActivity"
android:label="@string/app_name">
我在Android Studio中遇到了同样的问题
什么解决这是为了让公司域为所有的小字母,
有一个关于这个问题: http://code.google.com/p/android/issues/detail?id=37658大写字母不能在权限内包名称中使用。 当你已经部署了这样的包名应用程序,您需要使用GCM你有(像我一样)到困难的局面。 我试图用某种许可的短形式:
<permission android:name=".permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name=".permission.C2D_MESSAGE" />
我也以同样的方式定义的服务。 它必须在应用程序包。 它的工作在Android 4.3。 大概在4.2也。 我知道,在4.0.3它没有。
编写Java包名称和小写的所有文件夹的名称,它会正常工作...
在我来说,我提到只有小写字母包名。 但是,对于一些活动我与部分名称即把它命名为android:name=".ContactUs"
。 之后,我通过之前在清单文件中的所有活动名称,服务名称和广播商名称前缀完整的包名称解决它。
工作代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="vcan.doit.com">
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DesignDemo">
<activity
android:name="vcan.doit.com.LoginActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="vcan.doit.com.MainActivity"
android:theme="@style/Theme.DesignDemo" />
<activity
android:name="vcan.doit.com.CheeseDetailActivity"
android:parentActivityName="vcan.doit.com.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="vcan.doit.com.MainActivity" />
</activity>
<service android:name="vcan.doit.com.PushNotification.MyAndroidFirebaseMsgService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="vcan.doit.com.PushNotification.MyAndroidFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<activity
android:name="vcan.doit.com.AboutUs"
android:label="@string/abt_us"
android:parentActivityName="vcan.doit.com.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="vcan.doit.com.MainActivity" />
</activity>
<activity
android:name="vcan.doit.com.ContactUs"
android:label="@string/contact_us"
android:parentActivityName="vcan.doit.com.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="vcan.doit.com.MainActivity" />
</activity>
<activity android:name="vcan.doit.com.WriteToUs"
android:label="@string/write_us"
android:parentActivityName="vcan.doit.com.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="vcan.doit.com.MainActivity" />
</activity>
</application>
文章来源: How to fix INSTALL_PARSE_FAILED_MANIFEST_MALFORMED in my android application