您好我正在尝试使用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 Sea中的新鱼。
编辑-1: 我注意到,如果我在下面评论这条线,那么应用程序会进行部署和执行,但显然我无法在没有下述许可的情况下前进......请帮助....
<permission android:name="Android.Test.permission.C2D_MESSAGE" android:protectionLevel="signature" />
答案 0 :(得分:56)
将带有大写字母的名称包更改为小写字母。
答案 1 :(得分:9)
更改您的
android:name="MainActivity"
以强>
android:name=".MainActivity"
OR 在您的班级名称
之前以小写字母添加完全限定的包名称android:name="thepackage.MainActivity"
按照我的建议,更改android:name
代码中名为activity
的所有属性。
答案 2 :(得分:4)
而不是:
<permission android:name="android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
为:
<uses-permission android:name="android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
试试。
答案 3 :(得分:3)
<activity android:name="MainActivity"
应该像
一样形成<activity android:name="com.company.appname"
执行此操作没有错误转到包(右键单击)&gt; android工具&gt;重命名应用包
答案 4 :(得分:1)
尝试编写活动名称后跟“。” 而不是
<activity android:name="MainActivity"
android:label="@string/app_name">
使用
<activity android:name=".MainActivity"
android:label="@string/app_name">
答案 5 :(得分:1)
我在android studio中遇到了同样的问题
解决这个问题的办法是让公司域名都是小写字母,答案 6 :(得分:0)
有关于此的问题: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它没有。
答案 7 :(得分:0)
确保您的包裹名称是小写字母... 为我工作
答案 8 :(得分:0)
以小写形式编写java包名称和所有文件夹名称,它将正常工作......
答案 9 :(得分:0)
在我的情况下,只用小写字母提到了包装名称。但是对于少数活动,我使用部分名称来命名它,即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>
答案 10 :(得分:0)
我遇到了这个问题。我的设备内存已满。我通过释放设备内存解决了我的问题。