2012-06-04 21 views
48

Tôi cuối cùng đã tạo kho khóa 'cuối cùng' cho ứng dụng của mình. Vì ứng dụng của tôi đang sử dụng Google Maps nên tôi phải cập nhật tất cả các Bố cục để sử dụng Khóa API mới do ứng dụng này ..Định cấu hình Eclipse để sử dụng kho khóa đã ký

Bây giờ tôi hoàn toàn nhận thức được yêu cầu xuất APK đã ký để phát hành , nhưng sau đó thì sao? Suy nghĩ của tôi là để phát triển và thử nghiệm thêm, sẽ dễ nhất nếu tôi có thể cấu hình Eclipse để sử dụng kho khóa cuối cùng của tôi thay vì kho khóa gỡ lỗi… nhưng tôi không tìm thấy cách nào để làm điều đó? Nó chỉ cho phép tôi cấu hình khóa gỡ lỗi 'thay thế' nhưng tôi đoán điều đó không giống nhau.

Xin lỗi nếu tôi quá bối rối nếu tôi hoàn toàn hiểu nhầm điều gì đó ở đây.

+3

FYI, nếu bạn cần gỡ lỗi với kho khóa phát hành của mình, hãy thêm android: debuggable = "true" vào tệp AndroidManifest.xml và sau đó xuất APK đã ký. Chạy ứng dụng trên thiết bị và bạn sẽ có thể đính kèm vào quá trình của mình và đạt điểm ngắt. –

Trả lời

61

tôi đã có thể sử dụng Chơi phát hành keystore Google của tôi như tùy chỉnh debug keystore của tôi để giúp với gỡ lỗi chức năng mua trong ứng dụng. Điều tương tự cũng không thể được áp dụng để gỡ lỗi các công cụ của Google Maps.

Devunwired mentioned, hãy cẩn thận. Nhưng giải pháp của tôi là:

  1. Sao chép khóa phát hành của bạn ở đâu đó.
  2. Thay đổi mật khẩu kho khóa/mật khẩu khóa và bí danh khóa sau the instructions here (cũng theo các khuyến nghị của Devunwired để làm cho nó trông giống như một kho khóa gỡ lỗi).
  3. Thay đổi tùy chọn của Eclipse> Android> Xây dựng> Cài đặt kho khóa tùy chỉnh thành đường dẫn của bản sao được thực hiện ở bước 1.
  4. Xong!
+1

Hoạt động tốt. Vấn đề duy nhất tôi có là do thực tế ứng dụng của tôi được chia thành hai phần (ứng dụng thư viện và môi trường cụ thể). Tôi đã nhận được ngoại lệ java.lang.NoClassDefFoundError cho đến khi tôi làm sạch cả hai phần để xây dựng lại. –

+0

Câu trả lời này với các liên kết được cung cấp chỉ là những gì tôi cần để mua hàng trong ứng dụng hoạt động từ một bản dựng gỡ lỗi. Cảm ơn! –

70

Bạn có thể định cấu hình kho khóa tùy chỉnh để sử dụng cho các bản dựng lỗi của bạn (những cái xảy ra khi bạn bấm Chạy ...) trong Eclipse bằng cách chuyển đến Tùy chọn -> Android -> Xây dựng và nhập tên tệp trong "Tùy chỉnh gỡ lỗi keystore "tùy chọn.

Tuy nhiên, nó có sự báo trước rằng nó phải tuân theo các quy tắc tương tự như một debug keystore truyền thống, chủ yếu là:

  1. Mật khẩu keystore phải "android"
  2. Nó phải chứa một khóa có tên "androiddebugkey"
  3. mật khẩu của chủ chốt đó phải là "android"

Vì vậy, trong khi chúng ta có thể đăng ký ứng dụng của bạn trong debug wit h cùng một keystore khi bạn Export with, nó yêu cầu kho khóa sản xuất của bạn trông giống như một cửa hàng gỡ lỗi, điều này làm cho nó kém an toàn hơn nếu ai đó có được ahold nếu tệp (sẽ dễ dàng kiểm tra và đoán mật khẩu).

HTH

+0

Cảm ơn bạn đã làm rõ!Điều đó có nghĩa là nếu tôi chỉ sử dụng khóa cuối cùng của mình để tạo gói APK phát hành, tôi phải điều chỉnh tất cả khóa API Google Maps trước khi tạo gói APK, điều đó có đúng không? – richey

+0

Tùy chọn BTW có thể được tìm thấy bằng cách vào danh sách thả xuống 'Window' sau đó chọn 'Preferences' – Hevski

+1

Có vẻ có một cảnh báo khác rằng tùy chọn này là toàn cầu đối với tất cả các dự án trong Eclipse. Do đó, các dự án khác cũng sẽ sử dụng khóa gỡ lỗi mới này khi bạn gỡ lỗi chúng, có khả năng gây hiểu nhầm (các ứng dụng được ký bằng cùng một khóa có thể giao tiếp dễ dàng hơn với nhau). Trong Android Studio, có vẻ như khóa gỡ lỗi có thể được đặt trên cơ sở từng dự án. – ADTC

3

Chúng tôi đặt keystore tùy chỉnh để sử dụng cho debug của chúng tôi được xây dựng. Eclipse Chuyển đến Tùy chọn -> Android -> Xây dựng và gắn tên tệp trong "kho khóa gỡ lỗi tùy chỉnh".

Quan trọng khi chúng tôi tạo kho khóa cho hải quan nhật thực.:

