首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在开源应用程序中使用Fabric/Crashlytics的最佳实践?

在开源应用程序中使用Fabric/Crashlytics的最佳实践?
EN

Stack Overflow用户
提问于 2018-01-29 00:24:36
回答 2查看 821关注 0票数 2

我有一个即将开源的iOS应用程序。我不想把我的钥匙和秘密包括在运行脚本代码中,当应用程序是活的,每个人都可以查看,分叉,下载等明显的原因。

什么是最好的方式仍然使用Fabric/Crashlytics,并保持这些密钥的安全,以便只有那些可以部署的应用程序有权访问这些凭据?

EN

回答 2

Stack Overflow用户

发布于 2018-07-11 11:20:40

杰克的回答对我不起作用。显然,$(PROJECT_DIR)/Info.plist返回了错误的路径。

但这里有一个同时使用Fabric和Google sign in的项目的工作示例。(从2018年7月开始,这在Xcode 9中工作得很好)

代码语言:javascript
复制
FabricApiKey=$(sed -n '2p' < app_config.txt)
FabricSecretKey=$(sed -n '4p' < app_config.txt)
GoogleReversedClientId=$(sed -n '6p' < app_config.txt)

INFO_PLIST="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
/usr/libexec/PlistBuddy -c "Set :Fabric:APIKey $FabricApiKey" "$INFO_PLIST"
/usr/libexec/PlistBuddy -c "Set :CFBundleURLTypes:0:CFBundleURLSchemes:0 $GoogleReversedClientId" "$INFO_PLIST"

"${PODS_ROOT}/Fabric/run" $FabricApiKey $FabricSecretKey

下面是必须出现在项目根目录下的app_config.txt文件的结构:

代码语言:javascript
复制
FabricApiKey:
your_key_here
FabricSecretKey:
your_secret_here
GoogleReversedClientId:
google_reversed_client_id_here
票数 0
EN

Stack Overflow用户

发布于 2018-08-27 03:03:44

@Jake发布了一篇很棒的帖子-谢谢!这是我的变体,它检查secrets文件是否存在,并使用Xcode9.4提供的一些环境变量。

代码语言:javascript
复制
#1/usr/bin/env sh
secretsFile=$PROJECT_DIR/scripts/fabric.secrets
if [ ! -f $secretsFile ]; then
    echo "warning: '$secretsFile' not found"
    exit 0
fi

apiKey=$(sed -n '1p' < $secretsFile)
secretKey=$(sed -n '2p' < $secretsFile)

/usr/libexec/PlistBuddy -c "Set :Fabric:APIKey $apiKey" $PRODUCT_SETTINGS_PATH

$PROJECT_DIR/Fabric.framework/run $apiKey $secretKey

注意: Xcode将检测到echo "warning: "部件,并将其作为黄色警告放入构建日志中。

最后,这里是一个预提交git钩子,用于检查意外添加到Info.plist中的40个字符的十六进制字符串

代码语言:javascript
复制
#!/usr/bin/env sh

files=$(ls */Info.plist)

git diff --cached --name-status | while read modificationtype thisfile; do
        if [ "$modificationtype" == 'D' ]; then continue; fi
        for file in $files
        do
            if [ ! "$thisfile" == "$file" ]; then continue; fi
            if egrep '[0-9a-fA-F]{40}' $file ; then
                echo "ERROR: API key in file: ${file}"
                exit 1
            fi  
        done
done || exit $?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48488531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档