问题:我想在 Qt 项目中使用 Android 构建系统(gradle 版本 3),但是这个版本的 gradle(与旧版本 2 相比)会将生成的输出apk
文件的位置更改为在下面$buildDir/outputs/apk/debug
而不是$buildDir/outputs/apk
(添加的debug
文件夹),但是当 Qt Android 工具包尝试将应用程序安装到 Android 设备,它只在旧位置查找,并且无法找到 apk 文件。我检查了 Android Studio,它表明 gradle 3 工作正常
$build_folder/android-build\build\outputs\apk\my.apk
新地点:$build_folder/android-build\build\outputs\apk\debug\my.apk
错误(编译):
adb:错误:无法统计“D:/Qt/FireBase/build-client01-Android_for_armeabi_v7a_GCC_4_9_Qt_5_11_0_for_Android_armv73-Release/android-build//build/outputs/apk/android-build-debug.apk”:没有这样的文件或目录
仅当我对build.gradle
Qt 生成的默认值进行更改以将 gradle 设置为版本 3 时,才会出现此问题,默认生成的文件已classpath
设置为旧版本2.3.3
,
classpath 'com.android.tools.build:gradle:2.3.3'
新的 :classpath 'com.android.tools.build:gradle:3.1.0
我所做的其他更改也需要更改gradle-wrapper.properties
,这里是更新的文件:
构建.gradle
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
//classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:4.0.1' // google-services plugin
classpath 'com.android.tools.build:gradle:3.1.0'
}
}
allprojects {
repositories {
jcenter()
//google() // Google's Maven repository
maven {
url "https://maven.google.com"
}
}
}
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
android {
/*******************************************************
* The following variables:
* - androidBuildToolsVersion,
* - androidCompileSdkVersion
* - qt5AndroidDir - holds the path to qt android files
* needed to build any Qt application
* on Android.
*
* are defined in gradle.properties file. This file is
* updated by QtCreator and androiddeployqt tools.
* Changing them manually might break the compilation!
*******************************************************/
compileSdkVersion androidCompileSdkVersion.toInteger()
buildToolsVersion androidBuildToolsVersion
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
res.srcDirs = [qt5AndroidDir + '/res', 'res']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
lintOptions {
abortOnError false
}
}
dependencies {
// ...
//libfirebase_auth.a
//libfirebase_app.a
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.2'
implementation 'com.google.android.gms:play-services-base:15.0.1'
// Getting a "Could not find" error? Make sure you have
// added the Google maven respository to your root build.gradle
}
apply plugin: 'com.google.gms.google-services'
gradle-wrapper.properties
#Mon Feb 20 10:43:22 EST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip