【Unity】Android Manifestのマージエラー解決法

マージエラーはいろいろな要因が重なり合って起こりうるエラーなので、この記事に書いてあることが普遍的な解決になるとは、限りません。ただ、情報が著しく少ないので、ハマったら抜け出せない厄介なエラーです。少しでも解決の糸口になればと思い、情報を残します。

再度言いますが、解決する保証はないです。参考に。

Contents

tools:replace specified at line:4 for attribute android:theme, but no new value specified

最初に出会ったエラーがこちら。どうやら、置き換える数値が設定されてないよ、とのこと。まったくもって意味が分からないので、とりあえず下の方法で回避。

マニフェストファイルをルートに追加する

このサイト(こちら)にあるテンプレートをAsset/Plugins/Androidに配置してみます。リンク先のサイトが消滅するのが怖いので、コードを引用させていただきます。

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player">
    <application
		android:theme="@style/UnityThemeSelector"
		android:icon="@drawable/app_icon"
        android:label="@string/app_name">
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>

uses-sdk:minSdkVersion 18 cannot be smaller than version 21 declared in library

上のテンプレートファイルを追加してから、再度ビルドしてみたところ、エラーメッセージが変わりました。 また、ログには、解決法も出力されていました。

uses-sdk:minSdkVersion 18 cannot be smaller than version 21 declared in library [:Tenjin]
Suggestion: use a compatible library with a minSdk of at most 18,
or increase this project's minSdk version to at least 21,
or use tools:overrideLibrary="com.tenjin.TenjinUnitySDKExample" to force usage (may lead to runtime failures)

少しだけ補足すると、このときのプロジェクトには、Tenjinというアプリインストールの流入元をトラックするツールを仕込んでいました。どうやら、そのTenjinが設定しているAndroidの最低SDKバージョンが、プラグインのサポート範囲を外れているようです。

ログにある解決法だと、ライブラリを書き換える方法が示されていますが、サードパーティのスクリプトを書き換えるのはちょっと怖いので、Unityの設定を底上げしてみます。

ツールバーから[Edit] > [Project Settings] を選び、Playerのタブにある、Minimum API Levelを引き上げます。今回はAPI level 21を最低に選びました。

この対処法で、再度ビルドしてみると、無事apkファイルが出力されました。

まとめ

AndroidManifest周りのエラーはドキュメントがとても少なく、かつプロジェクトの制作環境に強く依存するので、これといった解決方法がありません。また、コンソールのエラー情報がすこぶる分かりにくいので、原因究明にとても時間がかかります。

この記事に書いてあることを試しても、一発で解決する保証はありません。しかし、ここにある情報から解決の糸口になりうるかもしれないと思い、記事にしました。少しでも、エラー解決の助けになれば幸いです。

はぁー、アプリ開発はつらい。

参考文献

AndroidManifest.xml のテンプレート

強火で進め , id:nakamura001 , 観覧日2020/06/04

返信を残す

メールアドレスが公開されることはありません。