小编Gil*_*oot的帖子

如何在Android Studio中禁用清单合并

在编译和签署我的应用程序的发布版本后,我很难从清单文件中删除不必要的(权限)内容.我只是不希望任何与其他库的清单文件合并的东西.我有自己的清单文件,就是这样.不应该合并其他清单

谁知道如何完全禁用清单合并?

merge android android-manifest

21
推荐指数
1
解决办法
1731
查看次数

Android Crosswalk Lite - Android Studio集成

我已成功在Android工作室项目中实现了crosswalk webview项目.基本上通过以下链接:https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/

熟悉实施人行横道的人知道应用程序大小增加了+ - 20-30 mb.出于这个原因,我一直在尝试整合精简版的人行横道.这是+ - 10 MB,不幸的是没有成功.

正常的人行横道项目有一个maven版本,可在 https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/获取

Lite版本还有一个AAR版本,位于https://download.01.org/crosswalk/releases/crosswalk-lite/android/canary/, 但没有POM文件,我无法在Android Studio中使用它.

现在我一直在尝试手动下载crosswalk-lite版本.我创建了一个库项目,复制了所有相关文件,创建了gradle文件并将其包含在一个小型测试应用程序中.到目前为止,一切似乎都没问题.应用程序编译.我的应用程序内部提供了XWalkView等所有类.除了webview完全是黑色外,运行应用程序也可以.

现在我认为它与libxwalkcore.so文件有关,它不会以某种方式加载.放置在每个可以想象的文件夹(jar,jniLibs,lib等)中.不起作用.任何日志都没有错误.

如果有人已经成功获得了在Android工作室项目中工作的精简版本,我有问题.

顺便说一句.crosswalk-lite库应用程序的gradle文件包含:

dependencies {
    compile files('libs/xwalk_core_library_java_library_part.jar')
    compile files('libs/xwalk_core_library_java_app_part.jar')
}
Run Code Online (Sandbox Code Playgroud)

android webview maven android-studio crosswalk-runtime

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

Android:FATAL EXCEPTION:AdWorker#1 java.lang.NoSuchMethodError:java.io.IOException.<init>

几个星期以来,我收到了来自用户的以下崩溃报告

