vmoptions - set android studio proxy




Android Studio 2.2原生开发迁移问题 (5)

在切换到AS 2.2之前,我有以下结构来实现我的C

app/src/main/jni/Android.mk
app/src/main/jni/Application.mk
app/src/main/jni/headers/*
app/src/main/jni/cfiles*.cc

在这种情况下一切都很好。 但是,升级到AS 2.2之后,我无法构建任何apk并总是收到以下错误:

Execution failed for task':app:transformNative_libsWithStripDebugSymbolForDebug java.lang.NullPointerException (no error message)

有人知道为什么吗? 我似乎无法找到工作。


我在我的项目中解决了这个问题)尝试添加到您的build.gradle(模块)

    externalNativeBuild {
    ndkBuild {
        path 'src/main/jni/Application.mk'
    }
}

将Gradle链接到您的本地库


我今天早上升级到了AS 2.2并且有同样的错误。 升级NDK为我解决了它。 您现在可以通过SDK Manager升级,说明如下:

https://developer.android.com/studio/projects/add-native-code.html#download-ndk

还要确保你的“local.properties”文件指向正确的NDK位置。 示例Windows local.properties:

ndk.dir=C\:\\Users\\Me\\AppData\\Local\\Android\\sdk\\ndk-bundle
sdk.dir=C\:\\Users\\Me\\AppData\\Local\\Android\\sdk


我们今天在Rajawali项目中也遇到了同样的错误 - 也就是说,我们没有实现本地组件,而是使用了一个实现了一些原生OpenGL组件的库。 我想这是连接到Android Studio更新(在该机器上,它是2.2.3 ),但我不能清楚地告诉在这一点上。 它只是“突然停止工作”。

但是,我们需要升级到实验性的Android构建工具, 使用上面的Mike的修复工作来实现它。 一个(有些过时的)移植指南可以在这里找到。 作为参考,我们只需要调整build.gradleapp/build.gradle ,现在看起来如下所示:

// build.gradle
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.8.3'
        // used to be: 'com.android.tools.build:gradle:2.2.2'
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
    }
}

...和

//app/build.gradle
apply plugin: 'com.android.model.application'
// used to be 'com.android.application'

// android() migrated according to guide
// note that buildConfigFields() is missing, because it lead to errors
model {
    android {
        compileSdkVersion 19
        buildToolsVersion "21.1.2"

        defaultConfig {
            applicationId "com.projecttango.experiments.augmentedrealitysample"
            minSdkVersion.apiLevel 19
            targetSdkVersion.apiLevel 19
            versionCode 1
            versionName "1.0"
        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles.add(file("proguard-rules.pro"))
            }
        }

        productFlavors {
            create("flavor1") {
                applicationId "com.app"
            }
        }

        sources {
            main {
                java {
                    source {
                        srcDir "src"
                    }
                }
            }
        }

        // Fix suggested by Mike above
        ndk {
            platformVersion 21
        }
    }
}

// Remaining Rajawali "noise"
def external_lib_prefix = null
if (project.hasProperty("Tango.catkin_devel_prefix")) {
    external_lib_prefix = project.property("Tango.catkin_devel_prefix")
} else {
    // Building in standalone sample form.
    external_lib_prefix = "../../TangoReleaseLibs"
}

repositories {
    flatDir {
        dirs external_lib_prefix + '/aar'
    }
}

dependencies {
    compile fileTree(dir: external_lib_prefix + '/jar', include: ['**/*.jar'])
    compile (name: 'tango_support_java_lib', ext: 'aar')
    compile 'org.rajawali3d:rajawali:[email protected]'
}

完成之后,请确保同步Android Studio中的Gradle项目。 否则,当您尝试立即运行时,您会看到类似于Task 'generateDebugSources' not found in project ':app'


我觉得很多这些解决方案都是过分的。 对不起回答我自己的问题,但实际的解决方案是从这里的每一个职位!

很像@GregT所说的,对我来说,升级我安装的NDK软件包是有效的。 而且,这样做实际上修改了*.mk文件,就像@ Matthew_Bondarchuk的答案一样。

因此,像@aaronvargas所说,这是一个错误; 具体而言,Android NDK系统未与Android Studio 2.2实例的升级一起更新。 这会导致与Android构建工具不兼容,就像@Michael_Jess所说的那样。





android-gradle