1. ホーム
  2. android

Android Studioのデバッガが、ライブラリモジュール内のブレークポイントで停止しない問題

2023-09-15 20:04:16

質問

現在、私はサードパーティのコードに基づく Android アプリを開発しています。コードを理解するためにブレークポイントを設定し始めたのですが、すぐに問題にぶつかりました。突然、Android Studio をブレークポイントで停止させることができなくなったのです。

の中でブレークポイントを設定しようとしました。 onCreate メソッド内、ボタンの OnClickListener メソッド内でも、何も機能しませんでした。今、私はそれが動作する唯一の場所は、アプリモジュールの内部であることを発見した。プロジェクトには、appモジュールに1つのアクティビティクラスがあるだけで、他のすべてはライブラリモジュール内で提供されているため、実際にはまったくデバッグすることができません。

AndroidManifest.xml またはおそらく build.gradle ファイルに何か問題があるのだと思います。私は Eclipse から Android Studio に切り替えたばかりなので、この gradle のものはすべて、私にとってかなり新しいものです。

アプリの実行中にライブラリ ブレークポイントにカーソルを置くと、"no executable code [is] found at line ..."と表示されます。これが私の問題の原因であると推測されますが、それを修正する方法についてはまったくわかりません。

build.gradleのエントリの中に、私の問題を引き起こす可能性のある"通常の容疑者"がありますか?

私はすでに私のプロジェクトをクリーンアップし、成功せずにキャッシュを無効にしました。私はさらに、提案された <activity> エントリを追加するという提案も試しました。

編集 : 私はAndroid Studioの最新版(2月18日からのバージョン1.1.0)を使用しており、しばらく前に存在した同様のバグが修正されているはずです。

appモジュールのbuild.gradleの内容です。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION

    defaultConfig {
        minSdkVersion Integer.parseInt(project.MIN_SDK)
        targetSdkVersion  Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
    }

    signingConfigs {
        release {
            keyAlias 'xxx'
            keyPassword 'xxx'
            storeFile file('xxx')
            storePassword 'xxx'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.release
            debuggable false
            jniDebuggable false
            zipAlignEnabled true
        }
        debug {
            minifyEnabled false
            debuggable true
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':firebase_plugin')
}

そして、libraryモジュールのbuild.gradleです。

apply plugin: 'com.android.library'
android {

    compileSdkVersion 19
    buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
    defaultConfig {
        minSdkVersion Integer.parseInt(project.MIN_SDK)
        targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
    }

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

    productFlavors {
    }

}

dependencies {
    // Facebook SDK
    compile project(':facebook')

    // Used for StringUtils
    compile files('libs/commons-lang3-3.3.2.jar')
    // Bug tracking
    compile files('libs/bugsense-3.6.1.jar')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //Google Play Services - For Google Maps
    compile('com.google.android.gms:play-services:5.0.89') {
        exclude group: 'com.google.android', module: 'support-v4'
    }
    // Support Library.
    compile 'com.android.support:support-v13:18.0.+'

    compile('com.android.support:appcompat-v7:19.1.0') {
        exclude group: 'com.google.android', module: 'support-v4'
    }
    // Volley - Networking library from google.
    compile('com.mcxiaoke.volley:library:1.0.0') {
        exclude group: 'com.google.android', module: 'support-v4'
    }
    // Has is own support library in it so need to exclude it so no TOP_LEVEL_EXCEPTION will occur.
    compile('de.greenrobot:greendao:1.3.0') {
        exclude group: 'com.google.android', module: 'support-v4'
    }
    // Firebase
    compile('com.firebase:firebase-simple-login:1.4.2') {
        exclude group: 'com.android.support', module: 'support-v4'
    }
    // Super Toast
    compile('com.github.johnpersano:supertoasts:1.3.4@aar') {
        exclude group: 'com.android.support', module: 'support-v4'
    }
    // Croping images
    compile('com.soundcloud.android:android-crop:0.9.10@aar') {
        exclude group: 'com.android.support', module: 'support-v4'
    }
    compile('com.github.chrisbanes.actionbarpulltorefresh:library:0.9.9') {
        exclude group: 'com.android.support', module: 'support-v4'
    }
}


    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':firebase_plugin')
}

<イグ

どのように解決するのですか?

この問題のコメントで述べられているように minifyEnabled false をデバッグビルドで設定することがベストプラクティスです。この変数を app モジュールに設定することで、proguard のビルド プロセス全体が無効になります。これはリリースビルドを最適化するときに便利ですが、テストや開発をしている場合はいくつかの問題を引き起こします。