小编pqv*_*vst的帖子

如何在我的Linux主机上安装Raspberry Pi交叉编译器?

我正在尝试为我的Ubuntu机器上的Raspberry Pi进行交叉编译.

在我最初的尝试中,我使用的是arm-linux-gnueabi编译器,它可以在Ubuntu repo中找到.我得到了这个工作.我能够构建所有依赖项并在我的cmake项目中使用交叉编译器.

但是,我相信我应该使用hf版本,所以我切换到arm-linux-gnueabihf.然后我意识到这不适用于Raspberry Pi,因为它是armv6.

经过一些谷歌搜索后,我找到了GitHub预先构建的工具链.

我下载了工具链,但我真的不明白如何"安装"它.我将文件解压缩到我的主目录.目录结构如下所示:

/gcc-linearo-arm-linux-gnueabihf-raspbian
    /arm-linux-gnueabihf
        /bin
            (contains g++, gcc, etc)
        /lib
            (contains libstdc++ library)
    /bin
        (contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-...)
    /lib
        (gcc lib stuff)
Run Code Online (Sandbox Code Playgroud)

如果我将目录更改为INNER bin文件夹,我可以从终端编译测试程序,没有任何问题.

~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/
arm-linux-gnueabihf/bin$ g++ test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

然后我尝试在OUTER bin文件夹中编译测试程序,该文件夹包含工具的前缀版本.

 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$ 
 arm-linux-gnueabihf-g++ test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用编译器时(从内部bin目录之外),它无法找到工具链附带的libstdc ++共享库:

arm-linux-gnueabihf-gcc: error while loading shared libraries: 
libstdc++.so.6: cannot open shared object file: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

此外,我希望能够使用编译器而无需导航到bin目录.所以我尝试添加OUTER bin目录(因为我想要前缀版本)和两个lib目录到我的PATH:

export PATH=$PATH:~/tools/.../bin
export PATH=$PATH:~/tools/.../lib
export PATH=$PATH:~/tools/.../.../lib
Run Code Online (Sandbox Code Playgroud)

但是,这会导致相同的错误.我应该如何"安装"工具链,以便我可以随处使用工具链,就像我使用Ubuntu repo中的交叉编译器一样?

c++ linux arm cross-compiling raspberry-pi

107
推荐指数
4
解决办法
12万
查看次数

Android Room连接的返回类型

比方说,我想要做的INNER JOIN两个实体之间FooBar:

@Query("SELECT * FROM Foo INNER JOIN Bar ON Foo.bar = Bar.id")
List<FooAndBar> findAllFooAndBar();
Run Code Online (Sandbox Code Playgroud)

是否可以强制这样的返回类型?

public class FooAndBar {
    Foo foo;
    Bar bar;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我收到此错误:

error: Cannot figure out how to read this field from a cursor.
Run Code Online (Sandbox Code Playgroud)

我也尝试使表名称别名来匹配字段名称,但这也不起作用.

如果这不可能,我应该如何干净地构建包含两个实体的所有字段的兼容返回类型?

android android-room android-architecture-components

46
推荐指数
4
解决办法
3万
查看次数

具有Android Room的可重用通用基类DAO

有没有办法用Android Room创建可重用的通用基类DAO?

public interface BaseDao<T> {

  @Insert
  void insert(T object);

  @Update
  void update(T object);

  @Query("SELECT * FROM #{T} WHERE id = :id")
  void findAll(int id);