Mật khẩu keystore phải "android" Nó phải chứa một khóa có tên "androiddebugkey" mật khẩu của chủ chốt Đó phải là "android" Vì vậy, trong khi chúng ta có thể đăng ký ứng dụng của bạn trong debug với keystore giống như bạn Xuất với, nó yêu cầu kho khóa sản xuất của bạn trông giống như một cửa hàng gỡ lỗi, điều này làm cho nó kém an toàn hơn nếu ai đó có được ahold nếu tệp (sẽ dễ dàng hơn khi kiểm tra và đoán mật khẩu).

nếu chúng ta muốn thay đổi mật khẩu keystore: $ keytool -storepasswd -keystore my.keystore

nếu chúng ta muốn thay đổi mật khẩu keystore bí danh: $ keytool -keypasswd -keystore my.keystore -alias MY_NAME

nếu chúng ta muốn thay đổi bí danh keystore: $ keytool -changealias -keystore my.keystore -alias MY_NAME -destalias my_new_name

Vkj enter image description here

0

Bạn có thể nhập cả bản gỡ lỗi và bản phát hành SHA1 của bạn cho cùng một khóa API Google bằng Bảng điều khiển dành cho nhà phát triển của Google (console.developers.google.com).

Bằng cách này, bạn sẽ có cùng một khóa API cho cả hai và sẽ không còn phải thay đổi nó trong tệp AndroidManifest.xml nữa.

0

Chúng tôi có cùng một vấn đề một thời gian trước tại văn phòng của chúng tôi. Vì chúng tôi cần điều này khá thường xuyên, chúng tôi đã viết một kịch bản đơn giản để làm cho nó dễ dàng để chuyển đổi keystores phát hành để gỡ lỗi những người thân.

Các kịch bản có sẵn trên https://github.com/IntellexApps/key2debug

Chúng tôi đang sử dụng nó trong một thời gian hiện nay, vì vậy nên được khá ổn định.

cổ vũ!

4

Để Eclipse ký tự động cho bạn khi bạn triển khai, bạn cần phải thiết lập kho khóa hoạt động giống như kho khóa gỡ lỗi. Điều này có nghĩa là phải có 'androiddebugkey' và cả mật khẩu khóa và khóa phải là 'android'. Vì vậy, tôi khuyên bạn như sau:

  1. Tạo một bản sao của keystore của bạn, tôi sao chép của tôi vào một tập tin gọi là iap.keystore
  2. mở thiết bị đầu cuối cửa sổ/lệnh với keytool trên con đường (đối với tôi con đường là D: \ NVPACK \ jdk1.6.0_45 \ bin \ keytool.exe) hoặc sử dụng các fullpath để keystore trong các lệnh dưới đây
  3. Thay đổi mật khẩu keystore của mình để 'android':
    • keytool -storepasswd -keystore iap.keystore
    • theo dấu nhắc để nhập mật khẩu keystore cũ của bạn
    • theo dấu nhắc để nhập android như mật khẩu mới
    • theo dấu nhắc để xác nhận android như mật khẩu
  4. Đổi tên chìa khóa của bạn đến androiddebugkey (thay Old_Key_Store_Name với tên chủ chốt hiện tại của bạn trong lệnh tiếp theo)
    • keytool -changealias -keystore iap.keystore -alias Old_Key_Store_Name -destalias androiddebugkey
    • theo dấu nhắc để nhập mật khẩu keystore của mình (mà bây giờ là andorid)
    • theo dấu nhắc để nhập mật khẩu Old_Key_Store_Name của bạn (đây là bất cứ điều gì bạn đã đặt mật khẩu khóa trước đây của mình)
  5. Thay đổi mật khẩu cho androiddebugkey
      012 của bạn
    • keytool -keypasswd -keystore iap.keystore -alias androiddebugkey
    • theo dấu nhắc để nhập mật khẩu keystore của mình (mà bây giờ là andorid)
    • theo dấu nhắc để nhập androiddebugkey mật khẩu của bạn (đây là những gì bạn đã từng mật khẩu quan trọng của bạn thiết lập để)
    • theo dấu nhắc để nhập android như mật khẩu khóa mới
    • theo dấu nhắc để xác nhận android như mật khẩu chủ chốt
  6. Bây giờ bạn có một keystore (với key) mà Eclipse c một cách sử dụng để tự động ký các nhà xây dựng.
  7. Tải Eclipse lên.
  8. Window -> Preferences -> Android -> Xây dựng
  9. Thực hiện theo 'Custom debug keystore' browse đến file iap.keystore chúng tôi trước tạo
  10. OK

Bây giờ khi bạn khởi động/debug dự án của bạn , nó sẽ sử dụng kho khóa mà chúng tôi vừa thiết lập để ký dự án của bạn. Điều này sẽ cho phép những thứ như IAP hoạt động.

BEWARE: điều này thuận tiện, nhưng tất nhiên nếu ai đó nắm giữ iap.keystore của bạn, họ sẽ có thể ký mọi thứ khi bạn sử dụng 'android' làm kho khóa/mật khẩu khóa. Hy vọng rằng điều này rõ ràng là từ các bước được liệt kê ở trên, nhưng chỉ mất một giây để đánh giá cao những gì điều này có nghĩa cho chính mình (hoặc công ty của bạn). Sau đó, dựa trên quyết định đó nếu các rủi ro có thể chấp nhận được và nếu bạn cần thực hiện bất kỳ biện pháp bổ sung nào để đảm bảo sự an toàn của tệp này.

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