小编Dur*_*n.H的帖子

Android配置文件

什么是最好的方法以及如何为应用程序设置配置文件?

我希望应用程序能够查看SD卡上的文本文件并选择它需要的某些信息?

configuration android configuration-files

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

如何将基于swift的cocoapods移植到Xamarin

我正在尝试将cocoapods移植到xamarin.

基于Objective C的cocoapods可以通过将其转换为静态库(.a)并随后将其转换为xamarin studio或visual studio中的绑定库来移植

但基于Swift的cocoapods无法转换为静态库,因此无法移植到xamarin.

但swift可以转换成动态框架,但我找不到任何方法将其移植到xamarin

有没有其他方法将基于swift的cocoapods或ios项目移植到xamarin?

c# xamarin.ios cocoapods xamarin swift

22
推荐指数
1
解决办法
855
查看次数

如何在Windows上使用Xamarin Studio开发iOS应用程序?

我正在评估一个不包括VS集成的Xamarin Studio独立许可证 - 如果我错了,请纠正我.但我想知道是否可以使用Xamarin Studio进行iOS开发?我对Xamarin Evolve宣布的iOS设计器的新功能非常感兴趣,理想情况下它也适用于Windows.

如果答案是肯定的,怎么样?

c# xamarin.ios ios xamarin xamarin-studio

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

iPhone:HTTPS客户端证书身份验证

我正在与客户端证书身份验证进行斗争.当服务器需要凭证(在这种情况下是证书)时,从NSURLConnection委托调用此方法:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Run Code Online (Sandbox Code Playgroud)

我想从文件加载证书,填写凭证并运行此方法:

[[challenge sender] useCredential:[self credential] forAuthenticationChallenge:challenge];
Run Code Online (Sandbox Code Playgroud)

但我不知道如何初始化(或填充)SecIdentityRef参数.这是我创建凭据的代码:

NSString *certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"cer"];
NSData *certData = [[NSData alloc] initWithContentsOfFile:certPath];

SecIdentityRef myIdentity;  // ???

SecCertificateRef myCert = SecCertificateCreateWithData(NULL, (CFDataRef)certData);
[certData release];
SecCertificateRef certArray[1] = { myCert };
CFArrayRef myCerts = CFArrayCreate(NULL, (void *)certArray, 1, NULL);
CFRelease(myCert);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity
                                  certificates:(NSArray *)myCerts
                                   persistence:NSURLCredentialPersistencePermanent];
CFRelease(myCerts);
Run Code Online (Sandbox Code Playgroud)

有人知道怎么解决吗?谢谢.


我终于找到了解决方案,但是这里出现了一个新问题:

我的客户端不会将证书发送到服务器.服务器请求证书后,应用程序运行此方法:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Run Code Online (Sandbox Code Playgroud)

并填写凭证(如上所述),但连接以错误结束:NSURLErrorDomain -1206.根据服务器日志,应用程序不会发送客户端证书.

有没有人有这种行为的经验?我是否需要以某种方式验证应用程序中的证书?或其他任何使其有效的方法?如果它有帮助,我可以提供我当前的代码.谢谢你的任何想法......

iphone authentication ssl certificate

20
推荐指数
1
解决办法
1万
查看次数

如何在卸载应用程序时删除App安装的可信CA证书

我有一个应用程序,提供安装CA证书的选项,它存储在可信凭据的用户选项卡中,它按预期工作.

仅供参考 (这是我安装证书的方式):

Intent installIntent = KeyChain.createInstallIntent();
javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);
installIntent.putExtra(KeyChain.EXTRA_CERTIFICATE, x509.getEncoded());
installIntent.putExtra(KeyChain.EXTRA_NAME,caRootCertName);
startActivity(installIntent);
Run Code Online (Sandbox Code Playgroud)

如果卸载了应用程序,则证书仍保留在受信任的凭据中.

我希望在卸载应用程序时卸载证书.

我想过使用deleteEntry方法删除证书KeyStore.

仅供参考 (我没有测试过.希望它能够正常工作......我测试后会更新)

javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);

KeyStore ks = KeyStore.getInstance("AndroidCAStore")
if (ks != null) 
                        {
                            ks.load(null, null);
                            Enumeration<String> aliases = ks.aliases();
                            while (aliases.hasMoreElements()) 
                            {
                                String alias = (String) aliases.nextElement();
                                java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);
                                String name = x509.getIssuerDN().getName();                             
                                if (cert.getIssuerDN().getName().contains(name)) 
                                {
                                  ks. deleteEntry(alias)

                                }
                            }
                        }  
Run Code Online (Sandbox Code Playgroud)