  @Delete
  void delete(T object);

}

public interface FooDao extends BaseDao<FooObject> { ... }

public interface BarDao extends BaseDao<BarEntity> { ... }
Run Code Online (Sandbox Code Playgroud)

我无法找到任何方法来实现这一点,而无需声明相同的接口成员并为每个子类编写查询.在处理大量类似的DAO时,这变得非常乏味......

android android-room android-architecture-components

22
推荐指数
4
解决办法
6933
查看次数

为什么我不能通过主机将一个docker容器与另一个容器卷曲

我真的不明白这里发生了什么.我只是想在已发布的端口上使用主机的公共IP从一个docker容器内部,另一个docker容器,通过主机执行http请求.

这是我的设置.我有我的开发机器.我有一个带有两个容器的docker主机.CONT_A在端口3000上侦听并发布Web服务.

DEV-MACHINE

HOST (Public IP = 111.222.333.444)
  CONT_A (Publish 3000)
  CONT_B
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在我的开发机器上(一台完全不同的机器)

我可以毫无问题地卷曲

curl http://111.222.333.444:3000 --> OK
Run Code Online (Sandbox Code Playgroud)

当我SSH进入HOST

我可以卷曲而没有任何问题

curl http://111.222.333.444:3000 --> OK
Run Code Online (Sandbox Code Playgroud)

当我在CONT_B内执行时

不可能,只是超时.Ping虽然很好......

docker exec -it CONT_B bash
$ curl http://111.222.333.444:3000 --> TIMEOUT
$ ping 111.222.333.444 --> OK
Run Code Online (Sandbox Code Playgroud)

为什么?

Ubuntu 16.04,Docker 1.12.3(默认网络设置)

docker

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

iOS应用程序定位8,具有意图扩展名,在模拟器中崩溃

  • 我有一个针对iOS 8的iOS应用程序.
  • 它包括一个Intent Extension(用于Siri Shortcuts).
  • 它在iOS 12(设备+模拟器)和10(模拟器)上运行完美.
  • 它会立即在iOS 8模拟器中崩溃并输出以下内容:

dyld: Library not loaded: /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
  Referenced from: /System/Library/Frameworks/Intents.framework/Intents
  Reason: no suitable image found.  Did find:
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices: mach-o, but not built for iOS simulator
Run Code Online (Sandbox Code Playgroud)

我意识到我将无法在旧版本的iOS上使用Intents扩展,但我仍然希望我的主应用程序能够正常工作.从我在网上看到的内容,即使我使用SiriKit,我仍然能够以8为目标.iOS <12时,任何与Intent相关的代码都已被防范.

我的项目配置如下:

  • 项目部署目标:8.0
  • 主要应用程序部署目标:8.0
  • 意图扩展部署目标:12.0

我已经测试了一些东西,试图找出导致问题的确切原因:

  • 删除主应用程序中所有与Intent相关的代码=>不起作用
  • 删除Intent Extension目标=>不起作用
  • 删除意图定义文件=>工作

这是Xcode/Simulator的问题还是我的应用程序中的错误?

ios

9
推荐指数
0
解决办法
539
查看次数

分阶段推出多个APK

我有以下情况.我们有两个在制作APK:

  1. 版本3.0.21(API级别7+)
  2. 版本2.14.2(API级别3+)

我想发布3.0 APK的分阶段发布更新.所以我:

  1. 以高级模式打开开发控制台
  2. 将我的新草稿APK上传到Production

现在我有三个APK:

  1. 3.0.22(API等级7+)
  2. 3.0.21(API等级7+)
  3. 2.14.2(API级别3+)

但是,此配置无效.它说"所有可能收到30021版本的设备都会收到版本30022"."发布分阶段发布按钮"已禁用.

要继续,我必须停用3.0.21版本,这导致:

  1. 3.0.22(API等级7+)
  2. 2.14.2(API级别3+)

这感觉不对.当我作为分阶段发布时发布3.0.21的当前用户会发生什么?如果它们不属于分阶段推出,它们会降级到2.14应用程序,还是3.0.21 APK还会被提供?

对我来说,听起来3.0.21将完全未发表.也许我只是误解了这些信息.见下文:

情况截图

android google-play

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

UIImpactFeedbackGenerator 不工作

我正在尝试使用新UIImpactFeedbackGenerator的触觉反馈,但它不起作用。

