Я уже импортировал два модуля единства. Модуль треугольника и модуль куба.

 public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, com.labinapp.triangle.UnityPlayerActivity.class);
            startActivity(intent);
        }
    });
    findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, com.labinapp.cube.UnityPlayerActivity.class);
            startActivity(intent);
        }
    });
}}

Вот моя конфигурация файла оценки

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.labinapp.demoCode"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled = true



    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }
    packagingOptions {
        merge 'lib/armeabi-v7a/libmain.so'
        merge 'lib/x86/libmain.so'
        merge 'lib/armeabi-v7a/libunity.so'
        merge 'lib/x86/libunity.so'
        merge 'lib/armeabi-v7a/libmono.so'
        merge 'lib/x86/libmono.so'
    }


}


dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile 'com.android.support:appcompat-v7:25.3.1'

    compile project(':CubeModule')
    compile project(':TriangleModule')
}

Я столкнулся с некоторыми конфликтами имен, которые я решил с помощью слияния

 packagingOptions {
        merge 'lib/armeabi-v7a/libmain.so'
        merge 'lib/x86/libmain.so'
        merge 'lib/armeabi-v7a/libunity.so'
        merge 'lib/x86/libunity.so'
        merge 'lib/armeabi-v7a/libmono.so'
        merge 'lib/x86/libmono.so'
    }

Моя проблема не зависит от того, какую кнопку я нажимаю только на один открытый проект, это зависит от порядка, в котором я устанавливаю зависимость

Дело 1:

   compile project(':CubeModule')
   compile project(':TriangleModule')
   -------------------------------------------------
   Output: CubeModule will be called by default 

случай 2:

  compile project(':TriangleModule')
  compile project(':CubeModule')
  ---------------------------------------------------
  Output: TriangleModule will be called by default 

Я думаю, слияние не работает должным образом, есть ли другой способ или любой обходной путь для решения этой проблемы, любое предложение будет полезно.

1
ANAND PURUSHOTTAM 5 Апр 2017 в 09:03

2 ответа

Лучший ответ

Я пробовал несколько вещей, но не смог. Это кажется невозможным. Это все равно что пытаться сохранить два файла в одной папке. Но проблема в том, что оба файла имеют одинаковые имена. Вы не можете использовать два модуля, так как оба модуля поставляются с несколькими общими файлами, которые должны быть помещены в общую папку. Поэтому в зависимости от порядка вашей зависимости система сборки Android выбирает один из них и упаковывает его в apk.

0
ANAND PURUSHOTTAM 8 Фев 2018 в 09:50

Если вы присмотритесь, вы вызываете UnityPlayerActivity.class с обеих кнопок - это имя по умолчанию, заданное для Activity в встроенном коде Unity. Чтобы обойти эту проблему, переименуйте класс java в экспортированных проектах Unity для Android.

Прежде чем создавать CubeModule и TriangleModule, проверьте имя класса и измените его на другое имя. Не забудьте переименовать это имя в Android Manifest.

Теперь, когда вы внесете его в код своего приложения, вы будете обращаться к этим именам классов и правильно запускать отдельные модули единиц.

0
Bhavna 1 Май 2019 в 19:55