[問題] 如何包一個有做連接service的aar?

作者: gn00618777 (非常念舊)   2017-09-05 17:33:35
弄了一天,上來求救一下..
我這邊包了一個AAR,AAR裡面有一個class 名叫 RwmManager
class CwmManager exteds Activity
{
public void Create(){
Intent adc = new Intent(this, rwm.wearablesdk.wearableService.class)
/*
bindService(....)
*/
}
}
AndroidManifest.xml:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true">
<service
android:name="rwm.wearablesdk.WearableService"
android:enabled="true" />
</application>
包成AAR後,給另一個 project import
在別的 project 的 activity 這樣宣告
RwmManager rwmManager = new RwmManager();
rwmManager.Create();
APK會變成閃退,log出現
E AndroidRuntime: at rwm.wearablesdk.RwmManager.Create(Unknown Source)
他好像找不到 rwm.wearablesdk.WearableService...
我在另一個 project 的AndroidManifest.xml加上此rwm.wearablesdk.WearableService
一樣結果
我錯在哪呢? 感謝
如果不會在閃退了,我想要在此RwmManager class 內 bindService 這邏輯不知道
有沒有問題,因為我看範例都是在Activity 去 bindServiec,而我是想把 RwmManager
extends Activity 包起來給別人呼叫,當一呼叫 WearableService就已被連接了
作者: ssccg (23)   2017-09-05 17:45:00
Activity只能由系統建立,必須加到manifest用startActivity
作者: gn00618777 (非常念舊)   2017-09-05 17:47:00
您意思是說我的RwmManager必須加在別的project的AndroidManifest.xml?
作者: ssccg (23)   2017-09-05 17:47:00
你的情況這Manager根本不需要是Activity,給別人呼叫的API數加上context,再用那個context去bindService就好
作者: gn00618777 (非常念舊)   2017-09-05 17:50:00
這樣WearableService是不是就要給別人自己去寫了?
作者: ssccg (23)   2017-09-05 17:52:00
不用啊...public void create(Context context) {Intent adc = new Intent(context, ...context.bindService(...)} // 大概像這樣呼叫的人再把他的Context(例如Activity)傳進來就好
作者: gn00618777 (非常念舊)   2017-09-05 18:12:00
照您的方法,我的失敗原因是我的 RwmManager 根本沒啟動,而wearableService也沒在啟動在系統內嗎?
作者: ssccg (23)   2017-09-05 18:22:00
應該說你的Manager(Activity)不是由系統啟動的,缺少必要的系統資源,沒辦法做bindService這些Context的功能Activity自己new出來是不能用的
作者: gn00618777 (非常念舊)   2017-09-05 21:33:00
可我特地把 bindService 先註解掉,只留 Intent宣告Intent adb = new Intent(this, xxxxService) 他就掛了。照了您的方法可以運作,感謝。以前沒有提供sdk的經驗,都只是call別人的,現在要想得更周全~"~s大謝謝
作者: y3k (激流を制するは静水)   2017-09-06 02:15:00
其實也不是周不周全的問題 而是你還沒搞懂為什麼Activity不是從Activity()進去而是onCreate()才算開始當你透過Intent呼叫Activity的時候 其實系統除了把它new起來以外還做了很多事情 他才能正常呼叫裡面的bindService()而那些正是你原本的寫法缺的 也不是由你做的如果時間充足的話 建議你去弄懂這塊 因為這是基礎喔@@
作者: gn00618777 (非常念舊)   2017-09-07 21:34:00
感謝指導..那我先不bind先intent(this,service)就找不到service請問這原因?@@感激
作者: y3k (激流を制するは静水)   2017-09-08 00:48:00
!?你的RwmManager跟WearableService是在同一個apk裡面嗎如果是 檢查一下aar是否真的有包進那個class
作者: gn00618777 (非常念舊)   2017-09-08 22:33:00
是的 我解開 將class.jar 直接用add to library看 他有出現wearableservice...所以一直很困惑 雖然說現在用別的方法了 但這個無法解釋

Links booklink

Contact Us: admin [ a t ] ucptt.com