是否可以从AndroidManifest访问BuildConfig值。xml?
在我的build.gradle文件中,我有:
defaultConfig {
applicationId "com.compagny.product"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
// Facebook app id
buildConfigField "long", "FACEBOOK_APP_ID", FACEBOOK_APP_ID
}
FACEBOOK\u APP\u ID
在my gradle中定义。属性文件:
# Facebook identifier (app ID)
FACEBOOK_APP_ID=XXXXXXXXXX
要在我的应用程序中使用Facebook连接,我必须将此行添加到我的Androidanifest.xml:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId"/>
我想用gradle中定义的BuildConfig字段FACEBOOK_APP_ID
替换@string/Application ationId
,如下所示:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="FACEBOOK_APP_ID"/>
使用BuildConfig可以吗?如果没有,我如何才能做到这一点?
注意:使用resValue
时,字符串资源文件可能会意外覆盖该值(例如,对于其他语言)
要获得可在清单和java代码中使用的真正常量值,请同时使用manifestplaceholder
和buildConfigField
:例如。
android {
defaultConfig {
def addConstant = {constantName, constantValue ->
manifestPlaceholders += [ (constantName):constantValue]
buildConfigField "String", "${constantName}", "\"${constantValue}\""
}
addConstant("FACEBOOK_APP_ID", "xxxxx")
}
清单文件中的访问:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="${FACEBOOK_APP_ID}"/>
从java:
BuildConfig.FACEBOOK_APP_ID
如果常量值需要特定于构建类型,则需要调整助手addConstant
(以使用groovy闭包语义学),例如,
buildTypes {
def addConstantTo = {target, constantName, constantValue ->
target.manifestPlaceholders += [ (constantName):constantValue]
target.buildConfigField "String", "${constantName}", "\"${constantValue}\""
}
debug {
addConstantTo(owner,"FACEBOOK_APP_ID", "xxxxx-debug")
}
release {
addConstantTo(owner,"FACEBOOK_APP_ID", "xxxxx-release")
}
从AndroidManifest访问Gradle构建配置值的另一种方法。xml是通过以下占位符生成的:
android {
defaultConfig {
manifestPlaceholders = [ facebookAppId:"someId..."]
}
productFlavors {
flavor1 {
}
flavor2 {
manifestPlaceholders = [ facebookAppId:"anotherId..." ]
}
}
}
然后在你的舱单上:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="${facebookAppId}"/>
请参阅此处的更多详细信息:https://developer.android.com/studio/build/manifest-build-variables.html
(旧链接仅供参考:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger)
代替
buildConfigField "long", "FACEBOOK_APP_ID", FACEBOOK_APP_ID
具有
resValue "string", "FACEBOOK_APP_ID", FACEBOOK_APP_ID
然后重建你的项目(Android Studio-
在项目构建期间,这两个命令都会生成生成的值(第一种情况下由Java常量组成,第二种情况下由Android资源组成),但第二种方法将生成一个string
资源值,可以使用@string/FACEBOOK\u APP\u ID
语法访问该值。这意味着它既可以在清单中使用,也可以在代码中使用。
我知道我们无法访问web中的属性。但是有没有解决方法来实现这一点。我只需要访问env在web中的价值。xml文件。 如有任何建议,我们将不胜感激。
我正在尝试在: 我从java代码中设置了如下键: 我也尝试了内部的没有工作。如何在布局元素之外的中引用MDC键? 我还在properties部分下为键指定了默认值,如下所示:
我的AndroidManifest文件显示了一个错误“unresolved class'mainactivity'”,但我在包中有一个java类和同名的文件,它应该是程序的第一个活动,所以当我尝试运行程序时它会崩溃,我检查了代码,但没有发现任何问题。 MainActivity文件的java代码 我的程序使用的第二个活动的java代码(“gameui.java”)
我需要在应用程序中设置一个基本url。属性,并且需要使用该基本url将记录插入liquibase中的mongodb 试过下面这样的东西 在应用程序中.属性 在插入更改日志.xml文件 尝试了所有选项。推荐链接https://docs.liquibase.com/concepts/basic/changelog-property-substitution.html 任何人都可以帮忙使用Spring靴
问题内容: 我想访问中提供的值,例如: 我想在Spring Boot应用程序的主程序中访问。 问题答案: 你可以使用批注并在使用的任何Spring bean中访问属性 Spring Boot文档的Externalized Configuration部分介绍了你可能需要的所有详细信息。
我有一个zip文件“items.zip”。 在这个zip-File中有不同的类,其中一些对我有用,而另一些则不是。 圆圈类有一个construcor和一个paint方法。 圆圈ButYoucantDrawit。类具有损坏的构造函数。 在启动主程序之前,我想访问项目。zip,检查它们是否可用,然后尽可能地使用有用的。最好的方法是什么? 到目前为止,我已经尝试了9次,但没有一次有意义。我如何才能做到最