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

看板AndroidDev作者 (非常念舊)時間7年前 (2017/09/05 17:33), 編輯推噓0(0035)
留言35則, 3人參與, 最新討論串1/2 (看更多)
弄了一天,上來求救一下.. 我這邊包了一個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://www.ptt.cc/bbs/AndroidDev/M.1504604018.A.5E4.html

09/05 17:45, , 1F
Activity只能由系統建立,必須加到manifest用startActivity
09/05 17:45, 1F

09/05 17:47, , 2F
您意思是說我的RwmManager必須加在別的project的
09/05 17:47, 2F

09/05 17:47, , 3F
AndroidManifest.xml?
09/05 17:47, 3F

09/05 17:47, , 4F
你的情況這Manager根本不需要是Activity,給別人呼叫的API
09/05 17:47, 4F

09/05 17:47, , 5F
數加上context,再用那個context去bindService就好
09/05 17:47, 5F

09/05 17:50, , 6F
這樣WearableService是不是就要給別人自己去寫了?
09/05 17:50, 6F

09/05 17:52, , 7F
不用啊...
09/05 17:52, 7F

09/05 17:54, , 8F
public void create(Context context) {
09/05 17:54, 8F

09/05 17:54, , 9F
Intent adc = new Intent(context, ...
09/05 17:54, 9F

09/05 17:54, , 10F
context.bindService(...)
09/05 17:54, 10F

09/05 17:54, , 11F
} // 大概像這樣
09/05 17:54, 11F

09/05 17:56, , 12F
呼叫的人再把他的Context(例如Activity)傳進來就好
09/05 17:56, 12F

09/05 18:12, , 13F
照您的方法,我的失敗原因是我的 RwmManager 根本沒啟
09/05 18:12, 13F

09/05 18:13, , 14F
動,而wearableService也沒在啟動在系統內嗎?
09/05 18:13, 14F

09/05 18:22, , 15F
應該說你的Manager(Activity)不是由系統啟動的,缺少必要的
09/05 18:22, 15F

09/05 18:22, , 16F
系統資源,沒辦法做bindService這些Context的功能
09/05 18:22, 16F

09/05 18:23, , 17F
Activity自己new出來是不能用的
09/05 18:23, 17F

09/05 21:33, , 18F
可我特地把 bindService 先註解掉,只留 Intent宣告
09/05 21:33, 18F

09/05 21:34, , 19F
Intent adb = new Intent(this, xxxxService) 他就掛
09/05 21:34, 19F

09/05 21:35, , 20F
了。照了您的方法可以運作,感謝。以前沒有提供sdk的
09/05 21:35, 20F

09/05 21:37, , 21F
經驗,都只是call別人的,現在要想得更周全~"~s大謝謝
09/05 21:37, 21F

09/06 02:15, , 22F
其實也不是周不周全的問題 而是你還沒搞懂為什麼Activity不是
09/06 02:15, 22F

09/06 02:15, , 23F
從Activity()進去而是onCreate()才算開始
09/06 02:15, 23F

09/06 02:16, , 24F
當你透過Intent呼叫Activity的時候 其實系統除了把它new起來
09/06 02:16, 24F

09/06 02:17, , 25F
以外還做了很多事情 他才能正常呼叫裡面的bindService()
09/06 02:17, 25F

09/06 02:17, , 26F
而那些正是你原本的寫法缺的 也不是由你做的
09/06 02:17, 26F

09/06 02:20, , 27F
如果時間充足的話 建議你去弄懂這塊 因為這是基礎喔@@
09/06 02:20, 27F

09/07 21:34, , 28F
感謝指導..那我先不bind先intent(this,service)就找
09/07 21:34, 28F

09/07 21:34, , 29F
不到service
09/07 21:34, 29F

09/07 21:34, , 30F
請問這原因?@@感激
09/07 21:34, 30F

09/08 00:48, , 31F
!?你的RwmManager跟WearableService是在同一個apk裡面嗎
09/08 00:48, 31F

09/08 00:49, , 32F
如果是 檢查一下aar是否真的有包進那個class
09/08 00:49, 32F

09/08 22:33, , 33F
是的 我解開 將class.jar 直接用add to library看 他
09/08 22:33, 33F

09/08 22:33, , 34F
有出現wearableservice...所以一直很困惑 雖然說現在
09/08 22:33, 34F

09/08 22:33, , 35F
用別的方法了 但這個無法解釋
09/08 22:33, 35F
文章代碼(AID): #1PhczoNa (AndroidDev)
文章代碼(AID): #1PhczoNa (AndroidDev)