2010-08-24 20 views
8

Ayarlar -> Kablosuz & ağları -> Wi-Fi menüsünden WIFi'yi AÇIK/KAPALI duruma getirmek için Ayarlar uygulamasını kullanacak bir Robotium uygulaması oluşturmam gerekiyor. Sadece apk dosyasını kullanarak uygulamayı nasıl başlattığınızı gösteren here örnek kodunu bulmayı başardım. Sorun, Robotium uygulamamın (sistem) Ayarlar uygulamasıyla aynı imzanın olması gerektiğidir.Uygulamamı sistem imza anahtarıyla nasıl imzalarım?

Deneme sürüşü başarısız oldu:: İzin Reddi: uygulamayı çalıştırmak için çalışırken şu hata mesajını alıyorum başlayan enstrümantasyon ComponentInfo {com.jayway.test/android.test.InstrumentationTestRunner} pid gelen = 354, uid = 354 izin verilmez paket com.jayway.test imza hedef com.android.settings

  1. Ben nasılsa Android Emülatörü'nde ile çalışmak yapabilir eşleşen olmadığından?
  2. Bir Android telefon görüntüsünü derlediğimde, Android sistem imzasını uygulamam ile nasıl kullanabilirim?

cevap

1

Uygulamanızdan wifi'yi etkinleştirmenin en iyi yolu, WifiManager'u kullanmak olacaktır.

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

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

Not: Ayrıca aşağıdaki izinleri eklemek zorunda senin apaçık sadece sistem uygulamaları için izin verilen bazı izinler var

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

Sadece/kapama WiFi açmak gerekmez ile telefonda imzalı uygulamasını yükleyin. Ayarlar uygulamasını bir Robotium komut dosyasıyla kontrol etmem gerekiyor. Aslında, WiFi'yi açmak/kapatmak için kullanıcı tıklamalarını simüle etmek istiyorum. Bu işlem, maymun aracıyla özel bir komut dosyası kullanılarak yapılabilir. Her ne kadar bir Access Point'in gerçekten bulunup bulunmadığını doğrulamak için Robotium kullanmak istiyorum. Birincil hedefim, bu Robotium komut dosyasının com.android.settings.apk üzerinden erişebilmesini sağlamaktır. Bu, imza uyumsuzluğunu atlayacak ve Robotium komutumun bu APK'yı kontrol etmesine izin verecektir. – Michalis

14

ben de aynı sorunu vardı ... android.permission.DUMP izinleriyle uygulamamdan adb shell dumpsys komutlarına erişmeye çalışıyordum.

projenizin Android manifest dosyasında bu çözüm ...

android:sharedUserId="android.uid.system" 

Sen kodunda mevcut iki imza anahtarlarını olması gerekir tezahür etiketinde aşağıdaki satırı ekleyin Bu ikili oluşturmak için kullanılır.

robot/inşa/hedef/ürün/güvenlik mevcut olan platform.x509.pem

platform.pk8

Ağdan bir araç indirin, örneğin

tutulma ihracat sizin imzasız apk itibaren signapk.jar

. Android araçlardan projeye sağ tıklayarak. Anahtar, imzasız apk ve signapk.jar gibi her şeyi bir klasörde saklayın.Aşağıdaki komut

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

imzasız apk çalıştırın Apk'nizin adıdır ve imzalı apk istediğiniz yeni adıdır. Bundan sonra sadece komuta

adb shell install signed.apk 
+1

Nirmit, 'android/build/target/product/security' komutunu alabilmek için, Android kaynak kodları ağacını [buradan] (http://source.android.com/source/downloading adresinden) kontrol etmeniz gerektiğini belirtmeyi unutmuş. html). – ChuongPham

+0

Teşekkürler! yol için choungpham. –

+2

Tam android kaynak kodunu (örneğin Windows'taki) kontrol edemiyorsanız, bu tek depoyu kontrol edebilirsiniz: git klon https://android.googlesource.com/platform/build. Platform dosyaları hedef/ürün/güvenlik altında olacak – Alexey

İlgili konular