作者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/cn.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