Androidマニフェストファイルにエラーがあります:
Error:Cannot read packageName from C:\Users\brandon\AndroidStudioProjects\MineDodge2\app\src\main\AndroidManifest.xml
Error:The markup in the document preceding the root element must be well-formed.
私はこのウェブサイトを見てみましたが、答えは私のために機能していません。
<?xml version="1.0" encoding="utf-8"?>
< manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.brandon.MineDodge" >
<application
Android:allowBackup="true"
Android:icon="@mipmap/redjet"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.example.brandon.MineDodge.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.brandon.MineDodge.Splash" />
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</application>
</manifest>
build.gradeファイルの古いバージョンを使用している場合、このコードを削除する必要があります。
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
Java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
次に、Build> Clean Project
注:このコードが表示される場合、古いバージョンを使用しています
エラーは本当に単純であり、私は今までそれを見つけられなかったというスタックコミュニティに失望しています。
< manifest ...
になるはずです
<manifest...
基本的に、余分なスペースを削除します。それが次のエラーの原因です:
Error:The markup in the document preceding the root element must be well-formed.
また、MainActivityに使用されるintent-filterは、2番目のアクティビティにも同様に使用する必要があります。
この問題が解決されることを願っています。
Unity 2018でこのエラーが発生しましたが、これはバグだと思います。
修正:パッケージ名をAndroid Unityプロジェクトのマニフェストに追加します。
マニフェストへのプロジェクトパス:Assets/Plugins/Android/AndroidManifest.xml
たとえば、マニフェストファイルが次のようになったときにエラーが発生しました。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
</manifest>
UnityのOculus Gear VRプラグインによって生成されました。ただし、パッケージ名が欠落しているため、次のようになります。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest package="YOURPACKAGENAME" xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
</manifest>
YOURPACKAGENAMEをプロジェクトのパッケージ名に置き換えます。 [編集]-> [プロジェクト設定]-> [プレーヤー]-> [その他の設定]-> [識別]-> [パッケージ名]にあり、com.YOURORGANIZATION.APPNAMEのようになっているはずです。
一部の人々は、そのマニフェストは次のように見える必要があると書いています。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest package="${applicationId}" xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
</manifest>
そして彼らはUnityが${applicationId}
ビルド時のパッケージ名Androidアプリケーションですが、Unity 2018.1.6f1では動作せず、バグでもあると思います。
私の問題は、古いEclipseプロジェクトをAndroid(他のファイルと一緒に)マニフェストファイルが別の場所にあると予想されるStudioプロジェクトに変換しようとしていたことです。具体的にはproject\app\src\main
2番目の<action Android:name="Android.intent.action.MAIN" />
および<category Android:name="Android.intent.category.LAUNCHER" />
はここでは許可されていません。 `<manifest xmlns:Android =" http://schemas.Android.com/apk/res/Android "package =" com.example.brandon.MineDodge ">
<application
Android:allowBackup="true"
Android:icon="@mipmap/redjet"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.example.brandon.MineDodge.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
Android:name="com.example.brandon.MineDodge.Splash" />
</application>
`それで構いません。
<action Android:name="Android.intent.action.MAIN" /> <category Android:name="Android.intent.category.LAUNCHER" />
二回?これら2つからいずれかを削除します。
Eldar Kurbanov に応えて、Unityでこのエラーが発生した人、およびUnityでgradleを使用してビルドするときにエラーが発生した後にこの質問を見つけた人。
これはUnity 2018の「バグ」ではなく、マニフェストのプリビルドから何かが欠落していることによるものでもありません。実際には、mainTemplate.gradleファイルに次の行がないことが原因です。
applicationId '**APPLICATION**'
Android {}セクションのdefaultConfig {}ブロック内。これにより、生成されたマニフェストにパッケージ名が挿入されます。
はい、手動でパッケージ名をメインマニフェストに挿入しますwill work、ただし、ハードコーディングするのではなく、Unityのプロジェクト設定を使用してパッケージ名を設定する方がはるかに優れています。
他の誰かがこの質問を見つけてUnityを使用している場合、参照に使用できるmainTemplate.gradleの例を次に示します。 https://Pastebin.com/hPs0uvkZ
それは、単に既存のプロジェクトとそのファイルを新しく作成したプロジェクトにコピーしたからです。これにより、マニフェストの競合が発生します。コピーされたマニフェストは他のプロジェクトとそのパスに属しているためです。
独自のプロジェクトファイルパスにマニフェストファイルを再作成し、場合によっては他のプロジェクトのマニフェストコードを新しく作成したマニフェストファイルに手動でコピーする必要があります。
サブプロジェクトがトップレベルのconfigure(
のbuild.gradle
句と一致しないため、これをマルチサブプロジェクトプロジェクトで使用しました。
具体的には
configure(subprojects.findAll { it.name.startsWith("pachymeninx") }) {
pachymen
という新しいサブプロジェクトと一致しませんでした。しかし、Gradleビルドプロセスは警告(私が見た)を発行せず、代わりにpachymen
サブプロジェクトに対して "Cannot read packageName from AndroidManifest.xml
"エラーを出しました。