2010-06-21 33 views
5

tôi sử dụng để kiểm tra Instrumentation PhoneApp tôi đã viết ứng dụng thử nghiệm của tôi qua Instrumentationjava.lang.SecurityException: Permission từ chối:

Tôi tạo ra apk và cài đặt nó trên Nexus One - Điện thoại Android - điều này thông qua Trong mã tôi của tôi đang sử dụng các lớp nội bộ không phải là một phần của SDK chuẩn. Tôi xây dựng nó không phải trong Eclipse nhưng trong env nhúng của tôi. Tôi tham gia vào công ty phát triển Android nên tôi có và cây Android với tất cả thư viện nội bộ.

Tôi sử dụng các quyền thích hợp trong tệp kê khai của mình.

apk của tôi được tạo có thể được ký bằng một số chữ ký !! Nhưng có lẽ chữ ký này không đủ tốt.

Bây giờ tôi chạy thử nghiệm qua adb và đã nhận lỗi này ngay lập tức:

------------------------------------------------------------------------------------- 
INSTRUMENTATION_STATUS: id=ActivityManagerService 
INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.android.phonetests/com.android.phonetests.PhoneInstrumentationTestRunner} from pid=495, uid=495 not allowed because package com.android.phonetests does not have a 
signature matching the target com.android.phone 
INSTRUMENTATION_STATUS_CODE: -1 
java. 
lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.android.phonetests/com.android.phonetests.PhoneInstrumentationTestRunner} from pid=495, uid=495 not allowed because package com.android.phonetests does not have a 
signature matching the target com.android.phone 
------------------------------------------------------------------------------------- 

Xin vui lòng giúp.

Trả lời

1

Tôi nghĩ rằng sự cố có thể là chứng chỉ được sử dụng để ký ứng dụng "chính" và ứng dụng thử nghiệm của bạn khác. I giả sử ứng dụng thử nghiệm của bạn đang xác định chính nó như một công cụ của ứng dụng chính của bạn. Làm như vậy cho phép ứng dụng thử nghiệm của bạn chạy trong quy trình của ứng dụng chính, truy cập các lớp của ứng dụng, v.v. vì vậy, vì lý do bảo mật, hai ứng dụng phải là được ký với cùng một chứng chỉ.

Câu trả lời là từ this forum.

+0

Bạn thấy Khi tôi là ứng dụng của tôi trên nền tảng của chúng tôi (Thiết bị điện thoại) Tôi không nhận được sự từ chối quyền như vậy !! Điều này chỉ xảy ra nếu tôi đã cài đặt và chạy apk của mình trên điện thoại tham chiếu chẳng hạn như Nexus One của Google hoặc bất kỳ ứng dụng nào khác. Ứng dụng điện thoại thử nghiệm ứng dụng của tôi đang chạy trên Điện thoại ?? – ilana

1

Làm sạch dự án của bạn và xây dựng ngay lập tức. Và nhìn vào AndroidManifest của bạn nếu có một itent như thế này:

category android:name="android.intent.category.LAUNCHER" 
0

Tôi cố định cùng một vấn đề bằng cách thêm chứng chỉ mà ký ứng dụng của tôi được kiểm tra như đã được mô tả trong Android trang web Nhà phát triển: Trong Eclipse: đi đến Windows> Tùy chọn> Android> Xây dựng và thêm vào trong kho khóa tùy chỉnh của bạn trong kho khóa ứng dụng của bạn.

Tạo lại gói thử nghiệm và bạn nên làm tốt.

Hy vọng điều này sẽ hữu ích.

1

Lỗi này là bởi vì bạn đang thử nghiệm một ứng dụng cấp phép hệ thống và các ứng dụng để được kiểm tra phải ở trong hệ thống/dữ liệu và dự án application_test có thể được cài đặt trong data/app

0

Vấn đề này có thể được giải quyết bằng cách gỡ bỏ cài đặt tập tin apk và ứng dụng thử nghiệm từ trình mô phỏng. Và sau đó từ chức ứng dụng với re-sign.jar và sau đó cài đặt apk và sau đó chạy ứng dụng thử nghiệm.

1

Đây là một

chữ ký phù hợp '

vấn đề. Đảm bảo APK của dự án thử nghiệm và APK của dự án mục tiêu của nó được ký bằng cùng một chứng chỉ.

3

Bạn có tìm thấy giải pháp cho vấn đề này không? Tôi có thể tái tạo điều này khi tôi có một gói ứng dụng thử nghiệm vẫn được cài đặt trên thiết bị đã được ký bằng một khóa khác.

Vì vậy, để khắc phục gỡ cài đặt adb đầu tiên với cả gói ứng dụng của bạn và gói thử nghiệm của bạn.

adb uninstall com.android.phone 
adb uninstall com.android.phonetests 
+0

Điều này làm việc cho tôi –

0

Có vấn đề tương tự mà không may mắn nhận được bất kỳ chữ ký nào để đồng ý.

Sử dụng bản dựng ứng dụng gỡ lỗi (./gradlew assembleDebug) thay vì phát hành có thể giúp giải quyết vấn đề hoàn toàn vì ứng dụng gỡ lỗi không cần phải ký trước khi chúng được cài đặt.

0

giải pháp này chỉ dành cho hệ thống ứng dụng

Trong trường hợp của tôi, lỗi này xảy ra khi tôi tạo InstrumentationTest trường hợp cho các ứng dụng hệ thống hiện có (Chúng tôi đang xây dựng của chúng tôi OS android riêng dựa trên AOSP)

Chúng tôi thường xây dựng gói ứng dụng bằng cách sử dụng lệnh mm dựa trên tệp Android.mk, tại đây khóa là LOCAL_CERTIFICATE.

Tìm Android.mk trong ứng dụng Hệ thống được nhắm mục tiêu và dự án trường hợp thử nghiệm do bạn phát triển.

giá trị Android.mk LOCAL_CERTIFICATE hệ thống ứng dụng của phải phù hợp với giá trị Android.mk LOCAL_CERTIFICATE InstrumentationTest trường hợp dự án của

Chúc may mắn!

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