我使用以下命令为Android的Facebook应用控制台生成密钥哈希
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
根据帮助页面和开发人员控制台,密钥散列应该是28个字符长,但是keytool生成32个字符的长密钥.
Java版本:jdk1.8.0_31操作系统:Windows 7
为android生成.
编辑
根据@ Shreyash-mashru的建议,我使用以下代码来获取keyhash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"my.package.name",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
}
Run Code Online (Sandbox Code Playgroud)
但是,如果有人仍然可以帮助我理解为什么命令行工具生成32个char长键哈希而不是28 ...
我在我的应用程序中使用viewpager动态加载视图并水平滚动它们.我还使用了pageTransform来缩放下一个和上一个视图.从中获取了代码
http://developer.android.com/training/animation/screen-slide.html
每个下一个视图都取决于先前视图的用户响应.在每个OnPageSelected上,我正在加载下一个视图
mPagerAdapter.addView(ViewToBeAdded, AddAtPostion); //Empty previous view holder
mViewPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)
问题第1步:一旦我做了setAdapter,整个viewpager会滚动到第一个位置,(我不知道为什么会这样).
问题第2步:为了规避问题1,我打电话给
mViewPager.setCurrentItem(AddAtPostion, false);.
Run Code Online (Sandbox Code Playgroud)
//如果我使用第二个参数调用为true,则viewPager会从第一个项目滚动到当前项目.
但是,当我调用它时,pageTransform设置的转换将被删除(因为仅在滚动时应用get),并且显示前一个视图持有者而不进行任何转换.
问题第3步:为了规避问题2,我添加了runnable来调用setCurrentItem后的假拖动(从尽快将PageTransformer应用到PagerView)
private Handler mhandler = new Handler();
private Runnable mrunnable = new Runnable() {
public void run() {
mViewPager.beginFakeDrag();
mViewPager.fakeDragBy(0f);
mViewPager.endFakeDrag();
}
};
//Called as mhandler.postDelayed(mrunnable, 10); after setCurrentItem.
Run Code Online (Sandbox Code Playgroud)
这确实解决了我应用转换的问题.但是,在转换应用之前,会看到一个空视图支架的闪光.我没办法.我是Android的初学者,不知道如何解决任何问题.如果问题1本身得到解决,我就不必找到解决方法.
下面发布的是添加视图并使用空布局扩充上一个视图的代码
public int addView(View v, int position) {
prevPos = currPos;
currPos = position;
LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(prevPos != -1)
{
views.set(prevPos, ((View) inflater.inflate(R.layout.empty_template, null, false))); …Run Code Online (Sandbox Code Playgroud) 我在Android中使用绿色机器人事件总线
我使用EventBus.getDefault()调用所有事件.post和onStop我调用EventBus.getDefault().unregister(this); 在我的活动中.然而,一旦我按下并重新打开应用程序,在单个事件帖子上,会收到多个onEvent().还有其他人遇到过这个问题吗?
@Override
protected void onStart() {
super.onStart();
getBus().register(this);
}
@Override
protected void onPause() {
getBus().unregister(this);
super.onPause();
}
@Override
protected void onStop() {
getBus().unregister(this);
super.onStop();
}
protected EventBus getBus() {
return EventBus.getDefault();
}
Run Code Online (Sandbox Code Playgroud) 这是我的 .gitlab-ci.yml 脚本。
before_script:
- uname -a
- apt-get install default-jre default-jdk openjdk-7-jre openjdk-7-jdk
- java -version
- export MODE="service"
- export PID_FOLDER="/var/run/gitlab-runner-test"
dev:
script:
- chmod +x gradlew
- ./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)
我试图在 gitlab.com 页面上运行脚本来编译一个 android 项目。我检查了对我的脚本进行了一些更改后发现 ci linux Linux runner-8a2f473d-project-881036-concurrent-0 4.5.0-coreos-r1 #2 SMP Thu May 5 07:27:26 UTC 2016 上没有安装 java x86_64 GNU/Linux。
我尝试安装 java,就像为 ruby 显示的示例一样,但它不起作用,并给出了无法定位包错误。
我不确定应该是什么包,因为它看起来像一个 ubuntu 系统,但是在我的 ubuntu 上运行的命令在这里不起作用。
这不是本地安装。