Bu bölümde, en iyi şekilde yararlanabilirsiniz. Böylece, SDK ve başlangıçtaki kullanım hakkında bilgi sahibi olmanızı üzerine konuşacağız. Sürekli olarak takip etmeniz önerilir sağlamak için daha fazla bilgi edindiniz.
İş profiliyle test cihazı kurma
Google, yönetilen bir sistemi simüle etmenize ve test etmenize yardımcı olmak için Test DPC uygulamasını derledi ortama aktarmanızı sağlar. Bir iş profili oluşturur ve , cihazdaki belirli özellikleri etkinleştirmek veya devre dışı bırakmak için kullanılan kontroller içerir.
Test DPC uygulamasını yükleyin
Google Play Store'u açıp Test DPC uygulamasını indirin.
İş profili oluşturma
Uygulama yüklendikten sonra cihazda iki simge görünür: kurulum simgesi ve Test DPC uygulama simgesi. Kurulum simgesine dokunun ve adımları.
Artık biri kişisel uygulamalar, diğeri iş uygulamaları için olmak üzere iki ayrı profiliniz var. Uygulama listesinin üst kısmındaki sekmeler aracılığıyla bunlar arasında geçiş yapabilirsiniz.
Uygulamanız yüklenirken, normalde her ikisinde de otomatik olarak
profil. Bunu açıkça iş profilinize yüklemeniz gerekirse:
--user
bağımsız değişkenini adb yüklemesi ile kullanabilir.
$ adb install --user [id number of profile] [path of apk file]
Test cihazının kurulumuyla ilgili daha fazla ayrıntı için şurayı ziyaret edin: bağlantısı.
Uygulamanızın uygun şekilde yapılandırıldığından emin olun
Java 8'i etkinleştir destek ve minSdk değerinizin en az 19 olduğundan emin olun.
Gradle bağımlılıkları ekleme
dependencies {
annotationProcessor
'com.google.android.enterprise.connectedapps:connectedapps-processor:1.1.2'
implementation
'com.google.android.enterprise.connectedapps:connectedapps:1.1.2'
implementation
'com.google.android.enterprise.connectedapps:connectedapps-annotations:1.1.2'
}
Bu örnekte Guava'yı kullanıyoruz. Bu, SDK'yı kullanma şartı değildir ancak Merhaba Dünya örneğini takip etmek için api("com.google.guava:guava:29.0-android")
değerini de eklemeniz gerekir.
Profiller arası test çağrınızı içerecek yeni bir sınıf oluşturun
Bunu daha sonra daha kullanışlı hale getirmek için, gerçek profiller arası çağrılarınızın gelmesini istersiniz.
public class HelloWorld {
@CrossProfile
public ListenableFuture<String> helloWorld() {
return Futures.immediateFuture("Hello world");
}
}
Vadeli İşlemler için Guava desteğine güvenemiyorsanız şimdilik takipte kal hangi değişiklikleri yapmanız gerektiğini gösteren son adıma bakın.
Profiller arası arama yapma
Bunu gerçekten profiller arası aramalar yapmanız gereken bir sınıfta yapabilirsiniz. daha sonra.
// TODO: inject/pass these into the class later instead.
CrossProfileConnector crossProfileConnector =
CrossProfileConnector.builder(this).build();
ProfileHelloWorld profileHelloWorld =
ProfileHelloWorld.create(crossProfileConnector);
ListenableFuture<Map<Profile, String>> resultsFuture =
profileHelloWorld.both().helloWorld();
FluentFuture.from(resultsFuture)
.addCallback(new FutureCallback<Map<Profile, String>>() {
@Override
public void onSuccess(Map<Profile, String> results) {
for (Profile profile : results.keySet()) {
Log.w("tag", "CROSS_PROFILE profile: " + profile.asInt()
+ "; result: " + results.get(profile));
}
}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Failed to say hello world on both profiles", t);
}
}, directExecutor());
Örneği SDK'ya sağlayın
Daha önce bahsedilen helloWorld
yöntem çağrısı elbette oluşturulmuş
kastettiğim gibi. Çoğunlukla gerçek sınıflarınız single veya diğer
ve Dagger gibi bağımlılık yerleştirme çerçevelerine bağlı karmaşık
sınıflar bulunuyor. Alıcı:
mantığın diğer profildeki gerçek sınıfta çağrılmasına izin verir.
@CrossProfile
sınıfının
@CrossProfileProvider
sınıf. Bu sınıfı oluştur.
public class HelloWorldProvider {
@CrossProfileProvider
public HelloWorld getHelloWorld() {
return new HelloWorld();
}
}
Ek kablo bağlantısı
Özel sınıfları ve yöntemleri desteklemek için gereken kod oluşturma işlemi, ek kablo kurulumu gerekmez. Bu, bir proje yöneticisinin sahip olduğu karmaşık birçok derleme hedefi ve görünürlük gereksinimini geniş ölçekte ele aldık.
Öncelikle, mevcut veya yeni üst düzey sınıflarınıza
@CrossProfileConfiguration
, sağlayıcı sınıflarınızı işaret ediyor.
@CrossProfileConfiguration(providers = HelloWorldProvider.class)
abstract class HelloWorldConfiguration {}
İkinci olarak, otomatik olarak oluşturulan hizmeti
<application> tag
Bu durum siz projenizi oluşturana kadar çözümlenmeyebilir.
<service
android:name="com.google.android.enterprise.connectedapps.CrossProfileConnector_Service"
android:exported="false"/>
Son olarak, geliştirme amacıyla kendinize INTERACT_ACROSS_USERS
izni gerekir. Henüz yapmadıysanız bunu hesabınızda saklayamazsınız.
ama en kolay başlangıç yöntemi de budur. Öncelikle, bunu
aşağıdaki gibi düzenleyin:
<uses-permission
android:name="android.permission.INTERACT_ACROSS_USERS"
tools:ignore="ProtectedPermissions"/>
Ardından, adb komutunu kullanarak komut satırından kendinize Aşağıdaki gibi (uygulamanızda zaten yoksa):
adb shell pm grant <your package> android.permission.INTERACT_ACROSS_USERS
Vadeli İşlemler için Guava'ya bağımlı hale gelmediyseniz, bunun için anlamına gelir. İlk olarak "Hello World" ifadesini döndürün dizeyi doğrudan girin ve sonuçları tam olarak anlayabilmelidir. İkinci olarak, bu çağrılar artık eşzamanlı olduğundan Profiller arası çağrınızı ve sonuçları yazdırmanızı bağlantı dinleyicisidir.
''Cross-profile cal'' (profiller arası cal) altında listelenen kodu çalıştırdığınızda farklı bir yerde "Hello World" için her profilden birer tane olmak üzere iki günlük. Yalnızca bir günlük alırsanız uygulamanızı her iki profile de yüklediğinizden ve izni verdiğinizden emin olun.