React Native uygulamamda hata ayıklamak üzere geliştirici menüsünü açmak için Android öykünücüsündeki bir Android cihazı nasıl "sallayabilirim"


201

Bir çapraz platform React Native mobil uygulaması üzerinde çalışıyorum. Geliştirirken console.log deyimleri yazıyorum. Android uygulamasını varsayılan Android öykünücüsünde çalıştırırken bu günlük bildirimlerini Chrome'da görmek istiyorum. Facebook'un belgelerine göre sadece "cihazı sallamam" gerekiyor. Bunu Android öykünücüsünde nasıl yapabilirim?

Uygulama içi geliştirici menüsüne erişmek için:

İOS'ta cihazı sallayın veya simülatörde kontrol + ⌘ + z tuşlarına basın. Android'de cihazı sallayın veya donanım menü düğmesine basın (daha eski> cihazlarda ve emülatörlerin çoğunda, örneğin genymotion'da hardware + m tuşlarına basarak> donanım menüsü düğmesine tıklamayı simüle edebilirsiniz)

Yanıtlar:


222

Android Emülatörü basın uygulamanızda dahilinde Command+ MMacOS veya Ctrl+ MLinux ve Windows üzerinde.


2
Ne yazık ki F2 artık Android Emulator 2 beta sürümünde Linux'ta çalışmıyor. Şimdi ne var?
Szczepan Hołyszewski

7
@ SzczepanHołyszewski Eklemek istiyorum, şu anda linux, ctrl + m geliştirici menüsünü getiriyor
Ozum Safa

<kbd> f1 </kbd>, ... <kbd> f12 </kbd> çoğu bilgisayarda kafa karıştırıcı ve baskı yapmak zor
ericn

223

Emülatörde çalışan bir React Native ile, +
tuşuna basın (Linux için, Windows ve Mac OS X için + aynıdır ) veya terminalde aşağıdakileri çalıştırın: ctrlmm

adb shell input keyevent 82

2
Hemen benim için çalışmıyor. "Ayarlar" ("...")> Ayarlar> Klavye Kısayollarını Gönder> Öykünücü Denetimleri'ne (sanal aygıt değil) gitmem gerekiyordu.
Ryan Knell

ctrl + m linux üzerinde çalışmaz. Bu adb shell komutu bir kısayol tercih etsem bile çalışır .... sanırım ben başka bir yol bulamazsanız bu komutu başlatan birini yapabilirim
Laurent

Bir aygıt belirtmek için yapın adb -s <device id/serial> shell input keyevent 82. Bunu hem emülatör hem de fiziksel bir cihaz kullanırken kullanıyorum.
grisaitis

79

Android Studio 2.0 ile birlikte gelen yeni emülatörü kullanıyorsanız, tıpkı Genymotion'daki gibi menü tuşunun klavye kısayolu artık Cmd + M'dir.

Alternatif olarak, adbbir terminalde kullanarak her zaman bir menü düğmesine basabilirsiniz :

adb shell input keyevent KEYCODE_MENU

Ayrıca menü düğmesi kısayolunun katı bir gereksinim olmadığını, yalnızca ReactActivityJava sınıfı tarafından sağlanan varsayılan davranışı (projenizi oluşturduysanız varsayılan olarak kullanılır react-native init) olduğunu unutmayın. İşte alakalı kod onKeyUpiçinde ReactActivity.java:

if (keyCode == KeyEvent.KEYCODE_MENU) {
  mReactInstanceManager.showDevOptionsDialog();
  return true;
}

Mevcut bir uygulamaya React Native ekliyorsanız ( buradaki belgeler ) ve ReactActivitymenü düğmesini kullanmıyorsanız , menü düğmesini de benzer şekilde bağlamanız gerekir. Ayrıca ReactInstanceManager.showDevOptionsDialogbaşka herhangi bir mekanizmayı da arayabilirsiniz . Örneğin, üzerinde çalıştığım bir uygulamada, menüyü getiren yalnızca devasa bir Action Bar menü öğesi ekledim, çünkü bunu fiziksel bir cihaz üzerinde çalışırken cihazı sallamaktan daha uygun buluyorum.


Bu benim mi4i üzerinde MIUI üzerinde çalışmıyor. sadece uygulama tepsisini getirir. başka bir çözüm var mı? gerçekten benim dizüstü dışarı bok yavaşlatır gibi bir öykünücü üzerinde çalıştırmak istemiyorum
Shreyans

miui ile ilgili başka sorunlar var gibi görünüyor. Bildirim iznini etkinleştirdikten sonra menüyü almak için cihazı sallayabilirim. başka birinin MIUI ile ilgili sorunları olması durumunda bu konuyu kontrol edin github.com/facebook/react-native/issues/2754
Shreyans

Tüm bu öğelerin nasıl çalıştığı hakkında daha fazla ayrıntı eklemek için yayımı düzenledim, bu da sorunu izlemenize yardımcı olabilir. En iyi tahminim, kullanmamanız ReactActivityve menü düğmesini başka yollarla bağlamamanızdır.
Alan Pierce

hızlı yanıtınız için teşekkür ederiz :) sorun menü iletişim kutusunun göstermesine izin vermedi MIUI izin yöneticisi ile oldu.
Shreyans

