2013-11-25 3 views
6

У меня есть проект, созданный с помощью Gradle в Android Studio v 0.3.2. Мой проект имеет зависимости от двух других модулей (андроидная библиотека). Структура проекта хорошо определена с помощью файлов build.gradle. Проблема в том, что ... когда я запускаю проект на устройстве Android, я устанавливаю 3 apk на моем устройстве. Один из них - основной проект (единственный правильный), а два других - импортированные модули (эти два я не хочу устанавливать). Как я могу достичь этого? Или что я делаю неправильно?Android Studio устанавливает APK для каждого модуля

Структура проекта:

  • MyLibModule
  • MainProject
  • MainProject-> libraries->MyOtherModule

Где MyLibModule находится на тот же путь, что и основной проект, потому что мне также нужен этот модуль в другом проекте.

Только для того, чтобы быть ясным: весь проект build's OK, все зависимости в порядке, но почему я нахожу 3 APK на своем устройстве?

ответ

14

После целого дня, борющегося с этой проблемой, я нашел причину этого странного поведения. Проблема заключалась в проявлении библиотечного модуля. Прежде чем я переключился на студию Android, я использовал Eclipse. И у меня была testActivity, объявленная в манифесте проекта библиотеки. Устранение всех тестовых действий из манифеста моих библиотечных модулей решило проблему. Теперь Android Studio устанавливает только APK MainProject.

Некоторый код: Манифест MyLibModule:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.mylibmodule" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="7"/> 
    <application> 
     <activity 
      android:name=".TestActivity" 
      android:label="@string/app_name"> 
     </activity> 
    </application> 
</manifest> 

Изменен:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.mylibmodule" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="7"/> 
    <application> 
    </application> 
</manifest> 

.... И то же самое для MyOtherModule.

ПРИМЕЧАНИЕ: пустое приложение должно оставаться в манифесте, чтобы избежать ошибок сборки.

+0

Эй это помогло мне !! – Skynet

+0

Действительно, у меня была библиотека, в которой было приложение с демонстрационной активностью, и оно создавало две «версии» приложения. –

1

Это потому, что ваши библиотеки определены в их файлах build.gradle как приложения, а не библиотеки. Посмотрите на эту линию:

apply plugin: 'android' 

и заменить его:

apply plugin: 'android-library' 

Вы, возможно, потребуются внести другие коррективы в файл построение, а потому, что не все, что относится к приложениям, может быть указано в библиотеке файле построение , См. http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-projects для получения дополнительной информации.

+0

Спасибо за быстрый ответ. Я заметил это раньше, а также прочитал документацию. Но проблема заключалась в манифесте библиотек. Я скоро отправлю решение в качестве ответа. – Primoz990

9

удалить пристальный фильтр от запуска деятельности вашей библиотеки

<application> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

Изменен

<application> 
    <activity android:name=".MainActivity"/> 
</application> 
+0

очень хороший ответ. Я создаю aar-библиотеку, используя студию. после создания файла aar lib, импортирования в другой проект. в то время как установлен основной файл apk на мобильный, его показаны два apk в мобильном экране. Я последовал твоим шагам. Я получил отличный результат. – harikrishnan

Смежные вопросы