小编mic*_*srb的帖子

从/system/framework/arm/boot.oat启动的Android本机崩溃

在我最近在Google Play上更新我的应用程序之后,我开始收到很多崩溃报告,所有这些都是来自Android 5的三星设备.较低的Android版本工作正常,其他Android 5厂商的设备也可以正常工作.

我没有任何可以重现问题的设备,所以我不能一分为二.我试图从崩溃报告和自我上一个工作版本(不幸的是很长)以来的更改列表中推断出可能出现的问题.

所有崩溃报告都是这样的(只是设备之间的地址略有不同):

Build fingerprint: 'samsung/kltektt/kltektt:5.0/LRX21T/G900KKTU1BOB1:user/release-keys'
Revision: '15'
ABI: 'arm'
pid: 26265, tid: 26265, name: mt.AnnelidsDemo >>> cz.gdmt.AnnelidsDemo <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x76f57e84
r0 00000800 r1 0000004b r2 b4aa9f9a r3 00000000
r4 1426e019 r5 76f57e80 r6 0000012c r7 76e6b040
r8 00000019 r9 76f57d54 sl 000007ff fp b4e1b330
ip b4aa9f70 sp bea94b50 lr b4bc72c1 pc b4c0d9b8 cpsr 00070030

backtrace:
#00 pc 001099b8 /system/lib/libart.so (art::TypeLookupTable::Lookup(char const*) const+59)
#01 pc 000c32bd /system/lib/libart.so (art::ClassLinker::LookupClassFromImage(char const*, art::gc::space::ImageSpace*)+64) …
Run Code Online (Sandbox Code Playgroud)

crash android samsung-mobile android-runtime android-5.0-lollipop

18
推荐指数
1
解决办法
6484
查看次数

查找屏幕是否有圆角

我正在寻找一种方法来确定Android设备是否具有带圆角的屏幕,理想情况下也是半径.

我的用例是一个由单个全屏OpenGL视图组成的游戏.它渲染一些靠近边缘和边界的UI元素,为游戏本身提供尽可能多的区域.但是当屏幕有圆角时,它们会被部分隐藏,所以它们需要以不同的方式定位.

android android-layout

14
推荐指数
2
解决办法
1946
查看次数

如果strong_count 为1 且weak_count 为0,包含`Rc` 的`Send` 结构是否安全?

我有一个结构不是Send因为它包含Rc. 可以说Arc开销太大,所以我想继续使用Rc. 我仍然希望偶尔Send在线程之间使用这个结构,但只有当我可以验证Rc具有 strong_count 1 和 weak_count 0 时。

这是我想到的(希望是安全的)抽象:

mod my_struct {
    use std::rc::Rc;

    #[derive(Debug)]
    pub struct MyStruct {
        reference_counted: Rc<String>,
        // more fields...
    }

    impl MyStruct {
        pub fn new() -> Self {
            MyStruct {
                reference_counted: Rc::new("test".to_string())
            }
        }

        pub fn pack_for_sending(self) -> Result<Sendable, Self> {
            if Rc::strong_count(&self.reference_counted) == 1 &&
               Rc::weak_count(&self.reference_counted) == 0
            {
                Ok(Sendable(self))
            } else {
                Err(self)
            }
        }

        // There are more …
Run Code Online (Sandbox Code Playgroud)

unsafe rust

7
推荐指数
1
解决办法
566
查看次数

我可以有条件地提供特征函数的默认实现吗?

我有以下特点:

trait MyTrait {
    type A;
    type B;

    fn foo(a: Self::A) -> Self::B;

    fn bar(&self);
}
Run Code Online (Sandbox Code Playgroud)

还有其他类似的功能bar必须始终由特征的用户实现。

我想给出foo一个默认实现,但仅当类型为A = B.

伪 Rust 代码:

impl??? MyTrait where Self::A = Self::B ??? {
    fn foo(a: Self::A) -> Self::B {
        a
    }
}
Run Code Online (Sandbox Code Playgroud)

这将是可能的:

struct S1 {}

impl MyTrait for S1 {
    type A = u32;
    type B = f32;

    // `A` is different from `B`, so I have to implement `foo`
    fn foo(a: u32) -> f32 …
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
1
解决办法
1522
查看次数

为什么不能多次调用变异函数?

这是基于我之前的问题

我的代码因借阅检查器错误而失败,因此我尽可能地减少了代码。结果如下:

struct MyStruct<'a> {
    s: &'a str,
}

impl<'a> MyStruct<'a> {
    fn foo(&'a mut self) {}
}

fn main() {
    let mut m = MyStruct { s: "aaa" };

    m.foo();
    m.foo();
}
Run Code Online (Sandbox Code Playgroud)

它失败了:

error[E0499]: cannot borrow `m` as mutable more than once at a time
  --> src/main-x.rs:13:5
   |
12 |     m.foo();
   |     - first mutable borrow occurs here
13 |     m.foo();
   |     ^
   |     |
   |     second mutable borrow occurs here
   |     first borrow later used here …
Run Code Online (Sandbox Code Playgroud)

struct lifetime rust borrow-checker

4
推荐指数
1
解决办法
76
查看次数