git使用码云生成并部署SSH key

1.如何生成ssh公钥

你可以按如下命令来生成 sshkey:

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  

# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key

查看你的 public key,并把他添加到码云(Gitee.com) SSH key添加地址

cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

添加后,在终端(Terminal)中输入

ssh -T git@git.oschina.net

若返回

Welcome to Git@OSC, yourname!

则证明添加成功。


2.怎么添加用户 ssh key?

  1. 点击右上角的1502329104-5071-14154017-ogkd标志,进入个人中心,然后点击左侧的 ssh 公钥后在下图位置填写你的 ssh 公钥
  2. 点击确定,然后验证密码(即你的注册账号密码)就完成了ssh 公钥添加。

1502329104-1149-18115822-miTO

3.项目的 ssh key 和用户的 ssh key 两处地方有什么不同?

项目的 sshkey 只针对项目,且我们仅对项目提供了部署公钥,即项目下的公钥仅能拉取项目,这通常用于生产服务器拉取仓库的代码。 而用户的 key 则是针对用户的,用户添加了 key 就对用户名下的项目和用户参加了的项目具有权限,一般而言,用户的key具有推送和拉取的权限,而项目的 key 则只具有拉取权限。

android开发AngularJS & WebView 混合应用遇到的问题

混合应用,可以理解为html5 + app,我个人认为这种开发方式很适合小型企业,中大型的一般都有完整的开发团队,所以他们开发原生的根本不是问题,但是为了给企业节约维护成本,比如公司的一个官网、门户网站、网店等等,都可以使用混合应用去实现,app的WebView框架比较简单,一般开发出来只需要维护html5网站就可以了,更新基本不涉及到app的源代码,这样公司只需要2个程序员基本可以搞定。

创建简单的混合应用,首先需要一个WebView控件:

mWebView.loadUrl(uri);
mWebView.setWebViewClient(new WebViewClient());//WebViewClientServer类可以拦截webview的一些错误,可以在这里面拦截后进行显示;

可能你需要对应用进行简单的配置:
WebSettings webSettings =  mWebView.getSettings();
webSettings.setJavaScriptEnabled(true); //允许javascript代码
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//关闭缓存
webSettings.setAllowFileAccess(true);//允许读取文件
webSettings.setAllowContentAccess(true);
webSettings.setSupportZoom(false);//禁止缩放
webSettings.setDomStorageEnabled(true);//开启本地数据库储存
webSettings.setDatabaseEnabled(true);
webSettings.setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
webSettings.setAppCacheEnabled(true);

又或许,你需要:
mWebChromeClientServer = WebChromeClientServer.getInstance(mContext,mToolbar,mRefresh);
mWebView.setWebChromeClient(mWebChromeClientServer);
WebChromeClient我把它直接改写了一个类,因为太多方法需要在里面实现了。
最主要的可能是onShowFileChooser这个方法,就是input type=file的时候需要用到的,但是只支持4.4.2以上的系统,我测试过4.4.2以下无效,网上说<4.4.2系统的是调用
openFileChooser这个方法,但是别找了,也无效,最后不得不放弃,但是可以使用js调java的接口,然后通过app进行图片上传,传送完毕后用WebView.loadUrl(Javascript function);方法把服务器返回的数据传输给网页端。
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
 if (mFilePathCallback != null) {
 mFilePathCallback.onReceiveValue(null);
 }
 mFilePathCallback = filePathCallback;

 startOnResult(FILECHOOSER_RESULTCODE5);

 return true;
}

/**
 * 由于android < 5.0 以下均无法使用onShowFileChooser的方法,所以,这里直接使用js调用
 * @param uploadMsg
 */
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
 if (mUploadMessage != null) {
//mUploadMessage.onReceiveValue这个方法我实现了,把数据传递给网页端,这里的代码保持跟onShowFileChooser一样,为了让其他人方便理解
 mUploadMessage.onReceiveValue(null);
 }

 mUploadMessage = uploadMsg;
 startOnResult(FILECHOOSER_RESULTCODE4);
}

再智能一点,加入javacript对象调java对象:

mWebView.addJavascriptInterface(new WebJavaScroptInterface(mContext,mWebChromeClientServer,mWebView),"JsObject");
WebJavaScroptInterface是我写的一个java类,所有的方法,只要使用public的方法并且注释@JavascriptInterface,网页端是可以直接调用的,JsObject就是调取的对象名字。

如果上传文件到最后都用不了,可以试试在proguard-rules.pro文件中增加几行代码:
-keep class android.webkit.JavascriptInterface {*;}
-keepclassmembers class * extends android.webkit.WebChromeClient {
   public void openFileChooser(...);
}

-keepclassmembers class com.suisuilam.app.interfaces.WebJavaScroptInterface {
   public *;
}

 

Android 常用 mimeType 表

type有下面的形式。

Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;
Application:用于传输应用程序数据或者二进制数据;
Message:用于包装一个E-mail消息;
Image:用于传输静态图片数据;
Audio:用于传输音频或者音声数据;
Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。

com.android.support:appcompat-v7:23.4.0 and com.android.support:recyclerview-v7:21.1.2

These are the correct version that you can add in your build.gradle according to the API needs.

API 21:

compile 'com.android.support:appcompat-v7:21.0.1'
compile 'com.android.support:recyclerview-v7:21.0.1'

OR

compile 'com.android.support:appcompat-v7:21.0.2'
compile 'com.android.support:recyclerview-v7:21.0.2'

OR

compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'

API 22:

compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:recyclerview-v7:22.0.0'

API 23:

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:recyclerview-v7:23.2.0'
12318
 
Copyright © 2008-2021 lanxinbase.com Rights Reserved. | 粤ICP备14086738号-3 |