私のプロジェクトはこれらのプラグインを使用しています:
これらのプラグインは、ほぼすべてのプロジェクトで使用されます。
しかし、私はフィールド参照数を超えています
参照カウントを減らすにはどうすればよいですか?
参照カウントを減らすにはどうすればよいですか?
多くの機能/フィールドを持つ非常に多くのプラグインがあります。 Unityのエディターからこれをビルドする場合には制限があり、その制限に達しました。
参照カウントを減らすには、これらのプラグインをいくつか削除する必要がありますが、これらのプラグインが必要であり、この場合は削除が適切な解決策ではないことを確信しています。
only 実際にこれを回避してAndroid現時点でビルドするための方法は、export Project as Android Project then build with Android Studio。これにより、Unityのエディターによって課される参照制限が削除されます。
[〜#〜] edit [〜#〜]
エクスポート後にmultidexを有効にする必要があることを忘れていました。多くの人が毎日この問題を経験しているため、エクスポートしてこの問題を修正する方法について徹底した指示を追加することにしましたおよび、エクスポートせずに修正する方法。
1A.UnityプロジェクトをAndroid Project。
1B.Import into Android Studio:
Android以下のようなStudioにインポートするときにグレードエラーが発生する場合:
エラー:org.gradle.api.internal.tasks.DefaultTaskInputs $ TaskInputUnionFileCollectionをorg.gradle.api.internal.file.collections.DefaultConfigurableFileCollectionにキャストできません
build.gradleファイルの「buildscript」ブロックにある「dependencies」ブロックで、以下を変更します。
classpath 'com.Android.tools.build.gradle.2.1.0'
に
classpath 'com.Android.tools.build:gradle:2.2.3'
プロジェクトをエクスポートしても同じエラーが発生する場合は、multidexを手動で有効にする必要があります。以下は、エラーで表示されるGoogleの doc からの簡単な手順です。
2 .AndroidManifest.xmlファイルのapplicationタグにAndroid:name="Android.support.multidex.MultiDexApplication" >
を追加します。
3 .build.gradleファイルの"dependencies"ブロックにcompile 'com.Android.support:multidex:1.0.1'
を追加します。
4 .build.gradleの「Android」ブロックにある"defaultConfig"ブロックにmultiDexEnabled true
を追加しますファイル。
APKをビルドして、機能するかどうかを確認します。参照カウントエラーがなくなった場合は、ここで停止します。
5 。以下のようなGCオーバーヘッド例外を取得していますか?
Java.lang.OutOfMemoryError:GCオーバーヘッド制限を超えました
Dex操作を実行するときに使用されるヒープサイズを増やします。この solution から、build.gradleファイルの「Android」ブロックに次を追加します。
dexOptions {
javaMaxHeapSize "4g"
}
これを行うには、Unity 5.5以降が必要です。
1.<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates
に移動し、mainTemplate.gradle
ファイルを<ProjectName>Assets\Plugins\Android
フォルダーにコピーします。
2.<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Apk
に移動し、AndroidManifest.xml
ファイルを<ProjectName>Assets\Plugins\Android
にコピーします
3.Visual StudioでコピーしたmainTemplate.gradle
ファイルとAndroidManifest.xml
ファイルの両方を開き、 FIXからエクスポートして修正を行います。上記のPROJECT 命令。ステップをスキップ/無視#1A および#1B 。 #2 から#5 へのステップを実行するだけです。それでおしまい。
This は最終的なものです mainTemplate.gradle
は次のようになります this は最終的なものです AndroidManifest.xml
は次のようになります。これは参照のみを目的としています。 mine は使用せず、代わりに上記のコピー手順に従って作成してください。Unityの将来のバージョンには異なるファイルが付属する可能性があるためです。必ず最新のものを使用するか、ビルドに問題がある可能性があります。
4.Build APKで動作するかどうかを確認します。
-
参照カウントエラーがなくなった場合は、ここで停止します。
5 。以下のようなエラーが発生しましたか?
Gradleを使用する場合、ビルド失敗リリースビルドに署名する必要があります
ちょうど signBuild SettingsのPublishing Settingsからのapk。新しいキーストアを作成するか、既存のキーストアを使用できます。
6 。以下のような別のエラー?
エラー:デバッグモードをハードコーディングしないでください。省略すると、デバッグビルドとリリースビルドで1つの[HardcodedDebugMode]を自動的に割り当てることができます
Android:debuggable="true">
ファイルからAndroidManifest.xml
を削除します。
この非エクスポートソリューションが機能しない場合は、エクスポートソリューションを使用する必要があります。
IMO、受け入れられた答えは正しくありません(または部分的に正しいだけです)。 Androidスタジオは、この問題を「魔法のように」修正しません。また、私の経験から、エクスポートされたAndroidスタジオプロジェクトは、すぐにビルドされないことがあります。実際にビルドする前に多くのことを修正する必要があります。
多くのプラグインを使用しているため、64-kを超えるメソッドを参照できない Androidの制限 に直面しました。
これを解決するために試すことができることがいくつかあります。