こんにちは、私はgcmで実験しようとしていますが、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" />
Capsの文字を含む名前のパッケージを小文字に変更します。
変更 your
Android:name="MainActivity"
[〜#〜] to [〜#〜]
Android:name=".MainActivity"
[〜#〜] or [〜#〜]クラス名の前に小文字の完全修飾パッケージ名を追加します
Android:name="thepackage.MainActivity"
私が提案したように、activity
タグ内でAndroid:name
という名前のすべての属性を変更してください。
の代わりに:
<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 tools> rename app package
「。」が続くアクティビティ名を書き込もうの代わりに
<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では動作しなかったことを知っています。
パッケージ名が小文字であることを確認してください...私のために働いた
私の場合、パッケージ名は小文字でのみ言及されました。しかし、いくつかのアクティビティでは、名前の一部を使用して名前を付けました。つまり、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>
この問題がありました。デバイスのメモリがいっぱいです。デバイスのメモリを解放するという問題を解決しました。
Javaパッケージ名とすべてのフォルダ名を小文字で書くと、うまくいきます...