小编Jay*_*ing的帖子

Google Map Api v2在日志中显示"V/GoogleSignatureVerifier:signature not valid"错误消息

我正在开发一个Android应用程序,google map api v2用于在片段中显示地图.当我运行应用程序时,我总是偶尔在我的日志中收到此错误消息poppin.

我试过的事情:

  • 擦除debug.keystore并重建应用程序.
  • 降级Google Play服务并再次升级.
  • 取消选择"脱机工作"

到目前为止,没有什么诀窍......

在"日志"选项卡中一次:

    2364-3928/com.example.android.app E/DynamiteModule: Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.android.gms.googlecertificates.ModuleDescriptor" on path: DexPathList[[zip file "/data/app/com.example.android.app-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.android.app-2/lib/arm, /data/app/com.example.android.app-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
    2364-3928/com.example.android.app I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:1
    2364-3928/com.example.android.app I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 1
    2364-3928/com.example.android.app W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/00000000/n/armeabi
    2364-3928/com.example.android.app D/ChimeraFileApk: Primary ABI of requesting process is armeabi-v7a
    2364-3928/com.example.android.app D/ChimeraFileApk: Classloading successful. Optimized code found.
    2364-3928/com.example.android.app D/GoogleCertificates: com.google.android.gms.googlecertificates module …
Run Code Online (Sandbox Code Playgroud)

android google-maps google-play-services

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

我的应用中的Google地图不可见

当我启动我的应用程序时,我收到以下错误:

V/GoogleSignatureVerifier(4962): com.myapp.application signature not valid.  Found: 
V/GoogleSignatureVerifier(4962): MIIDDTCCAfWgAwIBAgIEO0I8qTANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJVUzEQMA4GA1UE
V/GoogleSignatureVerifier(4962): ChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzAeFw0xNTA0MjEyMDM4NDRaFw00NTA0
V/GoogleSignatureVerifier(4962): MTMyMDM4NDRaMDcxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdBbmRyb2lkMRYwFAYDVQQDEw1BbmRy
V/GoogleSignatureVerifier(4962): b2lkIERlYnVnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/4shkSGhYP1pwMY4bFc
V/GoogleSignatureVerifier(4962): dKuMg6JyTdUON6XF8VxifADMYd/WwgzsETT+AHZXlo6RwQFhtwbxrvmuhBOMip2ivhmRGT8JpBcI
V/GoogleSignatureVerifier(4962): FqjCOxLzw3B3psZhnioZwCBTKBrCau8/q0XW40lXa/OCy2wA4EZs2ThaqwqgdGwpKXN+qHNHAFAS
V/GoogleSignatureVerifier(4962): 0g/SdupsSID+WctlL2XdCo50Jq/bJJAWQBz1SL03xBWUikuiWKM6mz/6Up8oE4WtZhU7V83R7FYM
V/GoogleSignatureVerifier(4962): XmRU4CghlvczG+ujCrZwSsYttsZgz2nb4NY2w9fvevAXgSB/N6JfOatnccW5vmukkm6g12iysA9u
V/GoogleSignatureVerifier(4962): hS3EjVb01bKyMdoXhQIDAQABoyEwHzAdBgNVHQ4EFgQUByeU0uE1tXyrL0UimKkJH2CbeXIwDQYJ
V/GoogleSignatureVerifier(4962): KoZIhvcNAQELBQADggEBABPPel3zEbk6/ZzwfvIS0z8IqvYgzxzxSZFEAp+PrlEEyk+IVHQgQAVS
V/GoogleSignatureVerifier(4962): I6JM9rNkxR2hvQHP3V9pd2d5bYhsCBZFSn6drOmnBrnABXH8e4OdqN9fRcKn+acfbZ+yBvZoVbr/
V/GoogleSignatureVerifier(4962): IhRvRrpLDtDNnD4kUoLfTgw/Xygdiq5/aU5WSfXdrUx6Va0vg6uJZY6Yq4J4a/R+/T7lLwzQgerq
V/GoogleSignatureVerifier(4962): eNUvY9HbcmegJDKMGeyc4Po8akAt9gDRo4nswuP0Sve8oSMqBEfO8ItTsIPx3UVEXuYUeC8e8nwb
V/GoogleSignatureVerifier(4962): fyhDXSFAo59Y1+NWcZNsGdum95YV8oZloF7+4fFqBwz7w0mb+M+JfY1sg7I=
Run Code Online (Sandbox Code Playgroud)

我已经读过debug.keystore默认密钥只有1年的有效期,所以必须先删除它以让android studio生成一个新的.最终我做到了,但错误仍然存​​在.

此举后,我的应用程序中的Google地图不再可见...

如果可以的话请帮忙.

android android-keystore

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

在浏览片段时正确处理DrawerLayout动画

我正在努力DrawerLayout搞动画做奇怪的事情; 该汉堡包图标是laggy,往往从汉堡包切换,而动画箭头,如果我不把一个处理器延迟fragment交易的动画.

所以我最终放了一个处理程序,等到汉堡包图标执行动画,但我们不需要等到抽屉接近切换片段就感觉不自然了.我确信有更好的方法可以解决这个问题......

