作者gn00618777 (非常念舊)
看板AndroidDev
標題[問題] 如何包一個有做連接service的aar?
時間Tue Sep 5 17:33:35 2017
弄了一天,上來求救一下..
我這邊包了一個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就已被連接了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.69.181
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1504604018.A.5E4.html
1F:→ ssccg: Activity只能由系統建立,必須加到manifest用startActivity 09/05 17:45
2F:→ gn00618777: 您意思是說我的RwmManager必須加在別的project的 09/05 17:47
3F:→ gn00618777: AndroidManifest.xml? 09/05 17:47
4F:→ ssccg: 你的情況這Manager根本不需要是Activity,給別人呼叫的API 09/05 17:47
5F:→ ssccg: 數加上context,再用那個context去bindService就好 09/05 17:47
6F:→ gn00618777: 這樣WearableService是不是就要給別人自己去寫了? 09/05 17:50
7F:→ ssccg: 不用啊... 09/05 17:52
8F:→ ssccg: public void create(Context context) { 09/05 17:54
9F:→ ssccg: Intent adc = new Intent(context, ... 09/05 17:54
10F:→ ssccg: context.bindService(...) 09/05 17:54
11F:→ ssccg: } // 大概像這樣 09/05 17:54
12F:→ ssccg: 呼叫的人再把他的Context(例如Activity)傳進來就好 09/05 17:56
13F:→ gn00618777: 照您的方法,我的失敗原因是我的 RwmManager 根本沒啟 09/05 18:12
14F:→ gn00618777: 動,而wearableService也沒在啟動在系統內嗎? 09/05 18:13
15F:→ ssccg: 應該說你的Manager(Activity)不是由系統啟動的,缺少必要的 09/05 18:22
16F:→ ssccg: 系統資源,沒辦法做bindService這些Context的功能 09/05 18:22
17F:→ ssccg: Activity自己new出來是不能用的 09/05 18:23
18F:→ gn00618777: 可我特地把 bindService 先註解掉,只留 Intent宣告 09/05 21:33
19F:→ gn00618777: Intent adb = new Intent(this, xxxxService) 他就掛 09/05 21:34
20F:→ gn00618777: 了。照了您的方法可以運作,感謝。以前沒有提供sdk的 09/05 21:35
21F:→ gn00618777: 經驗,都只是call別人的,現在要想得更周全~"~s大謝謝 09/05 21:37
22F:→ y3k: 其實也不是周不周全的問題 而是你還沒搞懂為什麼Activity不是 09/06 02:15
23F:→ y3k: 從Activity()進去而是onCreate()才算開始 09/06 02:15
24F:→ y3k: 當你透過Intent呼叫Activity的時候 其實系統除了把它new起來 09/06 02:16
25F:→ y3k: 以外還做了很多事情 他才能正常呼叫裡面的bindService() 09/06 02:17
26F:→ y3k: 而那些正是你原本的寫法缺的 也不是由你做的 09/06 02:17
27F:→ y3k: 如果時間充足的話 建議你去弄懂這塊 因為這是基礎喔@@ 09/06 02:20
28F:→ gn00618777: 感謝指導..那我先不bind先intent(this,service)就找 09/07 21:34
29F:→ gn00618777: 不到service 09/07 21:34
30F:→ gn00618777: 請問這原因?@@感激 09/07 21:34
31F:→ y3k: !?你的RwmManager跟WearableService是在同一個apk裡面嗎 09/08 00:48
32F:→ y3k: 如果是 檢查一下aar是否真的有包進那個class 09/08 00:49
33F:→ gn00618777: 是的 我解開 將class.jar 直接用add to library看 他 09/08 22:33
34F:→ gn00618777: 有出現wearableservice...所以一直很困惑 雖然說現在 09/08 22:33
35F:→ gn00618777: 用別的方法了 但這個無法解釋 09/08 22:33