小编Thi*_*ijs的帖子

无法使用GCC 5.1工具链编译C++ 11源代码

我正在尝试使用UCCntu上的GCC 5.1编译一个用C++ 11特性编写的库.但是,抱怨std::unique_ptr没有定义.

gcc (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0
g++ (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0
Run Code Online (Sandbox Code Playgroud)

CXX标志:

-std=c++11 -Wall -Wextra -Weffc++ -pedantic
Run Code Online (Sandbox Code Playgroud)

输出:

error: ‘unique_ptr’ in namespace ‘std’ does not name a template type
         std::unique_ptr< detail::RegexImpl > m_pimpl;
Run Code Online (Sandbox Code Playgroud)

但是,我能够在OSX上编译完全相同的代码.

Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Run Code Online (Sandbox Code Playgroud)

CXX标志:

-stdlib=libc++ -std=c++11 -Wall -Wextra -Weffc++ -pedantic
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c++ c++11 gcc5

8
推荐指数
1
解决办法
8033
查看次数

尝试解密指纹API密码时BadPaddingException

在我的应用程序中,当他们在初始设置[指纹注册]中扫描他们的手指时,我保存了用户访问代码的加密版本.当用户稍后尝试解锁应用程序时,我将尝试使用指纹API [指纹验证]解密此访问代码.

但是,Cipher.doFinal在解密时抛出以下异常:

javax.crypto.BadPaddingException
 at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:482)
 at javax.crypto.Cipher.doFinal(Cipher.java:1502)
 (...)

Caused by: android.security.KeyStoreException: Invalid argument
         at android.security.KeyStore.getKeyStoreException(KeyStore.java:940)
         at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
         at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:473)
        ... 12 more
Run Code Online (Sandbox Code Playgroud)

指纹扫描仪显示在DialogFragment.无论指纹是否正在注册或验证,始终从构造函数按顺序调用以下函数.

初始化密钥库:

private void initializeKeystore() {

    try {
        mKeyStore = KeyStore.getInstance(KEY_STORE_NAME); //AndroidKeyStore
    } catch (KeyStoreException e) {
        mKeyStore = null;
    }

    try {
        mKeyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, KEY_STORE_NAME);
    } catch (NoSuchAlgorithmException | NoSuchProviderException e) {
        mKeyGenerator = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

创建一个键:

private void createKey() {
    if (mKeyGenerator != null) {
        try {
            mKeyStore.load(null);

            KeyGenParameterSpec.Builder …
Run Code Online (Sandbox Code Playgroud)

java encryption android fingerprint

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

禁止在带有@BindView注释的字段上显示“ WeakerAccess”棉绒警告

自然,尽管Android Lint不知道,但是ButterKnife字段不能声明为私有。但是,不是我的所有字段都像这样:

@SuppressWarnings("WeakerAccess") @BindView(R.id.foo) Bar mFoo;
Run Code Online (Sandbox Code Playgroud)

我喜欢更干净的方法

@BindView(R.id.foo) Bar mFoo;
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想避免WeakerAccess对整个班级都取消警告,或者在我的检查配置文件中完全禁用它,因为这是有用的警告。

对于@BindView在Android Studio中使用注释的任何字段,是否有任何方法可以自动取消此警告?

java android android-lint android-studio butterknife

5
推荐指数
0
解决办法
1360
查看次数