在带有 org.jetbrains.kotlin (1.8.0-Beta) 插件和 8.0.0-alpha09 gradle 插件的新版本 Android Studio (Flamingo | 2022.2.1 Canary 9) 中,新版本突然出现此错误:
构建类型“release”包含自定义 BuildConfig 字段,但该功能已禁用。
有办法让它消失吗?
关于这一点我没说太多.那好吧.谷歌发布了一个名为Nougat(android N)的新版android.它是compileSdkVersion 24.但是,在官方文档中的构建工具页面上,没有提到它.
我想让我的应用程序100%的人使用Google Play商店,其中包括Android N用户.
tl;博士:我应该在buildToolsVersion字段中填写什么?
谢谢.
我想定义一个构建配置文件,我可以在它自己使用gradle脚本中定义的变量:
def someVar = 512
android {
...
buildConfigField 'int', 'SOME_INT_FIELD', someVar
}
Run Code Online (Sandbox Code Playgroud)
但这会产生以下错误:
错误:(25,0)未找到Gradle DSL方法:'buildConfigField()'
可能的原因:
项目"PROJECT"可能正在使用不包含该方法的Gradle版本. 构建文件可能缺少Gradle插件.
我可以使用以下引用:
def someVar = 0
android {
...
buildConfigField 'int', 'SOME_INT_FIELD', '"' + someVar + '"'
}
Run Code Online (Sandbox Code Playgroud)
但这导致BuildConfig中的编译器错误
// Fields from default config.
public static final int SOME_INT_FILED = "512";
Run Code Online (Sandbox Code Playgroud)
所以现在我留下来:
def someVar = 0
android {
...
buildConfigField 'String', 'SOME_INT_FIELD', '"' + someVar + '"'
}
Run Code Online (Sandbox Code Playgroud)
并使用它像:
final int value = Integer.valueOf(BuildConfig.SOME_INT_FIELD);
Run Code Online (Sandbox Code Playgroud)
有没有人有更好的解决方案或我使用buildConfigField错误?
(我也尝试将括号与上述任何可能性结合使用.)
我正在使用AndroidStudio,我有以下内容:
我想设置我的"通信"模块的gradle文件来实现以下目的:
作为app模块的gradle,我可以为BuildConfig.java文件设置变量,例如:
buildTypes {
release {
...
buildConfigField "String", "SERVER_URL", '"my_url"'
}
debug {
buildConfigField "String", "SERVER_URL", '"my_url"'
}
}
Run Code Online (Sandbox Code Playgroud)然后我可以使用它们 BuildConfig.SERVER_URL
问题是:如何使用Java Library模块实现此目的?
java android module android-gradle-plugin android-buildconfig
一点背景。我几个月来一直在构建/调试/测试我的简单应用程序,没有任何问题。在 AVD 或我的实际 S9 手机上构建/安装。几个月来一切都很好。现在,准备好在 Play 商店发布我的第一个测试版(我的第一个应用程序)。因此,我按照“签署”我的应用程序的说明进行操作。那行得通,我将我的应用程序包上传到了 Play 商店。现在我根本无法在 Android Studio 中构建/调试/安装。
错误:您当前选择的变体 (app-release-unsigned.apk) 的 apk 未签名。请为此变体(发行版)指定签名配置。
调试 (Shift+F9) 产生上述错误并显示“编辑配置”对话框。
我点击了“修复”按钮,然后我不知道该怎么做。或者如何使用这些不同的构建配置。
构建.gradle
apply plugin: 'com.android.application'
android {
signingConfigs {
debug {
storeFile file(var)
storePassword 'xxx'
keyAlias = 'xxx'
keyPassword 'xxx'
}
}
compileSdkVersion 29
buildToolsVersion "29.0.1"
defaultConfig {
applicationId "com.birdersdiary.mobile"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "b1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) …Run Code Online (Sandbox Code Playgroud) 在我的 Android 应用程序中,我有两个风味维度:“品牌”(品牌 1、品牌 2)和“环境”(登台、生产)。BuildConfig一段时间后,我添加了“环境”维度,并且之前为不同品牌定义了一些变量。更具体地说,我BASE_URL这样定义:
flavorDimensions 'brand'
productFlavors {
brand1 {
dimension 'brand'
...
buildConfigField "String", "BASE_URL", "\"http://brand.one.api/\""
...
}
brand2 {
dimension 'brand'
...
buildConfigField "String", "BASE_URL", "\"http://brand.two.api/\""
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我添加了“环境”维度,我想要设置的是四个不同的端点:
但我不知道如何BuildConfig为风味维度的特定组合创建变量。这甚至可以用裸 gradle 实现吗?
谢谢
gradle android-build-flavors android-flavordimension android-buildconfig
我有一个Android AAR库.我想对我的库的消费者应用程序强加的一个安全策略是,当它debuggable为true或者使用the创建apk 时,它必须无法使用我的库.debug buildType.
如何在android中以编程方式检查?
java android android-studio android-gradle-plugin android-buildconfig
我正在尝试使用Android StudioBuildConfig中的 Gradle 将 URL 添加到我的文件中。所以我将这段代码添加到文件中gradle
buildTypes {
debug {
buildConfigField "String", "MIDTRANS_API", '"https://app.sandbox.midtrans.com/snap/v1"'
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试重建我的项目并希望该值将出现在BuildConfig文件中,但事实并非如此。有人可以解释如何正确执行此操作吗?
我的完整gradle文件代码如下
apply plugin: 'com.android.library'
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
buildConfigField "String", "DAR_API", '"{some string}"'
buildConfigField "String", "DAR_API_AUTH", '"{some string}"'
buildConfigField "String", "MIDTRANS_API", '"https://app.sandbox.midtrans.com/snap/v1"'
}
rc {
minifyEnabled true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", "DAR_API", '"{some …Run Code Online (Sandbox Code Playgroud) 请在Android Studio上查看以下来自Analyze APK的图像。
minifyEnabled = false,和minifyEnabled = true(当然是在使用mapping.txt解码之后)
minifyEnabled = false。BuildConfig在那儿。

minifyEnabled = true(使用mapping.txt解码)。BuildConfig不在这里。
我可以BuildConfig在classes.dex缩小之前找到,而在缩小之后找不到。我找不到关于这个的任何文件/讨论,但是有一些规则,以剥离BuildConfig从classes.dex与涅槃后的ProGuard?在那种情况下,这是否意味着将敏感信息放入相对安全BuildConfig?或者,它可能只是藏在其他地方?
如果重要的话,我的ProGuard版本是4.7。
我目前正在致力于模块化我的应用程序,因此我将每个功能放入库模块中。在我的一项功能中,我访问版本代码和名称。但是,尽管我在特定于该模块的 build.gradle 文件中定义了它们
它们不存在于生成的 BuildConfig 文件中
我无法引用原始:app模块的 BuildConfig 文件,因为我不能让我的功能模块依赖于该模块。
是否有其他方法可以从库模块访问此信息?