extend build.gradle to have seperate paths for arm7 and arm64 and perform the appropriate link/rename so androiddeployqt and therecipeqt can pick up as tho it was not a splits build
the build was successful Details

This commit is contained in:
Dan Ballard 2020-12-15 00:06:46 -08:00
parent bf27590afe
commit e6145d6e12
2 changed files with 85 additions and 18 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<manifest package="ca.openprivacy.cwtch.ui" xmlns:android="http://schemas.android.com/apk/res/android" <manifest package="ca.openprivacy.cwtch.ui" xmlns:android="http://schemas.android.com/apk/res/android"
android:versionName="1.0" android:versionName="1.0"
android:versionCode="1" android:versionCode="4"
android:installLocation="auto"> android:installLocation="auto">
<application android:hardwareAccelerated="true" <application android:hardwareAccelerated="true"
android:name="org.qtproject.qt5.android.bindings.QtApplication" android:name="org.qtproject.qt5.android.bindings.QtApplication"

View File

@ -51,33 +51,100 @@ android {
} }
} }
splits {
// Configures multiple APKs based on ABI. // kinda of cheaty, would prefer to use if (System.getEnv("GOARCH") == "arm64") {
abi { // but it doesn't want to work in this context
if (qt5AndroidDir.contains("arm64")) {
// Enables building multiple APKs per ABI. splits {
enable true
// By default all ABIs are included, so use reset() and include to specify that we only // Configures multiple APKs based on ABI.
// want APKs for x86 and x86_64. abi {
// Resets the list of ABIs that Gradle should create APKs for to none. // Enables building multiple APKs per ABI.
reset() enable true
// Specifies a list of ABIs that Gradle should create APKs for. // By default all ABIs are included, so use reset() and include to specify that we only
// Note that because of the way that therecipe/qt bundles libraries // want APKs for x86 and x86_64.
// only the specific architecture specified by GOARCH /GOARM will *actually*
// work so we currently have to do separate builds for each arch - this needs to be fixed.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs. // Resets the list of ABIs that Gradle should create APKs for to none.
universalApk true reset()
// Specifies a list of ABIs that Gradle should create APKs for.
// Note that because of the way that therecipe/qt bundles libraries
// only the specific architecture specified by GOARCH /GOARM will *actually*
// work so we currently have to do separate builds for each arch - this needs to be fixed.
include "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
// QT deploy has to be run twice to generate the libgo_base.so for each arch
universalApk false
}
} }
}
task linkBuildDebugArm64(type: Exec) {
workingDir '../build/build/outputs/apk/debug/'
commandLine 'ln', '-sf', 'build-arm64-v8a-debug.apk', 'build-debug.apk'
}
task renameBuildReleaseArm64(type: Exec) {
workingDir '../build/build/outputs/apk/release/'
commandLine 'mv', 'build-arm64-v8a-release-unsigned.apk', 'build-release-unsigned.apk'
}
afterEvaluate {
assembleDebug.finalizedBy(linkBuildDebugArm64)
assembleRelease.finalizedBy(renameBuildReleaseArm64)
}
} else {
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86 and x86_64.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
// Note that because of the way that therecipe/qt bundles libraries
// only the specific architecture specified by GOARCH /GOARM will *actually*
// work so we currently have to do separate builds for each arch - this needs to be fixed.
include "armeabi-v7a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
// QT deploy has to be run twice to generate the libgo_base.so for each arch
universalApk false
}
}
task linkBuildDebugArm7(type: Exec) {
workingDir '../build/build/outputs/apk/debug/'
commandLine 'ln', '-sf', 'build-armeabi-v7a-debug.apk', 'build-debug.apk'
}
task renameBuildReleaseArm7(type: Exec) {
workingDir '../build/build/outputs/apk/release/'
commandLine 'mv', 'build-armeabi-v7a-release-unsigned.apk', 'build-release-unsigned.apk'
}
afterEvaluate {
assembleDebug.finalizedBy(linkBuildDebugArm7)
assembleRelease.finalizedBy(renameBuildReleaseArm7)
}
}
lintOptions { lintOptions {
abortOnError true abortOnError true
} }
} }