1
ReactActivity hakkında güzel bir ipucu. Bu kod şimdi ReactActivityDelegate.java'ya taşınmış gibi görünüyor
Ryan H.

20

'Ctrl + m' , React-Native geliştirici menüsünü getirmek için Android emülatöründe Windows için çalışır .

Hiçbir yerde belgelenmiş bulunamadı. Burada yolumu buldum, gerisini tahmin ettim ... İyi keder.

Bu arada: OP: Hangi işletim sisteminde olduğunuzu söylemediniz.


14

Linux için öykünücünün yanındaki üç noktayı "..." tıklarsınız, Sanal sensörler üzerinde "Taşı" yı işaretleyin ve ardından x, y veya z koordinatlarını hızlı bir şekilde hareket ettirmeyi deneyin.

resim açıklamasını buraya girin


4
Aslında, benim için çalışan tek çözüm bu.
DsCpp

1
Ayrıca, görüntülenen pencerede aygıt grafiğini tıklatıp sürükleyebilirsiniz.
brismith


8

Mac OS'tayım, bu yüzden Command tuşuna bastığımda yakınlaştırma seçeneğini etkinleştiriyor. İşte benim çözümüm

  • Yapılandırma penceresini aç [...] düğmesi
  • Git Settingssekmesi -> Generalsekmesi -> Send keyboard shortcuts toalan
  • Değeri Virtual device"resimde gösterildiği gibi değiştirin

Bu öykünücüye odaklandıktan sonra Command + M tuşlarına basın, geliştirici menüsü görünür.

Emülatör Seçeneği -> Ayarlar -> Genel


4

command + m(cmd + M)MAC üzerinde kullanın . Ayrıca make sure that you are accessing your application while you try to access the Debug Menuyani uygulamanız çalışıyor olmalıdır aksi Cmd + Mtakdirde sadece olağan sıradan telefon menüsü dönecektir.


4

Yerel uygulamalar geliştirirken, terminalle çok oynuyoruz

bu yüzden package.json dosyasındaki komut dosyalarına bir komut dosyası ekledim

"menu": "adb kabuk girişi keyevent 82"

ve $ iplik menüsüne girdim

menünün emülatörde görünmesi için anahtar kodu 82 emülatöre ADB üzerinden en uygun şekilde iletmeyecektir, ancak beğendim ve paylaştığımı hissettim.

resim açıklamasını buraya girin


2

linux ctrl + m üzerinde çalışmalıdır, ancak sorunu çözmek için (...) (genişletilmiş kontrolleri) üzerine tıklayın ve o pencereyi kapatın. şimdi ctrl + m ile menüyü açabilirsiniz. sonra:

  1. tıklayın (...) (genişletilmiş kontrolleri)

  2. genişletilmiş kontrolleri kapat

  3. Ctrl + m,


1

Doğrudan bir çözüm olmayabilir, ancak geliştirme modundayken dev menüsünü açmak için sallamak yerine 3 parmak dokunuşu kullanmanıza izin veren bir lib oluşturdum.

https://github.com/pie6k/react-native-dev-menu-on-touch

Uygulamanızı yalnızca içine sarmanız gerekir:

DevMenuOnTouch'ı 'dokunarak tepki göster-yerli-dev-menüsü'nden' içe aktarın; // veya: {DevMenuOnTouch} 'dokunarak yanıtla-yerli-dev-menüsü' nü içe aktar '

class YourRootApp extends Component {
  render() {
    return (
      <DevMenuOnTouch>
        <YourApp />
      </DevMenuOnTouch>
    );
  }
}

Gerçek cihazda hata ayıklamanız gerektiğinde ve yanınızda oturan iş arkadaşlarınız olduğunda gerçekten yararlıdır.


1

Ben üzerinde çalışıyordu bırakma yoluyla yapı adb install -r -d <app-release>.apk🤦

Hata ayıklama derlemesini çalıştırdığınızdan emin olun , ardından menü kısayol veya CLI aracılığıyla çalışır.


-1

Windows dizüstü bilgisayarlar için fn Key + Control + m

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.