这是我目前的做法:

private void selectProfilFragment() {
    final BackHandledFragment fragment;
    // TODO test this again
    Bundle bundle = new Bundle();
    bundle.putString(FragmentUserProfile.USER_FIRST_NAME, user.getFirstname());
    bundle.putString(FragmentUserProfile.USER_LAST_NAME, user.getLastname());
    bundle.putString(FragmentUserProfile.USER_PICTURE, user.getProfilepic());
    bundle.putString(FragmentUserProfile.USER_EMAIL, user.getEmail());
    bundle.putBoolean(FragmentUserProfile.USER_SECURITY, user.getParameters().getSecuritymodule().equals("YES"));
    fragment = new FragmentUserProfile();
    fragment.setArguments(bundle);
    mDrawerLayout.closeDrawer(mDrawerLinear);

    new Handler().postDelayed(new Runnable() {
        public void run() {
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.setCustomAnimations(R.anim.pull_in_right, R.anim.push_out_left, R.anim.pull_in_left, R.anim.push_out_right);
            ft.replace(R.id.content_frame, fragment)
                    .addToBackStack(fragment.getTagText())
                    .commitAllowingStateLoss();
        }
    }, 300);
}
Run Code Online (Sandbox Code Playgroud)

它仍然毛刺在之间一点点DrawerLayout的关闭和开启片段交易的动画.

这是我如何实现抽屉:

mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

mDrawerListChild.setAdapter(new DrawerListAdapter(this, R.layout.drawer_layout_item, mPlanTitles));
mDrawerListChild.setOnItemClickListener(new …
Run Code Online (Sandbox Code Playgroud)

animation android android-fragments navigation-drawer

18
推荐指数
1
解决办法
905
查看次数

使用getOrientation()函数获取设备角度

Sensor.TYPE_ORIENTATION用来确定设备的当前角度,但TYPE_ORIENTATIONAPI版本8上已弃用.在SensorManager手册中,它指的是使用getOrientation()功能TYPE_ORIENTATION.

这是手册


这是我的旧代码:

public void onSensorChanged(SensorEvent event) {
        Log.d("debug","Sensor Changed");
        if (event.sensor.getType()==Sensor.TYPE_ORIENTATION) {
            Log.d("debug",Float.toString(event.values[0]));


            float mAzimuth = event.values[0];
            float mPitch = event.values[1];
            float mRoll = event.values[2];

            Log.d("debug","mAzimuth :"+Float.toString(mAzimuth));
            Log.d("debug","mPitch :"+Float.toString(mPitch));
            Log.d("debug","mRoll :"+Float.toString(mRoll));
        }

    }
Run Code Online (Sandbox Code Playgroud)

我对使用getOrientation()功能感到困惑,有人能告诉我一个如何获得角度的例子吗?

android sensor orientation android-sensors sensormanager

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

使用Retrofit 2上传文件时出错

我正在尝试将文件(图片)上传到服务器Retrofit 2.我正在关注那个起初看起来很简单的教程,但在我的情况下不起作用......

当我调用API函数时,我总是收到此错误:

W/System.err: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
W/System.err:     at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:190)
W/System.err:     at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166)
W/System.err:     at retrofit2.Retrofit$1.invoke(Retrofit.java:145)
W/System.err:     at java.lang.reflect.Proxy.invoke(Proxy.java:393)
W/System.err:     at com.plante.android.cobalt.fragment.FragmentIncidentPlan.uploadFile(FragmentIncidentPlan.java:575)
Run Code Online (Sandbox Code Playgroud)

这是我的API调用:

@Multipart
@POST(Constants.URL_UPLOAD)
Call<ResponseBody> upload(@Part RequestBody description,
                          @Part MultipartBody.Part file);
Run Code Online (Sandbox Code Playgroud)

这是我用来上传文件的方法:

private void uploadFile(String path) {
    // create upload service client

    // use the FileUtils to get the actual file by uri
    File file = new File(path);
    Log.e(TAG, file.getAbsolutePath());

    // create RequestBody instance from file
    RequestBody requestFile =
            RequestBody.create(MediaType.parse("multipart/form-data"), file);

    // MultipartBody.Part is used …
Run Code Online (Sandbox Code Playgroud)

android retrofit retrofit2

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

如何通过导入正确的库来避免DEX 64K LIMIT

我有这个问题,在编译我使用的所有库时,我在Dalvik中溢出64k方法限制.当我导入支持库时,我开始遇到这个问题,因为有些已经包含在其他库中,它最终溢出了限制.

有没有办法验证库当前项目中是否未使用或已通过其他库依赖项导入?

目前,我排除了我所知道的那些,但是手动这样做似乎很奇怪.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:multidex:1.0.1'
    compile "com.android.support:percent:${supportLibVersion}"
    compile("com.android.support:design:${supportLibVersion}") {
        exclude module: 'support-v4'
    }
    compile("com.android.support:cardview-v7:${supportLibVersion}") {
        exclude module: 'support-v4'
    }

    compile('com.github.nkzawa:socket.io-client:0.4.1') {
        exclude group: 'org.json', module: 'json'
    }
    compile('com.astuetz:pagerslidingtabstrip:1.0.1') {
        exclude module: 'support-v4'
    }
//...
}
Run Code Online (Sandbox Code Playgroud)

