おそらく設定が足りていないのだが、本筋ではないので調査をいったん終了し、メモを残しておく。
Unity2020.3.37、NRSDK 1.9.3
やったこと
Proguard を適用
- ProjectSettings - Player - Publishing Settings にて、Custom Proguard File と Release をON
- ビルドして実機でアプリ起動すると、E/Unity: [Error][NRSessionManager] NRDevice Init failed: [NativeGlassesController] Start: Glasses connect error! とログ出力され、NRメガネを認識しないのでアプリ起動できない
- ビルド時には proguard_mapping.txt が出力され、たしかに ai.nreal.sdk 以下のクラスが難読化(最適化)されている
- ai.nreal.sdk 以下が最適化されないように、Assets/Plugins/Android/proguard-user.txt に -keep class ai.nreal.sdk.** { *; } など記載してビルドするもアプリ起動せず
- そして、proguard_mapping.txt にも変化はなく、Proguard では proguard-user.txt が無視されているような挙動
- 実際、Gradle プラグイン 3.4.0 以降では Proguard ではなくデフォルトでR8が使用されるとのこと(自分は gradle プラグイン 4.0.1 を使用)
- https://developer.android.com/studio/releases/gradle-plugin?hl=ja
R8 を適用
- ProjectSettings - Player - Publishing Settings にて、Custom Proguard File と UseR8 と Release をON
- ビルドして実機でアプリ起動すると、E/Unity: [Error][NRSessionManager] NRDevice Init failed: [NativeGlassesController] Start: Glasses connect error! とログ出力され、NRメガネを認識しないのでアプリ起動できない
- ビルド時には r8_mapping.txt が出力され、たしかに ai.nreal.sdk 以下のクラスが難読化(最適化)されている
- ai.nreal.sdk 以下が最適化されないように、Assets/Plugins/Android/proguard-user.txt に -keep class ai.nreal.sdk.** { *; } など記載してビルドするもアプリ起動せず
- ただ、r8_mapping.txt に変化があり、proguard-user.txt に記載したものはリストアップされなくなっており、ai.nreal.sdk 以下の最適化をしないようにできているように見える
- r8_mapping.txt が0バイトになった(なにも記載されなくなった)ので、コードの最適化が全くされなくなったと思いきや、依然としてNRメガネを認識しないので、Nreal Javaコードの最適化が行われてしまっている模様
- ちなみに、UseR8 をONにしてビルドすると、CustomBaseGradleTemplate と CustomGradlePropertiesTemplate が自動でONになる模様(android.enableR8=**MINIFY_WITH_R_EIGHT** のためか)
- 次の一手が思いつかず、いったん調査終了
- ちなみに、mainTemplate.gradle の consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** を削除すると proguard-user.txt が効かなくなったので、そこは関連している