现有的答案都没有一个令我满意,但是自由很接近。所以这就是我的做法。目前,我正在与以下人员合作:
- Android Studio Beta 0.8.2
- Gradle插件0.12+
- 摇篮1.12
我的目标是在同一设备上使用同一版本运行Debug
版本。Release
ContentProvider
在用于调试构建的应用程序集后缀的build.gradle中:
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
在您的AndroidManifest.xml文件的set android:authorities
属性中ContentProvider
:
<provider
android:name="com.example.app.YourProvider"
android:authorities="${applicationId}.provider"
android:enabled="true"
android:exported="false" >
</provider>
在代码集AUTHORITY
属性中,可以在实现中所需的任何地方使用它:
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".provider";
提示:以前BuildConfig.PACKAGE_NAME
而已!它将像魅力一样工作。如果您使用SyncAdapter,请继续阅读!
SyncAdapter更新(14.11.2014)
我将再次从当前设置开始:
- Android Studio Beta 0.9.2
- Gradle插件0.14.1
- 摇篮2.1
基本上,如果您需要为不同的构建自定义一些值,则可以从build.gradle文件中进行:
- 使用buildConfigField从
BuildConfig.java
类访问它
- 使用resValue从资源中访问它,例如@ string / your_value
作为资源的替代方法,您可以创建单独的buildType或flavor目录,并覆盖其中的XML或值。但是,我不会在下面的示例中使用它。
例
在build.gradle文件中添加以下内容:
defaultConfig {
resValue "string", "your_authorities", applicationId + '.provider'
resValue "string", "account_type", "your.syncadapter.type"
buildConfigField "String", "ACCOUNT_TYPE", '"your.syncadapter.type"'
}
buildTypes {
debug {
applicationIdSuffix ".debug"
resValue "string", "your_authorities", defaultConfig.applicationId + '.debug.provider'
resValue "string", "account_type", "your.syncadapter.type.debug"
buildConfigField "String", "ACCOUNT_TYPE", '"your.syncadapter.type.debug"'
}
}
您将在BuildConfig.java类中看到结果
public static final String ACCOUNT_TYPE = "your.syncadapter.type.debug";
并在build / Generated / res / Generated / debug / values / genic.xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Values from default config. -->
<item name="account_type" type="string">your.syncadapter.type.debug</item>
<item name="authorities" type="string">com.example.app.provider</item>
</resources>
在您的authenticator.xml中,使用build.gradle文件中指定的资源
<?xml version="1.0" encoding="utf-8"?>
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="@string/account_type"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
/>
在您的syncadapter.xml再次使用相同的资源和@字符串/当局太
<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="@string/authorities"
android:accountType="@string/account_type"
android:userVisible="true"
android:supportsUploading="false"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
/>
提示:自动补全(Ctrl + Space)不适用于这些生成的资源,因此您必须手动输入