有一次,我认为git fetch origin --prune
删除了服务器上不再存在的本地分支.不知何故,这不是我目前的经历.
我运行了这个命令,并没有删除本地分支.目前尚未检出.我跑去git branch -vv
检查这个信息,我明白了
feature/MyGreatFeature f30efc7 [origin/feature/MyGreatFeature: gone]
Run Code Online (Sandbox Code Playgroud)
所以似乎知道它已经消失了.为什么不删除我的本地分支?
运行 git version 2.7.4 (Apple Git-66)
在Android,AudioEffect API中,所有内置效果(如均衡器)都会出现警告
"注意:不推荐使用会话0将均衡器附加到全局音频输出混音."
如果不推荐这样做,那么什么是替换API?我的目标是对全球产出组合产生影响......
我有一个情况,我有一个成员返回一个const&
,然后这个结果在一个lambda内转发,它具有相同的返回类型.
MSVC2017认为这种情况存在风险,并发出警告:returning address of local variable or temporary
.使用clang和其他编译器进行的实证测试表明,这是全面的.我不明白的是,为什么这与几个返回相同类型的方法调用不同.
例如,这非常有效:
class A {
public:
const std::string& name() const { return m_name; }
private:
std::string m_name;
};
class B {
public:
const std::string& name() const { return m_a.name(); }
private:
A m_a;
};
//...
B b;
std::cout << b.name();
Run Code Online (Sandbox Code Playgroud)
按预期工作,在编译或运行时没有警告/错误.
但是对于lambda,它不会:
class A {
public:
const std::string& name() const { return m_name; }
private:
std::string m_name;
};
//...
using Getter = std::function< const std::string&() >;
A a;
Getter …
Run Code Online (Sandbox Code Playgroud) 我成功地使用MediaCodec来解码音频,但是当我加载带有24位样本的文件时,我无法知道这已经发生了.由于应用程序假定为16位样本,因此失败.
当我打印MediaFormat时,我明白了
{mime=audio/raw, durationUs=239000000, bits-format=6, channel-count=2, channel-mask=0, sample-rate=96000}
Run Code Online (Sandbox Code Playgroud)
我假设"位格式"是一个提示,但是这个键没有在API中声明,并且在输出格式改变时实际上没有发出.我明白了
{mime=audio/raw, what=1869968451, channel-count=2, channel-mask=0, sample-rate=96000}
Run Code Online (Sandbox Code Playgroud)
(顺便说一下什么是"what"键?我注意到如果我将其解释为4charcode,它是" outC
"......只是一个标志,它是一个输出格式?)
那么这里最好的办法是什么?如果我把ByteBuffer
直线送到AudioTrack
它那当然会播放静电(假设PCM 16).
如果我知道价值,那么我可以自己转换!我从其他问题中了解到,你也无法决定输出格式.
我正在为Android开发一个既有Java又有Native组件的库.Native库依赖于GNU STL.我正在反对gnustl_static
,但遇到了一些通过链接解决的奇怪问题gnustl_shared
.(例如,文件系统和语言环境的问题).目前,我已经确定了gnustl_shared
.
这就是问题所在 - 我的库的消费者希望链接到Native .so以添加他们自己的代码.我从阅读中了解到所有的C运行时必须匹配.
gnustl_shared
似乎可能不起作用(就外交和易于集成而言)gnustl_shared
,生成的JAR文件包含libgnustl_shared.so
,这会导致构建APK的问题也依赖于此库. - 我想我可以不把它包含在JAR文件中?gnustl_static
,我会避免所有这些问题吗?std::string
和std::vector
),如果我的客户不使用GNU STL,我会遇到问题吗?谢谢
我的应用程序需要能够了解用户选择的基本音频路径。在 iOS 上,这是微不足道的,因为您只需注册一个回调就可以准确地知道音频的去向。
在 Android 上我很高兴看到这个MediaRouter
类,但令我沮丧的是,没有可预测的方法来确定路由类型。比如切换到蓝牙A2DP设备时,唯一的标识项就是RouteInfo.getName()
方法,但是这个返回的是A2DP设备的友好名称,所以无法进行比较。
我也尝试过使用以下广播:
AudioManager.ACTION_AUDIO_BECOMING_NOISY
Intent.ACTION_HEADSET_PLUG
BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED
BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED
BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED
Run Code Online (Sandbox Code Playgroud)
然而,这种方法容易出错。例如,如果您连接到蓝牙A2DP,那么您插入耳机,很容易分辨出路线是“耳机”,但是当拔下耳机时,您必须猜测什么路线仍然处于活动状态,通过记录来自所有蓝牙事件的连接状态。
当您的应用程序启动时,确定初始音频路径也存在困难。HEADSET_PLUG 很粘,所以很好,但没有其他东西......
有关如何解决此问题并准确检测此问题的任何建议?为什么在 Android 中这是一项如此艰巨的任务?
我正在尝试在 Xcode 中使用 Address Sanitizer,但我也使用 ccache 来加速我的构建。为此,我CC
在 Xcode 项目级别设置了标志以指向我存储在的脚本~/projects/support/cmake/ccache-clang
。脚本如下:
#!/bin/sh
if type -p /usr/local/bin/ccache >/dev/null 2>&1; then
export CCACHE_CPP2=true
exec /usr/local/bin/ccache "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "$@"
else
exec "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "$@"
fi
Run Code Online (Sandbox Code Playgroud)
这样就达到了预期的效果(如果开发系统上安装了ccache,则使用ccache)。这运作良好。
现在,当我们为给定方案打开地址消毒器时,问题就出现了。构建成功完成,但是当我们尝试运行时,我们终于看到了这个错误:
Error: Check dependencies
Could not determine version of clang to find its Address Sanitizer library: ~/projects/support/cmake/ccache-clang
Run Code Online (Sandbox Code Playgroud)
也许这是由于 Xcode 中的一些 hacky 实现导致的,它试图解析编译器的路径以确定版本?
想知道如何修改我的脚本以允许 Address Sanitizer 工作。CC
当前的解决方法是当我们需要进行消毒工作时删除覆盖的标志。
使用 Xcode 8.3.1
我正在使用以下命令打包 Mac App Store 的应用程序
xcrun altool --upload-app --file MyApp.??? --type osx <credentials>
Run Code Online (Sandbox Code Playgroud)
我在一些示例中看到他们用作MyApp.zip
文件,有些是MyApp.pkg
.
altool
似乎对简单的 zip 文件不满意MyApp.app
,不断抛出很多关于 Info.plist 的错误,这些错误不准确。
到目前为止,我取得的最成功的是使用productbuild
创建一个pkg
,但现在要求我使用我的“3rd Party Mac Developer Installer”证书对其进行签名。
是否需要创建签名的 PKG 才能使用 部署到 Mac App Store altool
,还是有其他替代方案?
我们开始使用 repo ( https://source.android.com/source/using-repo.html ) 来管理我们的多存储库项目,但是其中一些存储库正在使用 git 子模块。当我做 a 时repo sync
,有没有办法基本上传递--recursive
给它正在做的克隆?
使用 Visual Studio 2019 Community 对 Server Core Windows Server 2019 Datacenter Edition 上的 Windows 二进制文件进行签名。
signtool.exe
行为不正确(打开 PFX 文件时出现问题),因此建议我们切换到 PowerShell + Set-AuthenticodeSignature
。
使用以下命令:
$securepassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$pfx = Get-PfxData -FilePath $certificate -Password $securepassword
$cert = $pfx.EndEntityCertificates[0]
Set-AuthenticodeSignature -FilePath $target -Certificate $cert -HashAlgorithm "SHA256" -TimestampServer http://timestamp.digicert.com
Run Code Online (Sandbox Code Playgroud)
结果是具有预期 SHA256 签名的二进制文件,但是时间戳签名是 SHA1。也尝试过用作http://timestamp.digicert.com?alg=sha256
服务器,但是Set-AuthenticodeSignature
根本不添加时间戳签名。
由于该命令不允许您指定时间戳算法的哈希值,我们该如何实现这一点呢?
假设我想@synchronized(self)
在一个区块内做.我想这会导致保留周期,所以通常我们会像这样重写它:
-(void)myMethod
{
__weak TheClass * weakSelf = self;
dispatch_async(dispatch_get_main_queue(),
^{
TheClass * strongSelf = weakSelf;
if(strongSelf == nil)
{
return;
}
@synchronized(strongSelf)
{
//mutex code
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当你以@synchronized
这种方式使用指令时,它是否相当于@synchronized(self)
?
memory-management objective-c synchronized objective-c-blocks reference-cycle
android ×4
audio ×2
git ×2
xcode ×2
android-ndk ×1
authenticode ×1
c++ ×1
c++14 ×1
ccache ×1
code-signing ×1
const ×1
effects ×1
git-fetch ×1
global ×1
lambda ×1
linker ×1
mediacodec ×1
objective-c ×1
powershell ×1
reference ×1
repo ×1
session ×1
stl ×1
synchronized ×1
windows ×1
xcode8 ×1