即使你考虑上面的代码工作AFAIK我无法注册广播接收器卸载我自己的应用程序.

在卸载我的应用程序时,如何删除我的应用程序安装的证书?

任何帮助表示赞赏!

java android uninstall keystore ssl-certificate

20
推荐指数
1
解决办法
1353
查看次数

Eclipse Juno未识别用户定义的字典已被指定

我是使用SUSE 11 Linux的Eclipse(Juno)的新用户,我正在寻找指定用户定义的字典,以便我可以在我的Qt项目中停止显示拼写错误的所有"Trolltech"和"Qt"引用,没有关闭所有拼写检查.

我在网上找到了以下说明,我选择了Window | 偏好| 编辑| 文字编辑| 拼写并获取包含指定用户定义字典的字段的面板.我收集所有这些需求,是一个文本文件.我为此尝试了两种变体:

作为根,

  1. 创建了一个/opt/eclipse/dictionary/dictionary.txt文件,文件权限设置为777但是更高级别的目录755s
  2. 创建了一个/dictionary/dictionary.txt文件,目录和文件权限都设置为777.

我在这一点上,在每种情况下,

  1. 在"用户定义的字典"字段中指定其中一个文件的完整(绝对)路径,
  2. 单击" 应用"| 单击确定以设置路径,或者单击确定,退出对话框
  3. 看到Eclipse编辑器没有变化,它仍然将这些术语显示为拼写错误
  4. 在项目级别,尝试从右键弹出菜单中刷新项目
  5. 尝试使用Index |在项目级别重新编制索引 从右键弹出菜单重建
  6. 尝试使用Index |在项目级别刷新文件 从右键弹出菜单中刷新所有文件(没有理由相信步骤5或6中的任何一个都有帮助,但我基本上尝试了所有可用的东西)
  7. 关闭并重新开放该项目
  8. 关闭并重新打开IDE.

当我重新启动IDE并返回Window |时 首选项等,面板显示我指定AS指定的字典文本文件,但似乎没有IDE的功能识别.

令我高兴的是,当我将鼠标悬停在任何"错误"之上时,我想停止查看,我没有得到将错误词添加到字典中的快速修复选项,因为上周我勾选了选项说"如果不存在字典,请不要提示添加到字典".似乎没有任何字典被识别为现有字典.

谁能告诉我我错过了什么,在这里?

dictionary suse eclipse-juno

16
推荐指数
1
解决办法
1008
查看次数

如何以编程方式删除用户安装的证书?

我以编程方式安装了证书.

我可以通过去手动卸载它 Settings -> Security -> Trusted Credentials -> User -> Choose the certificate and click the remove button

我想以编程方式删除证书.

这是我尝试过的代码,但它没有用.

javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);

