最新消息:20210917 已从crifan.com换到crifan.org

【未解决】通过调试rcs的core加运行其他几个apk去研究rcsjta的服务没运行的原因

core crifan 272浏览 0评论
折腾:
【记录】研究Android项目rcsjta中RCS的core的service启动的代码调用逻辑关系和顺序
期间,目前代码逻辑没有完全搞懂。
然后用 调试core+运行RI 有点发现,但是还是没结果,没找到core是如何初始化的
然后打算去换换别的apk去试试
即:
调试core
然后手动运行其他这几个apk,看看效果
是否能触发core中初始化的部分的代码
结果问题依旧。
RI
settings
相对来说,最有用,至少还能触发core中的service运行
比如
触发了:
之前就见过的:
com.gsma.services.rcs.action.GET_SERVICE_STARTING_STATE
但是其他几个apk,都不会触发
其中tts会崩溃,无法正常启动。所以不确定如果正常启动,是否会触发。
去点击关闭rcs service
再重新开启试试
期间可能是由于调试导致超时?
关闭失败:
提示:
Information
Failed to get result for com.gsma.service.rcs.action.GET_ACTIVATION_MODE see Logcat!
去Logcat中看看
结果:看不到
因为此处没有调试settings
那想到了一个办法:
换个方式:
调试settings + 手动运行core
看看效果
不过此处运行到了一个 貌似有用的 断点:
src/main/java/com/gsma/services/rcs/RcsServiceControl.java
/**
 * Gets an instance of RcsServiceControl
 *
 * @param ctx the context.
 * @return RcsServiceControl the singleton instance.
 */
public static RcsServiceControl getInstance(Context ctx) {
    if (sInstance != null) {
        return sInstance;
    }
    synchronized (RcsServiceControl.class) {
        if (sInstance == null) {
            if (ctx == null) {
                throw new IllegalArgumentException("Context is null");


            }
            sInstance = new RcsServiceControl(ctx.getApplicationContext());
        }
    }
    return sInstance;
}
继续:
src/main/java/com/gsma/services/rcs/RcsServiceControl.java
private RcsServiceControl(Context ctx) {
    HandlerThread handlerThread = new HandlerThread(getClass().getSimpleName());
    handlerThread.start();
    mHandler = new Handler(handlerThread.getLooper());
    mContext = ctx;
}
继续返回到了
src/com/gsma/rcs/core/control/CoreControlApplication.java
public class CoreControlApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();
    Context context = getApplicationContext();
    mRcsServiceControl = RcsServiceControl.getInstance(context);


    final ConnectionManager cnxManager = ConnectionManager.createInstance(context,
            mRcsServiceControl, RcsServiceName.FILE_TRANSFER, RcsServiceName.CHAT,
            RcsServiceName.CONTACT);


    /* Do not execute the ConnectionManager on the main thread */
    Handler mainThreadHandler = new Handler(Looper.getMainLooper());


    mainThreadHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            cnxManager.start();
            sCnxManagerStarted = true;
        }
    }, DELAY_FOR_STARTING_CNX_MANAGER);
}
看起来,至少和RCS的core的service相关
然后
src/main/java/com/gsma/rcs/api/connection/ConnectionManager.java
/**
 * Start connection manager
 */
public void start() {
    /* Register the broadcast receiver to catch ACTION_SERVICE_UP */
    mCtx.registerReceiver(new RcsServiceReceiver(), new IntentFilter(
            RcsService.ACTION_SERVICE_UP));
    /* Register the broadcast receiver to pool periodically the API connections */
    mCtx.registerReceiver(new ReceiveTimerToReConnectApi(), new IntentFilter(ACTION_CONNECT));
    mRetryCount = 0;
    connectApis();
}
此处问题依旧:
com.gsma.services.rcs.action.GET_SERVICE_STARTING_STATE
返回还是null
此处还是和之前一样
虽然context manager 启动了
但是内部的core的service没启动。
然后还是:
服务没有启动
不过,此处去点击启动core的Provisioning
但是还是没有运行到断点
没有运行到和RCS的core的service相关的代码
所以感觉还是要去找代码逻辑:
【记录】研究rcsjta中的RcsCoreService的代码调用逻辑和顺序
然后去试试:
【无法解决】尝试通过卸载重装rcsjta的几个apk看看现象是否有变化以求找到rcs的core的service启动逻辑
然后继续去:
【未解决】rcsjta中研究RCS的core的Service本身相关代码以希望找到为何没启动的原因

转载请注明:在路上 » 【未解决】通过调试rcs的core加运行其他几个apk去研究rcsjta的服务没运行的原因

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.169 seconds, using 23.31MB memory