错误:“未在此范围内声明Android日志”

时间:2016-10-11 23:44:48

标签: c android-studio android-ndk android-gradle

我正在尝试在Android studio 2.2中加载一个旧的c项目(用于Android 5.1,API 22)。源代码包括使用android记录器。当我在工作室里建立项目时。该工作室报告了一些错误:

Error:(34, 21) error: '__android_log' was not declared in this scope
Information:(84, 5) in expansion of macro 'LOGD'
Warning:(35, 79) warning: format '%s' expects argument of type 'char*', but argument 10 has type 'void*' [-Wformat=]
Information:(91, 9) in expansion of macro 'LOGI'
Error:(34, 35) error: expected ';' before '_print'
Information:(102, 5) in expansion of macro 'LOGD'
Error:(34, 21) error: '__android_log' was not declared in this scope
Information:(107, 5) in expansion of macro 'LOGD'
...

我尝试将日志库添加到Gradle脚本

productFlavors {
    fat {
        dimension "abi"
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
            versionCode = 0;
            ldLibs.addAll(["log"]) // <- not working
        }
        minSdkVersion 21
        targetSdkVersion 22
    }

    armv7a {
        dimension "abi"
        ndk {
            abiFilter "armeabi"
            versionCode = 1;
            ldLibs "log" // <- not working neither
        }
        minSdkVersion 21
        targetSdkVersion 22
    }
}

但是工作室报告错误:Error:(71, 0) Could not get unknown property 'ldLibs' for ProductFlavor_Decorated

任何人都知道如何在android studio 2.2中添加日志库?

感谢。

1 个答案:

答案 0 :(得分:0)

可能是因为在NDK中实际上并没有android-22。 Android 5.1没有任何新的原生API,因此NDK没有该目录。尝试将app.on('ready', ()=> { let win = new BrowserWindow({width:800, height:600}) win.loadURL('file://'+__dirname+'/index.html') win.on('closed', () => { console.log(' ---- Bye Bye Electron ---- ') }); }) 设置为21?

非常重要的一点是:在使用NDK时,您的目标API级别是您的最低API级别。我相信Gradle并未强制执行此操作,但很可能本机代码无法在目标API级别以下的设备上运行。