小编sba*_*aar的帖子

由于重叠的abis,在Play开发者控制台上完全隐藏了APK

我正在尝试使用以下代码在我的gradle中进行abi分割

    splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'/*, 'arm64-v8a', 'x86_64'*/
        universalApk true
    }
}
def abiVersionCodes = ['armeabi-v7a': 1, 'x86': 2, /*'arm64-v8a': 2,'x86_64': 4*/]


android.applicationVariants.all { variant ->
    // assign different version code for each output
    variant.outputs.each { output ->
        def filter = output.getFilter(OutputFile.ABI)
        if (filter != null) {
            output.versionCodeOverride = abiVersionCodes.get(output.getFilter(OutputFile.ABI)) * 1000000 + android.defaultConfig.versionCode
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它正在生成正确命名的输出,当我使用apk分析器时,在lib目录下,armeabi-v7a apk将只包含一个lib/armeabi-v7a目录,同样适用于x86 apk.但是,armeabi-v7a还包含一个armeabi和x86文件夹,只有一个META-INF文件夹只包含一个MANIFEST.MF文件,不是这样.

将这些多个apks上传到开发控制台时,每个拆分apk都列在

区分apk详细信息:原生平台无(+ 3常见)

和通用apk有

本机平台arm64-v8a,x86_64(+ 3常见)控制台上的arm和通用apk错误是

"完全投影APK PROBLEM此APK不会被提供给任何用户,因为它完全被一个或多个具有更高版本代码的APK所遮蔽.解决方案从您的版本中删除此APK或查看您所包含的APK的定位和版本代码在这个版本中."

当我添加包装选项时

packagingOptions {
    exclude '**/x86/**'
}
Run Code Online (Sandbox Code Playgroud)

然后生成的apks,split和universal,将不支持x86.但是,我没有看到为每个应用程序变体指定packagingOptions的方法,因此这不是一个可行的解决方案,并且它显然不是正确的方法,即使它是.问题似乎是apk被认为是支持x86只是因为它有一个x86目录,即使它大部分都是空的,并且这导致两个分裂apx通告他们支持完全相同的体系结构,当他们不支持时. …

android abi gradle android-gradle-plugin developer-console

13
推荐指数
1
解决办法
1297
查看次数

有时在使用片段填充viewpager时,"活动已被破坏"

我收到来自所有版本的android 4+和5+的viewpager v22 + FragmentPagerAdapter的崩溃报告.viewpager在一个片段中,寻呼机适配器正在使用childFragmentManager它很少发生,大约有1/200的用户.

java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.void enqueueAction(java.lang.Runnable,boolean)(SourceFile:1397)
at android.support.v4.app.BackStackRecord.int commitInternal(boolean)(SourceFile:636)
at android.support.v4.app.BackStackRecord.int commitAllowingStateLoss()(SourceFile:619)
at android.support.v4.app.FragmentPagerAdapter.void finishUpdate(android.view.ViewGroup)(SourceFile:139)
at android.support.v4.view.ViewPager.void populate(int)(SourceFile:1073)
at android.support.v4.view.ViewPager.void populate()(SourceFile:919)
at android.support.v4.view.ViewPager.void onMeasure(int,int)(SourceFile:1441)
at android.view.View.measure(View.java:16574)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5140)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1406)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:697)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
at android.view.View.measure(View.java:16574)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5140)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16574)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:849)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
at android.view.View.measure(View.java:16574)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5140)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16574)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16574)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5140)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16574)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5140)
at android.support.v7.internal.widget.ActionBarOverlayLayout.void onMeasure(int,int)(SourceFile:453)
at android.view.View.measure(View.java:16574) …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-support-library

12
推荐指数
1
解决办法
2515
查看次数

无法在android中调整原生模块中的线性布局子项

完整代码在这里

在java中正确行为的视频和不正确的反应原生在这里

我修改了一个线性布局,通过调整左边的孩子的大小来响应触摸,而右边的孩子占据了剩余的空间,模拟了一个可以使用以下代码"打开"或"关闭"的水平滚动

    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) leftView.getLayoutParams();
    //Log.d("ll","width " + newWidth);
    lp.width=newWidth;
    leftView.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)

在本机反应中,touch仍然调用此方法并记录预期值,但不更新子项的大小.它更新的唯一时间是我将可见性切换为已消失然后再次可见.从java调用invalidate/requestLayout或从js调用forceUpdate没有任何效果.

我需要调用一些其他代码来使视图无效并重绘吗?我需要提供一些提示,以便该组件滚动或响应触摸吗?

android scroll android-layout react-native android-layoutparams

12
推荐指数
2
解决办法
1139
查看次数

播放服务提示请求无法在请求时显示电话号码

当使用谷歌的短信检索器api中的代码首先获取设备的电话号码时,对话框会显示一个加载微调器,然后快速消失.在onActivityResult中,resultCode为1002,intent为空.没有此错误代码的文档.我正在使用的确切代码是

        email.setOnClickListener(v -> {

        HintRequest hintRequest = new HintRequest.Builder().setHintPickerConfig(new CredentialPickerConfig.Builder().setPrompt(0).build())
                .setPhoneNumberIdentifierSupported(true)
                .setEmailAddressIdentifierSupported(false)
                //.setAccountTypes(IdentityProviders.GOOGLE)
                .build();

        PendingIntent intent =
                Auth.CredentialsApi.getHintPickerIntent(mGoogleApiClient, hintRequest);
        try {
            startIntentSenderForResult(intent.getIntentSender(),599,null,0,0,0,null);
        } catch (IntentSender.SendIntentException e) {
            Log.e("create", "Could not start hint picker Intent", e);
        }
    });


    mGoogleApiClient =  new GoogleApiClient.Builder(getContext())
            .enableAutoManage(getActivity(),connectionResult -> {
                Timber.e("conenction failed");
            })
            .addApi(Auth.CREDENTIALS_API)
            .addApi(Auth.GOOGLE_SIGN_IN_API)
            .build();
Run Code Online (Sandbox Code Playgroud)

如果我设置为true EmailAddressIdentifiedSupported或甚至只是取消注释setAccountTypes,则提示请求将正常显示电子邮件帐户并将名称和电子邮件返回给应用程序,但启用这两者不会导致凭据ID成为电话号码,如1

这是从一个片段调用的,但从任何位置调用各种startIntentSenderForResult没有任何区别.

android credentials google-api google-signin google-smartlockpasswords

12
推荐指数
2
解决办法
3732
查看次数