INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
エラーが発生しています。 問題は、ビルド時にAndroid Manifestで置き換える必要がある文字列ではないことです。すべてがGradleバージョン2.1を更新した後に開始されました Gradle 2.1(2.0以降)にアップデートする前に、私のコードが動作していました。今、私は次のエラー・ログを取得しています:私はPACKAGE_NAMEをraplaceするために使用していますビルド時のマニフェストの文字列をGradle 2.1で置換しない
> Failed parse during installPackageLI
android.content.pm.PackageParser$PackageParserException: /data/app/vmdl264927358.tmp/base.apk (at Binary XML file line #16): Bad class name PACKAGE_NAME.permission.C2D_MESSAGE in package my.package.xyz
at android.content.pm.PackageParser.parseBaseApk(PackageParser.java:892)
at android.content.pm.PackageParser.parseClusterPackage(PackageParser.java:790)
at android.content.pm.PackageParser.parsePackage(PackageParser.java:754)
at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:12252)
at com.android.server.pm.PackageManagerService.-wrap25(PackageManagerService.java)
at com.android.server.pm.PackageManagerService$9.run(PackageManagerService.java:10170)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
コードは次のとおりです。私は/フル/フォルダ/中間体/マニフェストでのAndroidManifest.xmlファイルをチェックビルドした後
applicationVariants.all {variant ->
def flavor = variant.productFlavors.get(0)
def buildType = variant.buildType
variant.outputs[0].processManifest.doLast {
replaceInManifest(variant,
'PACKAGE_NAME',
[flavor.applicationId, buildType.applicationIdSuffix].findAll().join())
}
}
def replaceInManifest (variant, fromString, toString) {
def flavor = variant.productFlavors.get(0)
def buildtype = variant.buildType
def manifestFile = "$buildDir/intermediates/manifests/full/${flavor.name}/${buildtype.name}/AndroidManifest.xml"
def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll(fromString, toString)
new File(manifestFile).write(updatedContent, 'UTF-8')
}
$ {flavor.name}/$ {buildtype.name} /AndroidManifest.xmlと置き換えられました。 .apkのGradleファイルとパッケージ内のコードの一部が変更されたようです。 この問題を解決するために何をすべきか知っていますか?
パッケージ名は小文字であるため、問題はありません。名前=「PACKAGE_NAME.permission.C2D_MESSAGE」 \t \tアンドロイド::のProtectionLevel =」 –
あなたは – TheAppchemist
問題がAndroidManifestではありません、あなたのマニフェストファイルを掲示する気ですか、問題はGradleのスクリプトがラインにPACKAGE_NAMEを交換 '<許可アンドロイドいないということですマニフェストの "signature" /> –