小编Chr*_*Orr的帖子

必须使用与先前版本相同的证书对apk进行签名

不久前我将我的应用程序上传到Google Play(当时称为Android Market).

今天我更新了应用程序,但是我删除了以前的密钥库并创建了一个新密钥库.
上传时,它表示APK必须使用与先前版本相同的证书进行签名:

上传失败

您上传了使用其他证书签名的APK到您以前的APK.您必须使用相同的证书.

您现有的APK使用带有指纹的证书进行签名:
[SHA1:89:2F:11:FE:CE:D6:CC:DF:65:E7:76:3E:DD:A7:96: 4F:84:DD:BA:33]
以及用于签署您上传的APK的证书有指纹:
[SHA1:20:26:F4:C1:DF:0F:2B:D9:46: 03:FF:AB:07:B1:28:7B:9C:75:44:CC]

但是我没有这个证书,也不想删除并重新发布应用程序,因为它有活跃的用户.

如何使用新证书签署我的应用程序?

android apk google-play

188
推荐指数
8
解决办法
21万
查看次数

使用AppBarLayout重叠滚动视图

我想从Material设计滚动技术中实现"具有重叠内容的灵活空间"模式,例如在此视频中: 具有重叠内容GIF的灵活空间

我的XML布局现在看起来像:

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <android.support.design.widget.AppBarLayout
      android:layout_width="match_parent"
      android:layout_height="192dp"
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

      <android.support.v7.widget.Toolbar
          android:layout_height="?attr/actionBarSize"
          android:layout_width="match_parent"
          app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
  </android.support.design.widget.AppBarLayout>

  <android.support.v4.widget.NestedScrollView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
      <....>
    </LinearLayout>
  </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用设计库实现这一目标?或者我是否必须构建自定义CoordinatorLayout.Behavior来执行此操作?

android android-design-library android-collapsingtoolbarlayout

90
推荐指数
2
解决办法
4万
查看次数

在OnClickListener里面我无法访问很多东西 - 如何处理?

在OnClickListener中,我无法访问范围"外部"的大多数变量,如下所示:

findViewById(R.id.Button01).setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent mainApps = new Intent(Intent.ACTION_MAIN);
                mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
                List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
                /*
                Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity");
                startActivity(intent);*/
            }

        });
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我需要获取PacketManager,我无法得到它,因为我没有在OnClickListener中提供Context.

我可以在外面做一个静态引用,并在里面使用它,但这是正确的吗?似乎很奇怪必须一直这样做?

java android

76
推荐指数
2
解决办法
5万
查看次数

使用片段后端堆栈处理ActionBar标题?

我有一个Activity加载到的地方ListFragment,在点击时,它向下钻取一个级别,显示一个新类型ListFragment,替换原来的(使用showFragment下面的方法).这是放在后面的堆栈上.

开始时,活动会在操作栏中显示默认标题(即根据应用程序自动设置android:label).

显示层次结构中下一级别的列表时,单击的项目名称应成为操作栏的标题.

但是,按下时Back,我希望恢复原始默认标题.这不是什么FragmentTransaction知道的,所以标题不会恢复.

我模糊地读过FragmentBreadCrumbs,但这似乎需要使用自定义视图.我正在使用ActionBarSherlock,并且更愿意没有我自己的自定义标题视图.

这样做的最佳方式是什么?是否有可能没有大量的样板代码并且必须跟踪沿途显示的标题?


protected void showFragment(Fragment f) {
  FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
  ft.replace(R.id.fragment_container, f);
  ft.addToBackStack(null);
  ft.commit();
}
Run Code Online (Sandbox Code Playgroud)

android android-fragments actionbarsherlock android-actionbar

73
推荐指数
6
解决办法
5万
查看次数

Eclipse/Java - R.string中的值.*return int?

我以为我会很优雅并使用string.xml文件为异常消息之类的东西定义一些常量字符串.在strings.xml中,我点击Add,选择"String"选项(不是'String Array'),然后给它一个名称和值.我很惊讶地发现这段代码不起作用:

throw new Exception(R.string.MyExceptionMessage);
Run Code Online (Sandbox Code Playgroud)

这失败了,因为R.string.MyExceptionMessage实际上是int类型.我可以通过查看R.java来验证该类型.我错过了什么?

java string resources android

63
推荐指数
3
解决办法
4万
查看次数

为什么要使用十六进制常量?

有时我看到以十六进制定义的整数常量,而不是十进制数.这是我从GL10课程中获得的一小部分:

public static final int GL_STACK_UNDERFLOW = 0x0504;
public static final int GL_OUT_OF_MEMORY = 0x0505;
public static final int GL_EXP = 0x0800;
public static final int GL_EXP2 = 0x0801;
public static final int GL_FOG_DENSITY = 0x0B62;
public static final int GL_FOG_START = 0x0B63;
public static final int GL_FOG_END = 0x0B64;
public static final int GL_FOG_MODE = 0x0B65;
Run Code Online (Sandbox Code Playgroud)

这显然更简单的定义2914来代替0x0B62,所以有可能有些性能提升?我认为不这么认为,从那时起编译器应该改变它.

