2010-08-24 30 views
8

Tôi cần tạo ứng dụng Robotium sẽ sử dụng ứng dụng Cài đặt để BẬT/TẮT WIFi từ menu Cài đặt-> Không dây & mạng-> Wi-Fi. Tôi quản lý để tìm thấy một số mã mẫu here chứng tỏ làm thế nào để khởi động ứng dụng bằng cách chỉ có tập tin apk. Vấn đề là ứng dụng Robotium của tôi phải có cùng chữ ký với ứng dụng Cài đặt (hệ thống). Trong khi cố gắng để chạy ứng dụng Tôi nhận được thông báo lỗi:Tôi làm cách nào để đăng ký ứng dụng của mình bằng khóa chữ ký hệ thống?

Chạy thử thất bại: Permission từ chối: bắt đầu đo đạc ComponentInfo {com.jayway.test/android.test.InstrumentationTestRunner} từ pid = 354, uid = 354 không được phép vì gói com.jayway.test không không có một chữ ký phù hợp với các mục tiêu com.android.settings

  1. tôi có thể bằng cách nào đó làm cho nó làm việc với Android Emulator?
  2. Nếu tôi biên dịch hình ảnh điện thoại Android, làm cách nào tôi có thể sử dụng chữ ký hệ thống Android với ứng dụng của mình?

Trả lời

1

Cách tốt nhất để bật wifi từ ứng dụng của bạn sẽ là sử dụng WifiManager.

WifiManager wManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 

if(!wManager.isWifiEnabled() && wManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING) 
    wManager.setWifiEnabled(true); 

Lưu ý: Bạn cũng phải bổ sung các điều khoản sau đây để bạn manifest

<uses-permission android:name="android.permissions.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permissions.CHANGE_WIFI_STATE" /> 
+0

Tôi không chỉ cần bật/tắt WiFi. Tôi cần phải điều khiển ứng dụng Cài đặt bằng tập lệnh Robotium. Trong thực tế, tôi muốn mô phỏng nhấp chuột của người dùng để bật/tắt WiFi. Quá trình này có thể được thực hiện bằng cách sử dụng tập lệnh tùy chỉnh với công cụ khỉ. Mặc dù tôi muốn sử dụng Robotium để xác minh xem một điểm truy cập có thực sự được tìm thấy hay không. Mục tiêu chính của tôi là làm cho tập lệnh Robotium này có quyền truy cập trên com.android.settings.apk. Điều này sẽ bỏ qua chữ ký không khớp và sẽ cho phép tập lệnh Robotium của tôi kiểm soát APK này. – Michalis

14

Tôi đã có cùng một vấn đề .. Có một số điều khoản mà chỉ có hệ thống các ứng dụng được phép có. Tôi đã cố gắng truy cập các lệnh adb shell dumpsys từ ứng dụng của tôi với các quyền android.permission.DUMP.

Các giải pháp này là ...

Trong file manifest Android của dự án của bạn thêm dòng sau trong thẻ manifest

android:sharedUserId="android.uid.system" 

Bạn cần phải có hai phím chữ ký hiện diện trong các mã được sử dụng để xây dựng nhị phân.

platform.x509.pem

platform.pk8

đó là hiện diện trong

android/build/mục tiêu/sản phẩm/an ninh

Tải xuống công cụ từ mạng tức là

signapk.jar

Từ việc xuất khẩu thực apk unsigned của bạn. bằng cách nhấp chuột phải vào dự án từ các công cụ Android. Giữ tất cả mọi thứ tức là các khóa, apk chưa ký và signapk.jar trong một thư mục.Chạy lệnh sau đây

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk 

apk chưa ký là tên của gói ứng dụng và apk đã ký là tên mới bạn muốn. Sau khi điều này chỉ cần cài đặt ứng dụng đã ký của bạn trong điện thoại với lệnh

adb shell install signed.apk 
+1

Nirmit quên đề cập đến để có được 'android/build/target/product/security', bạn phải kiểm tra cây mã nguồn Android từ [here] (http://source.android.com/source/downloading. html). – ChuongPham

+0

cảm ơn !! choungpham cho con đường. –

+2

Nếu bạn không thể kiểm tra mã nguồn Android đầy đủ (ví dụ: bạn đang sử dụng Windows), bạn có thể kiểm tra kho lưu trữ đơn này: git clone https://android.googlesource.com/platform/build. Các tệp nền tảng sẽ nằm dưới mục tiêu/sản phẩm/bảo mật – Alexey

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