迄今解决方案:

  1. 使用Gradle插件 - 我们在一段时间后写了一个非常容易使用的Gradle插件,它列出了包的方法数和总数.您可以在此处找到有关它的更多信息.
  2. www.methodscount.com - 想知道特定库将为您的应用程序添加多少方法?只需在此网站上输入'compile'语句,它就会告诉您它的方法计数,依赖关系,JAR大小和DEX大小.
  3. Android Studio插件 - 这个优秀的插件显示了Android Studio中每个依赖项的方法计数.
  4. 使用MultiDex支持库 如果您使用的是Android Studio,则该过程非常简单.如果不是,我强烈建议迁移,因为Google可能会很快放弃对Eclipse ADT插件和旧的基于Ant的构建系统的支持.

步骤1

在build.gradle中添加MultiDex支持库的依赖项

dependencies { 
... 
   compile 'com.android.support:multidex:' 
   ... 
}
Run Code Online (Sandbox Code Playgroud)

第2步

通过在gradle配置的buildType或productFlavor部分中设置multiDexEnabled标志来启用multi-dexing.

defaultConfig { 
   ... 
multiDexEnabled true 
... 
} …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat gradle android-support-library android-multidex

9
推荐指数
2
解决办法
3486
查看次数

AnyCancellable.store(in:) 与合并

让\xe2\x80\x99s 假设您正在 AnyCancellable 上使用内置.store(in:)方法,如下所示:

\n
private var subscriptions = Set<AnyCancellable>()\n\nlet newPhotos = photos.selectedPhotos\nnewPhotos\n  .map { [unowned self] newImage in\n    return self.images.value + [newImage]\n  }\n  .assign(to: \\.value, on: images)\n  .store(in: &subscriptions)\n
Run Code Online (Sandbox Code Playgroud)\n

如果您有一个经常执行此操作的应用程序 - 发布商完成后这些内容是否会被删除?

\n

另外,如果我决定采用这种方法:

\n
private var newPhotosSubscription: AnyCancellable?\n\nself.newPhotosSubscription = newPhotos\n  .map { [unowned self] newImage in\n    self.images.value + [newImage]\n  }\n  .assign(to: \\.value, on: images)\n
Run Code Online (Sandbox Code Playgroud)\n

每次我再次调用该方法时,它都会覆盖 AnyCancellable,前一个会发生什么?它在被释放之前是否仍然完成?

\n

swift combine

8
推荐指数
1
解决办法
6935
查看次数

将多个 AVAudioMixerNode 连接到 AVAudioEngine

AVAudioMixerNodes当我尝试将两个连接到 的麦克风输入时,我遇到了崩溃AVAudioEngine。我无法在网上找到如何管理两个或多个节点到同一输入的文档。

处理有多个节点监听麦克风的情况的正确方法是什么?

我在后台线程上调用这三个方法:

    private func setupSession() {
        let session = AVAudioSession.sharedInstance()
        do {
            try session.setCategory(.playAndRecord, options: [.mixWithOthers])
            if session.isInputGainSettable {
                try session.setInputGain(0.2)
            }
            try session.setActive(true, options: .notifyOthersOnDeactivation)
        } catch let error as NSError {
            LoggerManager.shared.error(error: error, message: "Error while setting up AVAudioSession Category/Active status")
        }
    }

    private func setupMixerNodes() {
        analyzerNode = AVAudioMixerNode()
        analyzerNode.volume = 0

        volumeNode = AVAudioMixerNode()
        volumeNode.volume = 0

        engine.attach(analyzerNode)
        engine.attach(volumeNode)
    }

    private func makeConnections() {
        /* input microphone */
        let inputNode = …
Run Code Online (Sandbox Code Playgroud)

objective-c swift avaudioengine

7
推荐指数
0
解决办法
651
查看次数

使用Proguard构建时出现多个警告

我真的想在Proguard我的应用程序中使用此功能,但是看到那些数千个警告让我想知道它是否值得...我应该添加什么才能使它成功构建?或者让我知道这是否是一个失败的原因......

这是我的Gradle档案:

(......)

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }

    lintOptions {
        disable 'InvalidPackage'
        disable 'LongLogTag'
    }

    dexOptions {
        jumboMode = true
        javaMaxHeapSize "4g"
    }

    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each …
Run Code Online (Sandbox Code Playgroud)

android proguard android-gradle-plugin android-proguard

6
推荐指数
1
解决办法
4698
查看次数

使用特定于片段的"adjustPan"或"adjustResize"

我想知道是否可以以编程方式或在xml中指定使用windowSoftInputMode特定于a的方式Fragment.

假设我只有一个activity包含两个fragment,一个片段应该使用adjustPan而另一个片段应该使用adjustResize.我应该怎么做呢?

谢谢!

android android-fragments

6
推荐指数
1
解决办法
4981
查看次数