添加以下代码后,我一直遇到崩溃:

class AudioPolicyService :
    public BinderService<AudioPolicyService>,
    public BnAudioPolicyService,
    public IBinder::DeathRecipient
{
    friend class BinderService<AudioPolicyService>;

//[....]
    class TestingClz : public virtual RefBase {
        public:
            TestingClz (String8 name, const wp<AudioPolicyService>& service){}
            virtual TestingClz() {}
    };

    sp<TestingClz> mTestingClz;
} // End of class AudioPolicyService

//[....]

void AudioPolicyService::onFirstRef()
{
...
TestingClz = new TestingClz(String8("test"), this);
}

我遇到以下崩溃:



将地址映射到行后,它指向我所做更改中的行。SEGV_ACCERR表示对映射对象的无效权限。我想知道是否是由android mprotect引起的?由于这似乎不是正常的崩溃。
有没有人经历过同样的失败?非常感谢!

更新:
好的,如果我进行整个构建并刷新系统和启动镜像,似乎崩溃不会发生。
因此,要更改android native服务,我们总是需要完整的版本吗?

天龙

最佳答案

结果:
如果我进行整个构建并刷新系统和启动镜像,似乎崩溃不会发生。
但是,我仍然想知道是否存在某种保护机制来在运行时记录和验证类的大小。即使我们替换了.so lib,似乎二进制地址映射仍然没有更新。

感谢您提供任何进一步的信息!

09-06 23:07