2013-11-25 55 views
6

Tôi có một dự án, xây dựng với Gradle trong Android Studio v 0.3.2. Dự án của tôi có phụ thuộc vào hai mô-đun khác (thư viện android). Cấu trúc dự án được xác định rõ ràng với các tệp build.gradle. Vấn đề là ... khi tôi chạy dự án trên thiết bị Android, tôi sẽ cài đặt 3 apk trên thiết bị của mình. Một là dự án chính (một trong những quyền duy nhất) và hai là từ các mô-đun nhập khẩu (hai tôi không muốn cài đặt). Làm thế nào tôi có thể đạt được điều này? Hoặc những gì tôi đang làm sai?Android Studio cài đặt APK cho mỗi mô-đun

Cấu trúc dự án:

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

đâu MyLibModule là ở cùng một đường dẫn như dự án chính, bởi vì tôi cũng cần mô-đun này trong một dự án khác.

Chỉ cần rõ ràng: Toàn bộ dự án OK của xây dựng, tất cả các phụ thuộc đều OK, nhưng tại sao tôi nhận được 3 APK trên thiết bị của mình?

Trả lời

14

Sau cả ngày đấu tranh với vấn đề này, tôi định vị nguyên nhân của hành vi kỳ lạ này. Vấn đề là biểu hiện của mô-đun thư viện. Trước khi tôi chuyển sang Android studio, tôi đã sử dụng Eclipse. Và tôi đã có một testActivity được khai báo trong tệp kê khai của dự án thư viện. Xóa tất cả hoạt động thử nghiệm khỏi tệp kê khai của các mô-đun thư viện của tôi đã giải quyết được sự cố. Giờ đây, Android Studio chỉ cài đặt gói ứng dụng Chính.

Một số mã: Lược khai 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> 

Thay đổi để:

<?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> 

.... Và tương tự cho MyOtherModule.

LƯU Ý: nút rỗng ứng dụng phải nằm trong tệp kê khai, để tránh lỗi xây dựng.

+0

Yo điều này đã giúp tôi !! – Skynet

+0

Thật vậy, tôi đã có một thư viện đã có ứng dụng với một hoạt động demo và nó đã tạo ra hai "phiên bản" của ứng dụng. –

1

Đó là vì thư viện của bạn được xác định trong các tệp build.gradle là các ứng dụng thay vì thư viện. Hãy tìm dòng này:

apply plugin: 'android' 

và thay thế bằng:

apply plugin: 'android-library' 

Bạn có thể cần phải thực hiện điều chỉnh khác để buildfile cũng bởi vì không phải tất cả những gì áp dụng cho các ứng dụng có thể được quy định tại một buildfile thư viện . Xem http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-projects để biết thêm thông tin.

+0

Cảm ơn bạn đã trả lời nhanh chóng. Tôi hawe nhận thấy rằng trước và cũng đọc tài liệu. Nhưng vấn đề là trong bản kê khai của các thư viện. Tôi sẽ đăng giải pháp của tôi như là một câu trả lời sớm. – Primoz990

9

loại bỏ mục đích lọc từ hoạt động khai trương thư viện của bạn

<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> 

Thay đổi để

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

câu trả lời rất hay. đang tạo thư viện aar bằng cách sử dụng studio. sau khi tạo tệp aar lib, nhập vào dự án khác. trong khi cài đặt tập tin apk chính vào điện thoại di động, nó hiển thị hai apk trong màn hình điện thoại di động. Tôi đã làm theo các bước của bạn. Tôi có sản lượng hoàn hảo. – harikrishnan

Các vấn đề liên quan