Yayınlanmak üzere imzalanan apk hataları nasıl ayıklanır?


114

İmzalayıp Android Market'e yüklediğim ve telefonuma yüklediğim bir apk var. Bu sürüm apk'sinin (Eclipse aracılığıyla) telefonumda çalışırken hatalarını ayıklamak istiyorum. Bunu daha önce yaptım (ve Android geliştirme araçlarından biriyle olduğunu hatırlıyorum; belki Dalvik Hata Ayıklama İzleyicisi), ancak ne yazık ki nasıl yapılacağını hatırlayamıyorum ve çevrimiçi herhangi bir makale bulamadım. Bunun nasıl yapılacağını bilen var mı?

Not: Ben var set android:debuggable="true"Manifestte ve telefonuma ayıklama USB sağladı.


şu anda ne deniyorsun Eclipse'de Aygıtlar Görünümü'nü nasıl kullanacağınızı bilmiyor musunuz?
Sam Dozor

Şimdi Eclipse'de gösterilen Aygıtlar görünümüne sahibim. Cihazımı Cihazlar listesinde görebiliyorum. Üzerine tıklıyorum ama "Seçilen işlemde hata ayıkla" düğmesi, telefonda çalışan uygulama ve kaynak projenin mevcut olmasına ve çalışma alanında açılmasına rağmen devre dışı kalıyor. Herhangi bir fikir?!
Adil Hussain

Uygulamanızın paket adını mı tıklıyorsunuz?
Sam Dozor

Evet. Cevabınızda yoruma bakın. (BTW yardımınız için teşekkürler. Teşekkür ederim.)
Adil Hussain

Yanıtlar:


77

Bunun manifest dosyanızın etiketinde android:debuggable="true"ayarlandığından emin olun applicationve ardından:

  1. Telefonunuzu bilgisayarınıza takın ve telefonda USB hata ayıklamayı etkinleştirin
  2. Açık tutulma ve uygulamanızın kodunu içeren bir çalışma alanı
  3. Eclipse'de Pencere-> Görünümü Göster-> Aygıtlar'a gidin
  4. Şimdi görünür olması gereken Cihazlar görünümüne bakın, cihazınızın listelendiğini görmelisiniz.
  5. Cihazınız listede yoksa, devam etmeden önce telefonunuz için ADB sürücülerini izlemeniz gerekir.
  6. Kodda ilerlemek istiyorsanız, uygulamanızın herhangi bir yerinde bir kesme noktası ayarlayın
  7. Telefonunuzda uygulamayı açın
  8. Cihazlar görünümünde, henüz genişletilmemişse telefonunuz için girişi genişletin ve uygulamanızın paket adını arayın.
  9. Paket adına tıklayın ve Cihazlar görünümünün sağ üst köşesinde bir dizi başka küçük düğmeyle birlikte yeşil bir hata görmelisiniz. Yeşil hatayı tıklayın.
  10. Şimdi uygulamanıza bağlanmanız / hata ayıklamanız gerekir.

8. adıma geçiyorum ancak imzalı / sürüm apk'yi çalıştırdığımda bazı nedenlerden dolayı uygulamamın paket adı görünmüyor. (Garip bir şekilde, uygulamayı (hata ayıklama apk) telefonumda doğrudan Eclipse'den çalıştırdığımda görünüyor.) Kafam karıştı ...
Adil Hussain