java opengl hex decimal

55
推荐指数
6
解决办法
3万
查看次数

如何使用Jenkins Pipeline属性步骤?

我正在研究Jenkins Pipeline:Multibranch的功能.据说最近推出的properties步骤在那里可能有用,但我无法理解它是如何工作的以及它的目的是什么.

它的提示信息似乎不是很清楚:

更新运行此步骤的作业的属性.主要用于多分支工作流,因此Jenkinsfile本身可以编码静态作业配置.

所以我用这个脚本创建了一个新的Pipeline(直接粘贴到Jenkins而不是SCM中):

properties [[$class: 'ParametersDefinitionProperty',
   parameterDefinitions: [[$class: 'StringParameterDefinition',
       defaultValue: '', description: '', name: 'PARAM1']]
]]
Run Code Online (Sandbox Code Playgroud)

我运行它并没有发生任何事情,工作没有收到一个新的参数,即使它确实我没有得到为什么我可能需要这个.有人可以解释一下吗?

UPDATE1:我尝试将带有属性步骤的虚拟管道放入我的git仓库,然后配置了一个多分支作业.

println 1
properties [[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'StringParameterDefinition', defaultValue: 'str1', description: '', name: 'PARAM1']]], [$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false]]
println 2
Run Code Online (Sandbox Code Playgroud)

它找到了我的分支,创建了一个工作,但构建失败了:

groovy.lang.MissingPropertyException: No such property: properties for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:62)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:185)
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17)
at WorkflowScript.run(WorkflowScript:2)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:62)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-workflow jenkins-pipeline

47
推荐指数
2
解决办法
5万
查看次数

SQLite可以处理9000万条记录吗?

或者我应该使用不同的锤子来解决这个问题.

我有一个非常简单的用例来存储数据,实际上是一个稀疏矩阵,我试图将其存储在SQLite数据库中.我创建了一个表:

create TABLE data ( id1 INTEGER KEY, timet INTEGER KEY, value REAL )
Run Code Online (Sandbox Code Playgroud)

我插入了大量数据(每10分钟800个元素,每天45次),一年中大部分时间.(id1,timet)的元组将始终是唯一的.

时间值是自纪元以来的秒数,并且将始终增加.出于所有实际目的,id1是随机整数.虽然可能只有20000个独特的ID.

然后我想访问id1 == someid的所有值或访问timet == sometime的所有元素.在我通过Linux上的C接口使用最新SQLite的测试中,查找其中一个(或此查找的任何变体)大约需要30秒,这对我的用例来说还不够快.

我尝试为数据库定义一个索引,但这减慢了插入到完全不可行的速度(虽然我可能做错了...)

上表导致对任何数据的访问速度非常慢.我的问题是:

  • SQLite完全是错误的工具吗?
  • 我可以定义索引以显着加快速度吗?
  • 我应该使用像HDF5而不是SQL这样的东西吗?

请原谅我对SQL的基本理解!

谢谢

我包含一个代码示例,显示使用索引时插入速度如何减慢到爬行速度.使用'create index'语句,代码需要19分钟才能完成.没有它,它会在18秒内运行.


#include <iostream>
#include <sqlite3.h>

void checkdbres( int res, int expected, const std::string msg ) 
{
  if (res != expected) { std::cerr << msg << std::endl; exit(1); } 
}

int main(int argc, char **argv)
{
  const size_t nRecords = 800*45*30;

  sqlite3      *dbhandle = NULL;
  sqlite3_stmt *pStmt = NULL;
  char statement[512]; …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

41
推荐指数
5
解决办法
4万
查看次数

在不修改请求状态的情况下读取http.Request的主体?

我有一个实现http.Handler接口的类型,在其ServeHTTP方法中,检查传入的HTTP请求,采取一些操作,然后将请求转发到反向代理处理程序(httputil.NewSingleHostReverseProxy).

只要我只检查基本请求属性(例如URL或标题),这样就可以正常工作.

当我想检查传入的POST请求的主体时,例如通过调用req.ParseForm()然后使用该req.Form属性,一旦请求被传递到反向代理,我就会遇到错误:

http: proxy error: http: Request.ContentLength=687 with Body length 0

我想这会发生这种情况,因为查看HTTP请求的主体会导致req.Body.Reader流被耗尽,这意味着代理处理程序无法再次读取它.

我一直在玩类似的东西,但我io.Copy()bufio.Peek()没有真正得到任何东西.

有没有办法窥视HTTP请求体(并使用内置的解析req.ParseForm等),同时保留原始请求对象的原始状态,以便它可以传递给反向代理?

io http go

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

如何自定义Jenkins构建名称?

当我在Jenkins中运行作业时,每个构建都会给出一个名称,该名称在构建历史记录的UI中显示,基本上是当前的日期和时间.

我希望能够在那里放置构建参数,以便我可以在构建历史中看到构建了哪些分支以及何时构建.

我一直在寻找插件来做到这一点,但我找不到任何插件.有吗?

jenkins jenkins-plugins

31
推荐指数
3
解决办法
5万
查看次数