2016-03-22 19 views
6

Tôi có hai hương vị trong dự án Android của tôi, một trong những hoạt động với máy chủ thử nghiệm và một với sản xuất. Tôi lưu trữ URL bên trong một tài nguyên chuỗi, vì vậy tôi có thể truy cập URL chính xác dựa trên một hương vị mà tôi chọn để biên dịch. Thông thường tôi cần phải tạo nhiều tập tin apk trong một ngày, mỗi lần cho cả hai máy chủ.Tạo nhiều tệp APK với một bản dựng dự án trong Android Studio

Có cách nào để tạo hai tệp apk mỗi lần tôi chạy dự án của mình hay xây dựng một apk từ menu Xây dựng?

+0

Có một plugin Gradle cũng: https://github.com/JcMinarro/ProperDroid –

Trả lời

7

Nếu bạn có một cái gì đó như thế này:

android { 
    productFlavors { 
     dev { 
      applicationId "your.com.android.devel" 
      buildConfigField 'String', 'HOST', '"http://192.168.1.78"' 

     } 

     prod { 
      applicationId "your.com.android" 
      buildConfigField 'String', 'HOST', '"http://yourserver.com"' 
     } 
    } 
} 

Bạn chỉ cần chạy lắp ráp trong Gradle dự án

enter image description here

Và bạn có thể tìm thấy tất cả các gói ứng dụng khác nhau xây dựng/đầu ra/apk

enter image description here

Hope lần này tôi muốn thể hữu ích hơn

1

Bạn có thể sử dụng dòng lệnh này trong Gradle:

./gradlew assemble 

Hoặc bạn có thể tạo saparately tất cả các hương vị cho gỡ lỗi hoặc phát hành tương ứng

./gradlew assembleDebug 
./gradlew assembleRelase 
1

Mastering "Product Flavors" on Android

Điều duy nhất bạn phải làm là xác định nó trên mỗi hương vị sản phẩm của bạn:

android { 
    productFlavors { 
     devel { 
      applicationId "zuul.com.android.devel" 
     } 

     prod { 
      applicationId "zuul.com.android" 
     } 
    } 
} 

Gửi yêu cầu tới nhiều máy chủ tùy thuộc vào hương vị Như trước đây, bạn phải bao gồm một số thông số trên trường cấu hình sản phẩm hương vị của bạn.

android { 
    productFlavors { 
     devel { 
      applicationId "zuul.com.android.devel" 
      buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"' 

     } 

     prod { 
      applicationId "zuul.com.android" 
       buildConfigField 'String', 'HOST', '"http://api.zuul.com"' 

     } 
    } 
} 

Ví dụ, chúng tôi sẽ cố gắng chỉ cho bạn cách tích hợp với Retrofit để gửi yêu cầu tới máy chủ thích hợp mà không cần xử lý máy chủ nào bạn đang trỏ và dựa trên hương vị. Trong trường hợp này đây là một đoạn trích của ứng dụng android Zuul:

public class RetrofitModule { 

    public ZuulService getRestAdapter() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(BuildConfig.HOST) 
       .setLogLevel(RestAdapter.LogLevel.FULL) 
       .build(); 
     return restAdapter.create(ZuulService.class); 
    } 

} 

Như bạn có thể nhìn thấy bạn chỉ cần sử dụng BuildConfigclass để truy cập biến bạn vừa xác định.

+0

Mặc dù đây là một ví dụ hữu ích nhưng nó không trả lời câu hỏi gốc. –

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