Không có câu trả lời nào làm tôi hài lòng, tuy nhiên Liberty đã gần gũi. Vì vậy, đây là cách tôi đang làm điều đó. Trước hết tại thời điểm tôi đang làm việc với:
- Android Studio Beta 0.8.2
- Plugin cấp độ 0.12. +
- Lớp 1.12
Mục tiêu của tôi là chạy Debug
phiên bản cùng với Release
phiên bản trên cùng một thiết bị sử dụng cùng một thiết bị ContentProvider
.
Trong build.gradle của ứng dụng của bạn đặt hậu tố cho bản dựng Debug:
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
Trong thuộc tính tập tin AndroidManifest.xmlandroid:authorities
của bạn ContentProvider
:
<provider
android:name="com.example.app.YourProvider"
android:authorities="${applicationId}.provider"
android:enabled="true"
android:exported="false" >
</provider>
Trong thuộc tính bộ mã của bạn AUTHORITY
có thể được sử dụng bất cứ nơi nào cần thiết trong quá trình triển khai của bạn:
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".provider";
Mẹo: Trước đó làBuildConfig.PACKAGE_NAME
Đó là nó! Nó sẽ hoạt động như một lá bùa. Hãy tiếp tục đọc nếu bạn sử dụng SyncAd CHƯƠNG!
Cập nhật cho SyncAd CHƯƠNG (14.11.2014)
Một lần nữa tôi sẽ bắt đầu với thiết lập hiện tại của mình:
- Android Studio Beta 0.9.2
- Plugin cấp độ 0.14.1
- Lớp 2.1
Về cơ bản, nếu bạn cần tùy chỉnh một số giá trị cho các bản dựng khác nhau, bạn có thể thực hiện nó từ tệp build.gradle:
- sử dụng buildConfigField để truy cập nó từ
BuildConfig.java
lớp
- sử dụng resValue để truy cập nó từ các tài nguyên, ví dụ: @ string / your_value
Thay thế cho tài nguyên, bạn có thể tạo các thư mục buildType hoặc hương vị riêng biệt và ghi đè các giá trị hoặc XML trong chúng. Tuy nhiên, tôi sẽ không sử dụng nó trong ví dụ dưới đây.
Thí dụ
Trong build.gradle tệp thêm vào như sau:
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"'
}
}
Bạn sẽ thấy kết quả trong BuildConfig.java lớp
public static final String ACCOUNT_TYPE = "your.syncadapter.type.debug";
và trong build / created / res / created / debug / value / created.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>
Trong tệp Authenticator.xml của bạn sử dụng tài nguyên được chỉ định trong tệp 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"
/>
Trong syncad CHƯƠNG.xml của bạn sử dụng lại cùng một tài nguyên và @ chuỗi / chính quyền cũng vậy
<?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"
/>
Mẹo: tự động hoàn thành (Ctrl + Space) không hoạt động đối với các tài nguyên được tạo này, do đó bạn phải nhập chúng theo cách thủ công