KeyStore ks = KeyStore.getInstance("AndroidCAStore")
if (ks != null) 
{
    ks.load(null, null);
    Enumeration<String> aliases = ks.aliases();
    while (aliases.hasMoreElements()) 
    {
        String alias = (String) aliases.nextElement();
        java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);
        String name = x509.getIssuerDN().getName();                             
        if (cert.getIssuerDN().getName().contains(name)) 
        {
            ks. deleteEntry(alias)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

参考我为什么选择deleteEntry

这是我得到的错误日志

05-19 18:27:40.789: W/System.err(14588): java.lang.UnsupportedOperationException
05-19 18:27:40.792: W/System.err(14588):    at com.android.org.conscrypt.TrustedCertificateKeyStoreSpi.engineDeleteEntry(TrustedCertificateKeyStoreSpi.java:82)
05-19 18:27:40.792: W/System.err(14588): …
Run Code Online (Sandbox Code Playgroud)

java android ssl-certificate

15
推荐指数
2
解决办法
3266
查看次数

除IMEI,Android_ID,WLAN Mac和蓝牙地址外,设备的完美unique_id

目的:

我正在寻找一种方法来找到Android设备的unique_id.

背景:

我将在登录请求有效负载中使用Id,因为我的应用程序是基于许可证的服务应用程序,Id在正常情况下不应更改.

现有方法:

在iOS中,有一些针对iOS的唯一ID解决方案,例如CFUUID或者identifierForVendor,以及Keychain,广告标识符等,可以完成预期的工作.

但在Android中,我所知道的所有选项似乎都有漏洞.

IMEI:

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String m_deviceId = TelephonyMgr.getDeviceId();
Run Code Online (Sandbox Code Playgroud)

缺点

这是依赖SIM卡的

  • 如果没有SIM卡那么我们就注定了

  • 如果有双卡,那么我们就会陷入困境

Android_ID:

  String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Run Code Online (Sandbox Code Playgroud)

缺点

  • 如果OS版本升级,则可能会更改
  • 如果设备已植根,则会更改
  • 不能保证device_id是唯一的,有些报告称某些制造商有重复的device_id

WLAN MAC地址

WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();
Run Code Online (Sandbox Code Playgroud)

缺点

  • 如果没有wifi硬件那么我们就注定了
  • 在一些新设备中,如果关闭wifi,那么我们注定要失败.

蓝牙地址:

   BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
   String m_bluetoothAdd = m_BluetoothAdapter.getAddress();
Run Code Online (Sandbox Code Playgroud)

缺点:

  • 如果没有蓝牙硬件我们就注定了.
  • 在将来的某些新设备中,如果它关闭,我们可能无法读取它.

可能的解决方案:

我认为有两种方法可以解决这个问题

  • 我们通过哈希时间戳生成一个随机ID,我用上面提到的唯一ID并存储它,以便下次登录时我们将检查key的存储值是否为null,如果是,那么我们将生成并存储它我们' ll使用密钥的值.

    如果有相当于iOS的钥匙串的东西,那么我们对这种方法很好.

  • 找到类似于iOS的advertisingIdentifier的全局标识符,该标识符对于设备中的所有应用程序都是相同的.

任何帮助表示赞赏!

android mac-address bluetooth uniqueidentifier wif

14
推荐指数
1
解决办法
6234
查看次数

use_frameworks!仅限一些豆荚或快餐豆荚

我的项目中有两个Objective CSwiftPod.

pod 'WBWebViewConsole', '~> 1.0.1' 
use_frameworks! 
pod 'XWebView', '~>0.9.5’ 
pod 'Starscream', '~> 1.1.3'
Run Code Online (Sandbox Code Playgroud)

由于swift POD(XWebView,Starscream)只能作为框架添加,我必须使用 use_frameworks!

但这使得所有POD都成为框架,包括Objective-C POD(WBWebViewConsole).

但它会导致Objective-C POD出现问题,但我不打算将Objective-C POD作为框架.

那么无论如何我可以忽略几个POD被转换为框架?

谢谢.

更新:

如何重现这个问题?

问题出在POD WBWebViewConsole上

在任何具有互联网连接的iOS 8+设备中运行附加项目,因为它从谷歌驱动器加载html文档.

在html doc中...单击General/Info/Warning/Debug/Error Log

在此输入图像描述

只要你点击上面的任何按钮,你就会在html页面上出现一些文字....

该库是关于捕获在html页面中生成的日志...

每当你点击按钮而不是在html页面中显示一些文本时我会在背景中写一些日志.

在此输入图像描述

现在点击按钮获取日志 ...并在Xcode IDE中查看日志...您将看到在html中生成的所有控制台日志

在此输入图像描述

获取日志 - >是一个超级强加于webview的本机按钮.该库让我们从wkwebview读取控制台日志.

现在在POD你取消注释以下几行

use_frameworks!
pod 'PLCrashReporter'
pod 'XWebView', '~> 0.9.5’
Run Code Online (Sandbox Code Playgroud)

并做pod安装

然后将以下代码粘贴到ViewController之上

import WBWebViewConsole
Run Code Online (Sandbox Code Playgroud)

这是一个项目,所有这些都没有注释重现问题所需的所有更改

现在你在设备上运行项目并单击html页面中的一些按钮并单击获取日志,你看不到在html页面中生成的注释

具体来说,WBWKWebView中实现的委托方法不会被解雇.

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void …
Run Code Online (Sandbox Code Playgroud)

objective-c ios cocoapods swift wbwebviewconsole

13
推荐指数
2
解决办法
3750
查看次数

如何通过框架API或任何其他有效方法找到VPN连接的状态?

至今:

我找到了以下解决方案

  1. 使用Broadcastreceiver

    广播接收器已从ICS弃用

  2. 使用Ping或Traceroute

    这肯定会花费很多时间而且效率不高

  3. 轮询DNS服务器更改

    这肯定会花费很多时间而且效率不高

  4. 使用ip-address

    即使根据网络连接不会花费太多时间,它也可能会有所不同

我的结论:

到目前为止,我发现的所有解决方案要么效率不高,要么不那么可靠.

我的问题:

如果VPN在Android设备中连接,那么android OS必须知道它.

是否有任何公共的android框架API来读取它,因为在本地查找是最有效和最可靠的解决方案?

有没有其他有效和可靠的方法来实现它(比如将C或C plus plus库与NDK集成)?

注意:

我也找不到OpenVPN for Android的任何自定义广播发件人/ AIDL

vpn android android-ndk aidl

11
推荐指数
1
解决办法
4864
查看次数