首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NullpointerException运行的分级调试崩溃很好

使用NullpointerException运行的分级调试崩溃很好
EN

Stack Overflow用户
提问于 2017-10-05 19:54:09
回答 1查看 517关注 0票数 2

当尝试在Android中调试我的应用程序时,Gradle会与NullpointerException崩溃。只运行这个应用程序就行了。Android 2.3.3。

下面是gradle堆栈跟踪:

代码语言:javascript
复制
java.lang.NullPointerException
    at com.android.tools.idea.run.GradleApplicationIdProvider.getTestPackageName(GradleApplicationIdProvider.java:50)
    at com.android.tools.idea.run.AndroidLaunchTasksProvider.getConnectDebuggerTask(AndroidLaunchTasksProvider.java:160)
    at com.android.tools.idea.run.LaunchTaskRunner.run(LaunchTaskRunner.java:79)
    at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:635)
    at com.intellij.openapi.progress.impl.CoreProgressManager$3.run(CoreProgressManager.java:170)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:494)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:443)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:155)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:128)
    at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:307)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

这是我在应用程序文件夹中的build.gradle。更多细节:这是一个带有Cocos2d-x游戏引擎的项目,我正在尝试让调试使本机代码正常工作。一个简单的测试项目确实有效,但我自己的项目不起作用。

代码语言:javascript
复制
import java.util.regex.Pattern
import com.android.build.OutputFile
import org.apache.tools.ant.taskdefs.condition.Os


apply plugin: 'com.android.application'
apply plugin: 'io.fabric'



task('increaseVersionCode') << {
    println 'Grade: Increasing Version Code...'
    def buildFile = file("build.gradle")
    def pattern = Pattern.compile("versionCode\\s+(\\d+)")
    def manifestText = buildFile.getText()
    def matcher = pattern.matcher(manifestText)
    matcher.find()
    def versionCode = Integer.parseInt(matcher.group(1))
    def manifestContent = matcher.replaceAll("versionCode " + ++versionCode)
    buildFile.write(manifestContent)
}
preBuild.dependsOn increaseVersionCode

task deleteGraphicsAssets(type: Delete) {
    println 'Grade: Deleting unnecessary assets...'
    delete "assets/1136p"
    delete "assets/2048p"
}
preBuild.dependsOn deleteGraphicsAssets



android {
    // Going higher means that we have to request to write to external storage (used for UUID): https://stackoverflow.com/questions/36084959/cant-create-a-directory-on-storage-emulated-0-on-emulator
    // But GameAnalytics reqires 24, let's see if it still works this way
    compileSdkVersion 22
    buildToolsVersion '25.0.3' // should be 25 for newer version
    defaultConfig {
        applicationId "com.forestringgames.apps.towerduel"
        minSdkVersion 15
        // Going higher means that we have to request to write to external storage (used for UUID): https://stackoverflow.com/questions/36084959/cant-create-a-directory-on-storage-emulated-0-on-emulator
        // But GameAnalytics reqires 24, let's see if it still works this way
        targetSdkVersion PROP_TARGET_SDK_VERSION
        versionCode 1607
        versionName "1.0"
//        multiDexEnabled true
        externalNativeBuild {
            ndkBuild {
                if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
                    // skip the NDK Build step if PROP_NDK_MODE is none
                    targets 'cocos2dcpp'
                    arguments 'NDK_TOOLCHAIN_VERSION=4.9'
                    arguments 'APP_PLATFORM=android-' + PROP_TARGET_SDK_VERSION


                    def module_paths = [project.file("../../FRGEngine/cocos2d").absolutePath,
                                        project.file("../../FRGEngine/cocos2d/cocos").absolutePath,
                                        project.file("../../FRGEngine/cocos2d/external").absolutePath]
                    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
                        // should use '/'
                        module_paths = module_paths.collect { it.replaceAll('\\\\', '/') }
                        arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
                    } else {
                        arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
                    }

                    arguments '-j' + Runtime.runtime.availableProcessors()
                    abiFilters.addAll(PROP_APP_ABI.split(':').collect { it as String })
                }
            }
        }
    }
    // only added for android debugging
    externalNativeBuild {
        ndkBuild {
            if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
                // skip the NDK Build step if PROP_NDK_MODE is none
                path "jni/Android.mk"
            }
        }
    }
    sourceSets.main {
        java.srcDir "src"
        res.srcDir "res"
        jniLibs.srcDir "libs"
        manifest.srcFile "AndroidManifest.xml"
        assets.srcDir "assets"
    }
    splits {
        abi {
            enable true
            reset()
            include 'armeabi-v7a'
            //, 'armeabi',  'armeabi-v7a', 'x86'  - what about arm64? Test it with Crashlytics
            universalApk false  //true
        }

//        density {
//            enable true
//            reset()
//            include 'mdpi', 'hdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi'
//            compatibleScreens 'small', 'normal', 'large', 'xlarge'
//
//        }
    }
    signingConfigs {

        release {
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                storeFile file(RELEASE_STORE_FILE)
                storePassword RELEASE_STORE_PASSWORD
                keyAlias RELEASE_KEY_ALIAS
                keyPassword RELEASE_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false // Warning: is this a good idea?
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                signingConfig signingConfigs.release
            }

            externalNativeBuild {
                ndkBuild {
                    arguments 'NDK_DEBUG=0'
                }
            }
        }

        debug {
//            debuggable true
//            jniDebuggable true

            externalNativeBuild {
                ndkBuild {
                    arguments 'NDK_DEBUG=1'
                }
            }
        }
    }

}




