- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经从 ndk-build
切换到 cmake
构建系统。但是无法使 APK 拆分功能正常工作。
这是我的应用build.gradle
文件
构建的结果只有一个文件 - foo.bar-armeabi-v7a-release-1.5.1.apk
。
如果我正在为 x86 模拟器构建应用程序,结果是 foo.bar-x86-release-1.5.1.apk
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
android {
compileOptions.encoding = 'ISO-8859-1'
compileSdkVersion CompiledSdkVersion
buildToolsVersion BuildToolsVersion
defaultConfig {
applicationId "foo.bar"
minSdkVersion MinSdkVersion
targetSdkVersion TargetSdkVersion
versionCode VersionCode
versionName VersionName
vectorDrawables.useSupportLibrary = true
externalNativeBuild {
cmake {
cppFlags "-fexceptions", "-std=c++11"
}
}
ndk {
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}
signingConfigs {
release {
storeFile file("..\\release.keystore")
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
splits {
abi {
enable true
reset()
include "armeabi", "armeabi-v7a", "arm64-v8a", "mips", "mips64", "x86", "x86_64"
universalApk true
}
}
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.versionCodeOverride = project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.FilterType.ABI), 0) * 1000000 + android.defaultConfig.versionCode
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-${variant.versionName}.apk"))
}
}
externalNativeBuild {
cmake {
path 'src/main/jni/CMakeLists.txt'
}
}
}
crashlytics {
enableNdk false // too many reports for third-party modules
androidNdkOut '.externalNativeBuild/cmake/release'
androidNdkLibsOut 'src/main/libs'
}
dependencies {
compile project(':common-sources')
compile project(':chess-board-library')
compile project(':number-picker')
compile files('libs/kxml2-2.3.0.jar')
compile files('libs/StartADLib-1.0.1.jar')
compile Dependencies.appCompat
compile Dependencies.cardView
compile Dependencies.firebaseAds
compile Dependencies.googleAnalytics
compile Dependencies.googlePlus
compile Dependencies.googleGames
compile(Dependencies.crashlytics) {
transitive = true
}
compile(Dependencies.crashlyticsNdk) {
transitive = true
}
}
apply plugin: 'com.google.gms.google-services'
附言请投票my issue in Google's bug tracker如果您可以重现错误,但找不到解决方案。
最佳答案
看起来这是构建工具中的错误。即使使用旧的 ndk-build,ABI Split 也不起作用。
在研究过程中,我发现了一个很好的解决方法 - 直接从命令行启动构建。
gradlew assembleDebug
或
gradlew assembleRelease
命令需要从项目的根目录启动。
非常感谢this sudden comment :)
关于android - 使用 ABI 拆分启用 externalNativeBuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40215158/
我正在尝试使用新的 android studio 2.2 将 ndkBuild 功能集成到现有的 android studio 项目中,以便启用 c++ 调试等。我已经尝试了 android stud
我已经从 ndk-build 切换到 cmake 构建系统。但是无法使 APK 拆分功能正常工作。 这是我的应用build.gradle文件 构建的结果只有一个文件 - foo.bar-armeabi
我想在以下示例中调试 Android Studio(版本 2.2)中的 native 代码:https://github.com/googlesamples/android-ndk/tree/mast
在 android studio 4.1.1 中启动一个新的原生 c++ 项目。 转至 build.gradle模块 添加 targets线路: externalNativeBuild {
当我迁移到 Android studio 3.0 时,我得到了以下回溯 * What went wrong: Could not determine the dependencies of task
尝试在 Android Studio ( https://github.com/DrKLO/Telegram ) 中构建 Telegram 源代码时遇到问题。 我已经安装了 NDK、CMake、LLD
我正在尝试使用带有 Android.mk 的新 externalNativeBuild 来设置 NDK 项目,但是当我在命令行上编译与通过 Android Studio 编译时,我得到了不同的结果。我
我是一名优秀的程序员,十分优秀!