  • 在 iPhone 7 上测试
  • iOS 10.1.1
  • 系统触觉设置已启用

我在 Objective-C 中使用以下代码示例

UIImpactFeedbackGenerator *myGen = [[UIImpactFeedbackGenerator alloc] init];
[myGen initWithStyle:(UIImpactFeedbackStyleMedium)];
[myGen impactOccurred];
myGen = NULL;
Run Code Online (Sandbox Code Playgroud)

我在UILongPressGestureRecognizer委托中触发它。

知道可能是什么问题吗?

objective-c uikit ios

7
推荐指数
3
解决办法
5612
查看次数

加号(+)登录SVN文件名

当文件在名称中包含加号(+)时,我有一些问题将文件提交到我的VisualSVN服务器.这是iOS开发所需要的.当我尝试提交名称包含加号的文件时,我收到以下错误:

svn:E155011:文件'C:...\Foo + Bar.txt'已过期

svn:E160013:找不到'/svn/Test/!svn/txr/1-8/Foo+Bar.txt'路径

这非常令人沮丧.我在Windows和Mac OS X上尝试了几个客户端(TortoiseSVN,Apache SVN),同时拥有1.6和1.7客户端.我怀疑这可能是一个VisualSVN问题,除非在SVN中加号总是特殊的.如果是这样,是否有任何解决方法(例如转义加号或其他东西).我无法在Google上找到任何相关信息.

svn iis tortoisesvn visualsvn-server arr

6
推荐指数
1
解决办法
1326
查看次数

配置特定的gradle风味组合

我想知道是否可以为特定的风味组组合提供文件或配置设置.例如,我有2个风味组,每组有2种不同的风味:

风味组:版本

  • V2
  • V3

风味组:类型

  • 自由
  • 充分

订购"类型","版本"时,我可以构建我的应用程序的4种不同风格:

  • FreeV2
  • FreeV3
  • FullV2
  • FullV3

我的源代码树看起来像这样:

/src
    /free
        /res
    /full
        /res
    /v2
        /java
        /res
        AndroidManifest.xml (features and permissions for v2 flavors)
    /v3
        /java
        /res
        AndroidManifest.xml (features and permissions for v3 flavors)
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,对我的项目非常有效.但是,我希望我能为特定的风味组合组合提供文件.例如,我想为FullV3和FullV2提供不同的AndroidManifests.我不认为这是可能的,或者?例如:

/src
    /free
        /res
    /full
        /res
    /v2
        /java
        /res
        AndroidManifest.xml (features and permissions for v2 flavors)
    /v3
        /java
        /res
        AndroidManifest.xml (features and permissions for v3 flavors)
    /fullv3
        AndroidManifest.xml (features and permissions for full v3 only!)
    /fullv2
        AndroidManifest.xml (features and permissions …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio android-gradle-plugin

6
推荐指数
2
解决办法
5554
查看次数

Android O:默认展开的 IMPORTANCE_LOW 通知

在早期版本的 Android 中,可能会出现在状态栏中不显示图标的通知,但默认情况下会使用该priority设置进行扩展。

// Hide status bar icon AND show notification as expanded
builder.setPriority(NotificationCompat.PRIORITY_MIN);
Run Code Online (Sandbox Code Playgroud)

但是,现在当在运行 Android 26 的设备上定位 Android 25 (Oreo) 时,这似乎是不可能的。当我将重要性级别设置为IMPORTANCE_MIN我达到了在状态栏中不显示图标的预期效果。但是,通知默认为“折叠”。

// Hide status bar icon (but notification is collapsed)
NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_MIN);
Run Code Online (Sandbox Code Playgroud)

如果我将重要性级别设置为(或更高),IMPORTANCE_LOW则默认情况下会展开通知,但会在状态栏中显示一个图标。

// Expand notification (but shows status bar icon)
NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_LOW);
Run Code Online (Sandbox Code Playgroud)

有什么办法可以强制在使用时默认展开通知IMPORTANCE_MIN?也许我错过了一些设置。

PS:请不要建议使用setSmallIcon透明。这只是一个看起来很糟糕的旧丑陋黑客。


通过“折叠”和“扩展”,我的意思是:

折叠: 倒塌

扩展: 展开



源代码片段

// Hide status bar icon AND show notification as expanded
builder.setPriority(NotificationCompat.PRIORITY_MIN);
Run Code Online (Sandbox Code Playgroud)

android android-notifications android-8.0-oreo

6
推荐指数
0
解决办法
1519
查看次数