crashlytics {
    enableNdk = true
    androidNdkOut = 'obj'
    androidNdkLibsOut = 'libs'

}

repositories {
    mavenCentral()
}

dependencies {
    //    compile 'com.android.support:multidex:1.0.1'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':libcocos2dx')
    //    compile project(':BaseGameUtils')
    //    compile 'com.android.support:multidex:1.0.0'
    compile 'com.facebook.android:facebook-android-sdk:4.8.0'
    //    compile 'com.google.android.gms:play-services-auth:9.0.0'
    // integration guide (with latest version numbers: https://fabric.io/downloads/gradle)
    // Crashlytics KitminifyEnabled
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true
    }
    // NDK Kit
    compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.6@aar') {
        transitive = true
    }
    //    compile('com.crashlytics.sdk.android:crashlytics:2.7.0-SNAPSHOT@aar') {
    //        transitive = true;
    //    }
    //
    //    compile('com.crashlytics.sdk.android:crashlytics-ndk:1.2.0-SNAPSHOT:debug@aar') {
    //        transitive = true;
    //    }
    compile 'net.bytebuddy:byte-buddy:1.7.3'
    compile 'net.bytebuddy:byte-buddy-android:1.7.3'
    //    compile 'com.google.firebase:firebase-auth:11.0.1'
    compile 'com.google.android.gms:play-services-auth:11.0.0'
    compile 'com.google.android.gms:play-services-games:11.0.0'
    compile 'com.google.firebase:firebase-invites:11.0.0'
    compile 'com.google.firebase:firebase-messaging:11.0.0'
    compile 'com.anjlab.android.iab.v3:library:1.0.+'
    compile files('Frameworks/Fmod/prebuilt/android/fmod.jar')
    //    // use latest version instead version number: https://github.com/GameAnalytics/GA-SDK-ANDROID
    //    compile 'com.gameanalytics.sdk:gameanalytics-android:3.5.0'
    compile fileTree(include: ['*.jar'], dir: 'Frameworks/Jars')
    //
}

apply plugin: 'com.google.gms.google-services'

下面是项目范围内的build.gradle文件:

代码语言:javascript
复制
  // Top-level build file where you can add configuration options common to all sub-projects/modules.



buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        // The Fabric Gradle plugin uses an open ended version to react
        // quickly to Android tooling updates
        //classpath 'io.fabric.tools:gradle:1.21.5' // version number: https://twittersdk.artifactoryonline.com/twittersdk/repo/io/fabric/tools/gradle/
        classpath 'io.fabric.tools:gradle:1.+'
        classpath 'com.google.gms:google-services:3.1.0'

    }
}

allprojects {
    repositories {
        jcenter()

        // FABRIC PRIVATE
    //        maven { url 'https://s3.amazonaws.com/fabric-artifacts-private/internal-snapshots' }

        // FABRIC OFFICIAL
        maven { url 'https://maven.fabric.io/public' }

//        maven { url 'http://maven.gameanalytics.com/release' }

    }
}

编辑:我已经按以下顺序尝试过了:

  1. 重建工程
  2. 清洁工程
  3. 使缓存失效/重新启动
  4. 万一你在使用Gradle deamon。让它停止。/梯度--停止,从1到3开始。
  5. 最后&完全关闭Android,并从项目的根目录中隐藏delete .gradle directory,然后再次启动Android。
  6. 关闭所有其他Android实例
  7. 重启OSX
EN

回答 1

Stack Overflow用户

发布于 2022-08-25 15:20:36

确保在项目结构上正确配置了NDK路径(File > Project > SDK Location > Android位置)。单击“确定”并再次尝试同步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46593767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档