2016-01-27 13 views
14

Tôi muốn tạo loại bản dựng thứ hai sẽ hoạt động chính xác như loại gỡ lỗi hiện có. Hiện tại tôi có hai kiểu build: debug và release. Trình gỡ rối có thể chạy với một lần nhấp và được tự động ký với kho khóa gỡ lỗi. Tôi tự biên dịch bản phát hành thông qua trình hướng dẫn Build -> Generate signed APK.Android Studio: cách tạo loại bản dựng gỡ lỗi thứ hai

Vì vậy, để sao chép kiểu debug xây dựng, đầu tiên tôi đã thêm một loại build thứ hai có tên là "địa phương" vào tập tin ứng dụng build.graddle:

buildTypes { 
    ... 
    debug { 
     debuggable true 
     minifyEnabled false 
    } 
    local { 
     debuggable true 
     minifyEnabled false 
    } 
} 

Sau đó, tôi tạo app/src/local/res và thêm một số tập tin.

Sau đó, tôi làm một resync gradle và chọn kiểu build mới trong tab bên trái: build type tab

Cuối cùng tôi bấm nút chạy và tôi hy vọng nó sẽ chỉ làm việc. Đây IntelliJ help article nói cấu hình debug ký là mặc định:

Điều này có nghĩa rằng nếu bạn không cấu hình một artifact bằng tay và chọn tùy chọn triển khai mặc định APK trong Configuration Run/Debug: hộp thoại ứng dụng Android, IntelliJ IDEA sẽ sử dụng giá trị được xác định trước trong giấy chứng nhận cho tạo

Thay vào đó, hộp thoại này được thể hiện:

run dialog

Khi tôi nhấp vào nút sửa, nó sẽ mở hộp thoại cấu hình ký cho toàn bộ mô-đun ứng dụng. Tuy nhiên, tôi không muốn ký gói ứng dụng này để phát hành, tôi cần nó được ký với cert gỡ lỗi. Ngoài ra tôi nhận thấy rằng một nhiệm vụ mới của assembleLocal gradle đã được tạo, nhưng nó tạo ra một gói ứng dụng chưa được ký. Trong thư mục này, tôi có thể thấy các trình gỡ lỗi thường xuyên được tạo ra chính xác trong các phiên bản chưa được ký và cuối cùng của chúng.

Làm cách nào để tôi có thể sao chép loại xây dựng gỡ lỗi?

+0

Bạn nên chấp nhận câu trả lời đúng , đối với tôi đó là * ivan.panasiuk * answer – TacB0sS

Trả lời

21

Bạn có thể chỉ định trong tệp build.gradlesigningConfig nên được sử dụng với buildType.

Ký sử dụng cùng một signingConfig như gỡ lỗi mặc định buildType, sử dụng như sau:

buildTypes { 
    local { 
     signingConfig signingConfigs.debug 
    } 

    /* NOTE: the debug block is not required because it is a default 
    * buildType configuration; all of its settings are defined implicitly 
    * by Android Studio behind the scenes. 
    */ 
} 

Nếu bạn muốn sử dụng một keystore tùy chỉnh nằm trên hệ thống địa phương của bạn, sử dụng sau đây thay vì:

signingConfigs { 
    local { 
     storeFile file("/path/to/custom.keystore") 
     storePassword "password" 
     keyAlias "MyLocalKey" 
     keyPassword "password" 
    } 
} 

buildTypes { 
    local { 
     signingConfig signingConfigs.local 
    } 
} 
+0

Xin lỗi, chúng tôi không bao gồm cấu hình ký tên trong build.gr adle vì mỗi thành viên trong nhóm có một đường dẫn hệ điều hành và kho khóa khác nhau và đồng bộ hóa VCS sẽ phá vỡ các không gian làm việc của các nhà phát triển khác. Nhưng quan trọng nhất, tôi không muốn ký phát hành. Nó sẽ ký với cùng một debug cert cấu hình debug đang sử dụng. –

+0

@MisterSmith Mỗi loại xây dựng được ký với một kho khóa. Và tất nhiên bạn có thể sử dụng kho khóa gỡ lỗi, kiểm tra phần đầu tiên của câu trả lời. Phần quan trọng của câu trả lời là bạn phải xác định cấu hình ký tên trong build.gradle vì kiểu xây dựng cục bộ là kiểu xây dựng tùy chỉnh và không có mặc định. –

+0

Tôi hiểu điều đó. Nhưng những gì tôi nên viết trong "địa phương" signedConfig để nó sử dụng các kho khóa gỡ lỗi mặc định? –

1

Cách khác có thể là sử dụng hương vị.

Ví dụ:

producFlavors{ 

app1{} 

app2{} 

} 
+0

Vâng, đó có lẽ là cách dễ nhất. –

+0

đó là một giải pháp tốt, nhưng vấn đề của tôi với falviours rằng tôi sẽ có kết hợp buildType & flavor. Nếu tôi chỉ muốn chuyển đổi giữa các môi trường gỡ lỗi khác nhau thì sao? – Karoly

+0

Bạn có các biến thể xây dựng trên tab. Ở đó bạn có thể chọn biến thể xây dựng. – Azrael94

17

Ngoài ra, bạn có thể làm cho loại xây dựng của bạn tương tự để gỡ lỗi sử dụng:

initWith(buildTypes.debug) 

Dưới đây là một ví dụ:

... 
buildTypes { 

    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://theidasworld.com"' 
    } 
    debug { 
     versionName 'APP BETA' 
     buildConfigField "Integer", "PIN", "0000" 
     buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://debug.theidasworld.com"' 
    } 
    inspection { 
     initWith(buildTypes.debug) // keep versionName and PIN from 'debug' 
     buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://inspection.theidasworld.com"' 
    } 
} 
... 
+0

Cảm ơn một tấn, tôi đã thử thiết lập signConfig signingConfigs.debug, tôi đã mong đợi nó hoạt động, nhưng không, giải pháp của bạn đã làm được !! cảm ơn – TacB0sS

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