2
Anladım! android:debuggable="true"Özniteliği manifest içindeki manifestetiketi yerine etikete koymuştum application!! Benim hatam :( Rehberliğin için çok teşekkürler Sam_D. Bunu sensiz yapmazdım, en iyi ihtimalle çok uzun zaman alırdı!
Adil Hussain

Build.gradle'a hata ayıklanabilir anahtar kelimeyi eklediğimde ve play store'da yayınlamak istediğimde bu hatayı gösteriyorYou uploaded a debuggable APK. For security reasons you need to disable debugging before it can be published in Google Play.
hasnain_ahmad

1
Bu cevap çok eski. androidManifest.xmlSenin yerine güncellemelisin build.gradle. Diğer cevaplara bakın.
Antimonit

@hasnain_ahmad Bunun için bir çözüm bulabildiniz mi?
Shashank Saxena

128

Bunun eski bir soru olduğunu biliyorum, ancak gelecekteki referanslar. Gradle ile Android Studio'da:

buildTypes {
    release {
        debuggable true
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

Satır debuggable truebenim için bir numaraydı.

Güncelleme:

1.0 dereceden beri minifyEnabledyerine runProguard. Buraya bak


5
1.0 sürümünden itibaren runProguard yerine minifyEnabled olduğunu unutmayın - bkz. Tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
m02ph3u5

Bu mevcut cevaba bir not olarak, Google Play mağazasına hata ayıklanabilir bir sürüm göndermekten kaçınırdım ve hasnain_ahmad'ın önceki eski cevabında olduğu gibi size izin vermeyebilir. Uygulama içi satın alma kodu takibi gibi mağazadan indirilen bir sürümü test etmek için bunu geçici olarak yapmak daha az riskli olacaktır. Ayrıca beta parçasıyla çalışmayı deneyebilir (bunun hasnian ile aynı hatayı verip vermeyeceğini bilmiyorum) veya güvenlik sorunlarından kaçınmak için sürüm oluşturma apk'sini bilgisayarınızdan telefonunuza aktarmayı deneyebilirsiniz (paketle uğraşmak daha karmaşıktır ).
Androidcoder

40

Manuel'in yolunun yanı sıra, Manifest'i hala kullanabilirsiniz.

Android Studio ahırı olarak, aşağıdaki 2 satır eklemek zorunda applicationiçinde AndroidManifestdosyanın:

    android:debuggable="true"
    tools:ignore="HardcodedDebugMode"

İlki, imzalı APK'nin hata ayıklamasını etkinleştirecek ve ikincisi, derleme zamanı hatasını önleyecektir.

Bundan sonra, "Hata ayıklayıcıyı Android işlemine ekle" düğmesiyle işleme ekleyebilirsiniz.


@jaibatrik sizin apk'niz olmalı ve kaynaklardan hata ayıklayıcıyı eklemelisiniz. her ikisini de yapıyorsanız ve hala işe yaramazsa, daha fazla bilgi paylaşın, size yardımcı olabilirim
sandalone

2
"[Ölümcül Hata]: 7: 203:" araçlar "özniteliği için" araçlar "ön eki:" uygulama "bağlı değil öğe türüyle ilişkili" yoksay "." Araçlar: ignore = "HardcodedDebugMode" burada yasal bir yapılandırma mı?
JD

1
Şu şekilde lintOptions { abortOnError false }kullanmak yerine app / build.grade eklemek zorunda kaldım tools:ignore: android { lintOptions: { abortOnError false } }
YoshiJaeger

buldum The prefix "tools" for attribute "tools:ignore" associated with an element type "application" is not bound.!
Oliver D

9

Aşağıdakileri denedim ve işe yaradı:

release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

Bu cevap, bu konu başlığında Manuel Lopera tarafından verilmişti ... üç yıl önce! Buraya bakın: stackoverflow.com/a/27181562/1071320
Adil Hussain

@AdilHussain Ama bu cevabı denedim, benim için işe yaramadı. "MinifyEnabled false" daki cevabımda bir fark var ve bu runProguard trueonun durumunda. Lütfen değişiklikleri
izleyin

Çok önemli değil, ancak cevabı bu etkiye yönelik bir güncelleme içeriyor. Neyse. Önemli bir şey değil. Cevap için teşekkürler.
Adil Hussain

9

Aşağıdakileri uygulama build.gradle dosyanıza ekleyin ve belirtilen sürüm derleme varyantını seçin ve çalıştırın

signingConfigs {
        config {
            keyAlias 'keyalias'
            keyPassword 'keypwd'
            storeFile file('<<KEYSTORE-PATH>>.keystore')
            storePassword 'pwd'
        }
    }
    buildTypes {
      release {
          debuggable true
          signingConfig signingConfigs.config
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

5

Size durumunda çözmesine karar sizin debuggable olmak zaten piyasada ancak atanmış olan apk ve tekrar yayınlamak istemiyoruz. Bu nedenle aşağıdaki adımları izleyin;

  1. Apk'yi ApkTool ile derleyin (örn. apktool d <APK_PATH>)
  2. Derlenmiş dosyalardan AndroidManifest.xml dosyasını açın
  3. Set android:debuggable="true"içinde applicationetiketi
  4. Değiştirilmiş kaynağı ApkTool (örn. apktool b <MODIFIED_PATH>) İle derleyin.
  5. Hata ayıklanabilir apk hazır (imzasız, mağaza yayınlayamayacağı anlamına gelir). Dilediğiniz gibi hata ayıklayabilirsiniz.
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.