기존 답변 중 어느 것도 나를 만족시키지 않았지만 Liberty는 가까웠습니다. 그래서 이것이 내가하는 방법입니다. 우선 현재 저는 다음과 같이 일하고 있습니다.
- Android 스튜디오 베타 0.8.2
- Gradle 플러그인 0.12. +
- Gradle 1.12
내 목표 는 동일한 .NET Framework를 사용하여 동일한 장치에서 Debug
버전과 함께 Release
버전 을 실행하는 것 입니다 ContentProvider
.
에서 build.gradle 디버그 빌드에 대한 앱 설정 접미사 :
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
에서 의 AndroidManifest.xml 파일 세트 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 업데이트 (2014.11.14)
다시 한 번 현재 설정으로 시작하겠습니다.
- Android 스튜디오 베타 0.9.2
- Gradle 플러그인 0.14.1
- Gradle 2.1
기본적으로 다른 빌드에 대해 일부 값을 사용자 정의해야하는 경우 build.gradle 파일에서 수행 할 수 있습니다.
- buildConfigField 를 사용 하여
BuildConfig.java
클래스 에서 액세스
- resValue 를 사용 하여 리소스에서 액세스합니다 (예 : @ string / your_value).
리소스의 대안으로 별도의 buildType 또는 플레이버 디렉토리를 만들고 그 안의 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 / generated.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)이 작동하지 않으므로 수동으로 입력해야합니다.