FATAL EXCEPTION: AdWorker #1
java.lang.NoSuchMethodError: java.io.IOException.<init>
at com.google.android.gms.internal.g.f(Unknown Source)
at com.google.android.gms.internal.g.b(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.bq.ac(Unknown Source)
at com.google.android.gms.internal.cg$1.run(Unknown Source)
at com.google.android.gms.internal.ch$1.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
Run Code Online (Sandbox Code Playgroud)

除了它与谷歌广告/云服务有关,我不知道它来自哪里.直到昨天我才重现它,我启动了一个10英寸的模拟器并立即看到了问题.删除部分代码后,我认为以下部分是问题所在.

public void onActivityCreated(Bundle savedInstanceState) {

    ............

    AdView adView = (AdView)getActivity().findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
    .addTestDevice("CED2A4FD2C192C08557081CC37AA9E54")
    .build();
     adView.loadAd(adRequest);
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是它只发生在10英寸或更高的设备上.我测试了各种不同的设备/版本.该问题仅发生在10英寸或更大的设备上.Android版本并不重要.2.2或4.4它不断崩溃.

根据我的理解,我没有针对特定设备尺寸的任何不同布局文件夹.我的广告定义的xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/mainContainer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/titleContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    </LinearLayout>

    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/indicator"
        style="@style/tabsbackground"
        android:layout_width="fill_parent" …
Run Code Online (Sandbox Code Playgroud)

android admob

7
推荐指数
1
解决办法
2589
查看次数

在 2 个功能模块中导入相同的库时,清单合并失败

我遇到了一个构建问题,其中 gradle 抱怨“getMergedManifest failed manifest merge failed”

日志中的错误显示如下几行:

WARN - .tools.idea.model.ManifestInfo - getMergedManifest failed Manifest merger failed : Attribute provider#com.google.firebase.provider.FirebaseInitProvider@authorities value=(com.xxxxxxxxxx.feature_team.firebaseinitprovider) from AndroidManifest.xml:10:13-72
is also present at AndroidManifest.xml:36:559-633 value=(com.xxxxxxxxx.base.firebaseinitprovider).
Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml:8:9-12:39 to override.
Run Code Online (Sandbox Code Playgroud)

我想在这里做什么?我的任何清单文件中都没有任何权限部分。当在 2 个功能模块中导入相同的共享库时,会出现错误,结果取决于某些 google 库。我确信所有版本的外部库都是相同的。有谁知道如何解决这个问题?

- - - - 编辑。仍然有错误------。

......./base/src/main/AndroidManifest.xml:70:13-46 Error:
    Attribute activity#com.facebook.LoginActivity@splitName value=(feature_match) from [:feature_match] AndroidManifest.xml:70:13-46
    is also present at [:feature_topvoters] AndroidManifest.xml:73:13-50 value=(feature_topvoters).

    Suggestion: add 'tools:replace="android:splitName"' to <activity> 
element at AndroidManifest.xml:68:9-71:75 to override.

......./base/src/main/AndroidManifest.xml:74:13-46 Error:
    Attribute activity#com.github.gorbin.asne.core.OAuthActivity@splitName value=(feature_match) from …
Run Code Online (Sandbox Code Playgroud)

android build gradle

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

即时应用程序的难度低于 4mb。如何减少apk大小

我在获得低于 4mb 的 apk 时遇到了困难。在检查生成的免安装应用 APK(s) 后,我看到 com.google.android.gms.internal 几乎是 1.4mb。我只是找不到这个大块的原因。一定是某种依赖。

在此处输入图片说明

我的基本清单文件如下所示:

dependencies {

api "com.android.support:design:$rootProject.supportLib"
api "com.android.support:support-fragment:$rootProject.supportLib"

api "com.android.support:appcompat-v7:$rootProject.supportLib"
api "com.android.support:recyclerview-v7:$rootProject.supportLib"
api "com.android.support:cardview-v7:$rootProject.supportLib"

api 'com.android.support.constraint:constraint-layout:1.0.2'
api "com.google.code.gson:gson:$rootProject.gson"
api "com.google.firebase:firebase-core:$rootProject.googleLibs"
api "com.google.firebase:firebase-ads:$rootProject.googleLibs"
api "com.google.firebase:firebase-appindexing:$rootProject.googleLibs"
api "com.google.android.gms:play-services-auth:$rootProject.googleLibs"
api "com.android.support:multidex:$rootProject.multidex"
api "com.github.bumptech.glide:glide:$rootProject.glide"
annotationProcessor "com.github.bumptech.glide:compiler:$rootProject.glide"
api "com.loopj.android:android-async-http:$rootProject.asyncHttp"

api "org.greenrobot:eventbus:$rootProject.greenRobotEventBus"
api "com.vincentbrison.openlibraries.android:dualcache:$rootProject.dualcache"
api('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
    transitive = true;
}
Run Code Online (Sandbox Code Playgroud)

dependencies android android-gradle-plugin android-instant-apps

6
推荐指数
2
解决办法
852
查看次数

不同程序包中的同一个库不起作用

更新到最新版本之后,构建项目时出现一个奇怪的错误:

[:feature_x, :feature_y] all package the same library  [com.github.PhilJay:MPAndroidChart].
Run Code Online (Sandbox Code Playgroud)

我确实在两个功能中都添加了该库。它们设置为依赖项,例如:

api "com.github.PhilJay:MPAndroidChart:$rootProject.MPAndroidChart"
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

android build gradle

5
推荐指数
1
解决办法
392
查看次数

Firebase FCM 变得非常不稳定。寻找解决方案/替代方案

我们拥有超过一百万订阅者的应用程序面临着 FCM 的巨大交付问题。最近情况变得更糟,服务几乎不再工作。我们收到如下错误:

 { code: 'messaging/message-rate-exceeded',
 message: 'Topic quota exceeded.' },
codePrefix: 'messaging' }
Run Code Online (Sandbox Code Playgroud)

我们经常收到这个错误。在欧盟/美国晚上,情况似乎更糟。在某些情况下,超过 90% 的通知都失败了。我们正在与 firebase 支持团队联系,但到目前为止似乎没有解决方案。不过,它为我们提供了大量信息和一些有用的事实:

  • 资源在开发者之间共享。因此,由于其他开发人员占用资源,因此最大消息速率可能会有所不同。
  • OR 查询应转换为多个 AND 查询,因为 OR 查询实际上会向所有用户群生成消息,然后应用过滤条件
  • 240 条消息/分钟和 5,000 条消息/小时到单个设备。
  • 将上游消息限制在每个项目 15,000/分钟(我们不理解这个)
  • 将每台设备的上行消息限制为 1,000/分钟

他们还在https://firebase.google.com/docs/cloud-messaging/concept-options#topics_throttling更新了他们的文档

所以我们知道消息速率限制和扇出机制。在我们的例子中,我们每小时大约有 6000 个不同的主题发送请求,每个主题平均有 10k 订阅者。单个用户每小时不会收到超过 50-100 条通知。我们相信我们没有达到 FCM 设定的限制。

回到 GCM 时代,一切正常。所以我们对目前的情况很不满意。该应用程序的核心功能现在非常糟糕。而且似乎没有解决方案。

我们正在考虑改用 SSE 解决方案。有一个关于有人成功离开 FCM 的故事 https://f-droid.org/en/2018/09/03/replacing-gcm-in-tutanota.html 但由于谷歌最近很难拥有后台进程正在运行,我想知道其他有类似经历的人做了什么。或者我们还能解决这个问题吗?

android push-notification firebase-cloud-messaging

5
推荐指数
1
解决办法
3401
查看次数

具有多个主题的 firebase 消息传递条件不起作用

我正在使用节点 firebase admin 向 Android 设备发送消息。所有作品。除非我尝试向多个主题发送消息。在下面的示例代码中,我只是订阅了 2 个主题,然后直接向某个条件中的多个主题发送通知。我的手机上没有任何东西。当您只发送到一个主题时,通知成功到达。我不明白为什么它不起作用。Firebase 管理员没有错误响应。只是:“项目/admob-app-id-xxxx/messages/xxxx”

var admin = require("firebase-admin");
var serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
databaseURL: "https://admob-app-id-xxxxx.firebaseio.com"
});

var registrationTokens = ["xxxxx"];
var topica = "AAA";
var topicb = "BBB";
var data = {};

var message = { 
            condition : "'"+topica+"' in topics || '"+topicb+"' in topics",
            data: {'message':JSON.stringify(data)},
            android: {
                ttl: 36000 * 1000,
                priority: 'normal',
                collapseKey: "test"
            }
        };



        admin.messaging().subscribeToTopic(registrationTokens, topica)
            .then(function(response) {

                admin.messaging().subscribeToTopic(registrationTokens, topicb)
                    .then(function(response) {

                        admin.messaging().send(message, dryRun)
                            .then((response) => {
                            console.log('success', …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging

3
推荐指数
1
解决办法
3137
查看次数