标签: android-instant-apps

Android即时应用程序 - 无法"运行未经验证的软件,运行任意本机代码".仅限Instant Apps运行时

Android Instant Apps文档在限制功能部分中说明它不能:

运行未验证的软件,运行任意本机代码,或动态加载代码,而不是Instant Apps运行时提供的代码.

我不完全理解上述声明,但听起来它可能不接受任何第三方软件或除了库中给出的任何本地库SDK/NDK.

有人可以帮忙详细说明吗?

android android-instant-apps

7
推荐指数
2
解决办法
276
查看次数

FirebaseApp初始化在Android Instant应用程序中失败

我目前正在开发一个现有的Android应用程序,以便创建即时应用程序版本.

我的Android Studio现在分为几个模块:

  • 业务对象模块(这是一个库)
  • base -feature-模块
  • moduleA -feature-模块
  • app模块(手机/平板电脑模块)
  • 即时模块(即时应用程序模块)

我的即时应用程序模块可以在手机/平板电脑上编译和启动,但每次因Firebase问题而崩溃.我在logcat中有以下消息:

I/FirebaseInitProvider:FirebaseApp初始化失败

根据文档,Firebase库与Instant Apps兼容,但我很确定我没有将google-services.json文件移动到我项目中的正确位置......

在这里我做了什么:

  1. 我将以下类路径依赖项定义到Android Studio项目的build.gradle文件中:classpath'com.google.gms:google-services:3.1.1'

  2. 我把google-services.json文件放到我的模块库中(因为文档要求它)

现在,如果我尝试将插件(应用插件:'com.google.gms.google-services')应用到基本模块的build.gradle文件中,我无法编译.我有以下消息:

错误:任务':base:processGooglePlayProductionDebugFeatureGoogleServices'的执行失败.

>找不到包名称'com.mycompany.myapp.base'的匹配客户端

实际上,定义到google-services.json文件中的包名称是应用程序使用的一个(因为根据文档,基本库不能与安装的Android应用程序具有相同的包名称.

我还尝试将插件应用到已安装应用程序的build.gradle文件中,并应用到即时应用程序模块中,将google-services.json文件保留到基本模块中.应用程序编译,但我有日志:"FirebaseApp初始化失败".

所以我尝试将google-services.json文件移动到我的即时应用模块中,但我仍然有日志:"FirebaseApp初始化失败"

我还试图强制初始化从FirebaseApp类调用静态方法initializeApp,但日志仍然存在.

我无法在网上找到实施的例子.实际上,Google Sample存储库不使用google-services.json文件.

预先感谢您的帮助 !

编辑:这里是我的模块的依赖项:

我的base -feature-模块的依赖关系:

  implementation project(':businessobject')
  feature project(':moduleA')
  application project(':app')
Run Code Online (Sandbox Code Playgroud)

我的moduleA -feature-模块的依赖关系:

api project(':base')
api project(':businessobject')
Run Code Online (Sandbox Code Playgroud)

我的应用模块(手机/平板电脑模块)的依赖关系:

implementation (project(':base'))
implementation (project(':businessobject'))
implementation (project(':moduleA'))
Run Code Online (Sandbox Code Playgroud)

我的即时模块(即即时应用模块)的依赖关系:

implementation project(':base')
implementation project(':businessobject')
implementation project(':moduleA')
Run Code Online (Sandbox Code Playgroud)

android firebase google-play-services android-instant-apps

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

如何组织Instant Apps的应用程序类

我正在尝试开发一个多功能即时应用程序.

我有queryautocomplete功能模块.

他们在功能模块中有用于依赖注入的类QueryApplicationAutoCompleteApplication类.

app 模块的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.epictimes.uvindex.app" />
Run Code Online (Sandbox Code Playgroud)

'base'模块的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.epictimes.uvindex">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="aia-compat-api-min-version"
            android:value="1" />

    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

query 模块的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.epictimes.uvindex.query">

    <application android:name=".QueryApplication">
        <!--simplified-->
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

autocomplete 模块的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.epictimes.uvindex.autocomplete">

    <application android:name=".AutoCompleteApplication">
        <!--simplified-->
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

当我尝试构建时,它给我以下错误:

错误:任务':base:processProductionDebugFeatureManifest'的执行失败.

清单合并失败:来自[:query] AndroidManifest.xml:16:9-68的属性应用程序@ name value =(net.epictimes.uvindex.query.QueryApplication)也出现在[:autocomplete] AndroidManifest.xml:14:9 -82 value =(net.epictimes.uvindex.autocomplete.AutoCompleteApplication).
建议:在AndroidManifest.xml:7:5-18:19中添加'tools:replace …

android android-instant-apps

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

Firebase Analytics无法使用Instant App或Normal App

我有一个模块化的应用程序,以支持即时应用程序.

应用模块:

  • 应用
  • instantapp
  • 基础
  • 主要
  • 详情
  • 搜索

我尝试通过添加以下内容添加Firebase:

  • classpath' com.google.gms:google-services:3.1.1'→到Project Level build.gradle
  • api" com.google.firebase:firebase-core:${versions.firebase}"→到基本模块
  • 应用插件:' com.google.gms.google-services'→到基本模块的底部
  • google-services.json →到基本模块文件夹

当我运行非即时应用程序时,我收到以下错误:

I/FirebaseInitProvider:FirebaseApp初始化失败

E/FA:GoogleService初始化失败,状态:10,来自名称为google_app_id的字符串资源中的Google app id值丢失.

I/FA:应用程序测量正在启动,版本:11720

I/FA:启用调试日志记录运行:adb shell setprop log.tag.FA VERBOSE

I/FA:要启用更快的调试模式事件日志记录运行:adb shell setprop debug.firebase.analytics.app com.punpuf.chacaraselazer.app

E/FA:缺少google_app_id.Firebase Analytics已停用.见https:// goo(...)

E/FA:无法上传.应用测量禁用

I/FA:找不到标记管理器,因此不会使用

当我运行即时应用程序时,我收到以下错误:

V/FA:取消工作.JobID:1799580119

E/FirebaseApp:Firebase API初始化失败.(...)引起:java.lang.NullPointerException:尝试在空对象引用上调用接口方法'void android.app.job.IJobScheduler.cancel(int)'

I/FirebaseInitProvider:FirebaseApp初始化成功

如果我添加以下行:" FirebaseAnalytics.getInstance(this)",它不仅会收到以前的错误,还会崩溃:

E/AndroidRuntime:FATAL EXCEPTION:main进程:com.punpuf.chacaraselazer.app,PID:11273 java.lang.RuntimeException:无法启动活动ComponentInfo {(...)}:java.lang.NullPointerException:尝试调用接口null对象引用上的方法'void android.app.job.IJobScheduler.cancel(int)'

所以我的问题是如何让Firebase Analytics工作,而不是在我的应用的即时和非即时版本上崩溃.

虽然这个问题有点类似于在Android Instant应用程序中FirebaseApp初始化失败,但我的不包含相同类型的错误.

更新:我已经创建了一个新的Firebase项目,并更新了我的google-services.json,但仍然无效.

这是我的gradle文件:

android firebase firebase-analytics android-instant-apps

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

在Android上的Instant App上使用Firebase

我正在迁移App以支持Instant App.

所以,我将我的项目结构模块化如下

我的项目结构

但是当我添加Firebase时,只有firebase Analytics可以使用它.像另一个特点火力地堡验证,存储,公司的FireStore数据库没有工作在这里.

我有一个错误:

Firebase App Not Initialized.
Although I have declared FirebaseApp.Initialize(this) through Activity 
or Application class.
Run Code Online (Sandbox Code Playgroud)

但Firebase Analytic可以正常工作.

这是我在活动中的代码

在这里,我的Gradle

如果有人知道如何解决这个问题,请帮忙.

android firebase-authentication firebase-realtime-database firebase-storage android-instant-apps

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

如何在 React Native 中创建 Android 即时应用程序?

互联网上似乎没有任何示例、教程或指南可用于使用 React Native 创建 Android 即时应用程序。

我有一个现有的 React Native 应用程序,我想创建一个 Android 即时应用程序。在 react native 中创建的现有应用程序驻留在目录app 中,而我本地创建的免安装应用程序驻留在目录Instantapp 中。我可以在 Android Studio 中将这个即时应用程序作为即时应用程序运行,它所做的只是在空白屏幕上显示文本“Hello Instant App”。

我可以编写 Android 原生代码来为这个 Instantapp 原生添加更多 ui 和功能,但我想通过原生 React 和使用 javascript 而不是编写原生 Android 代码来做到这一点。我怎样才能做到这一点?

android react-native android-instant-apps

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

使用 mac mini m1 2020 和(Android studio Flamingo 2022.2.1 patch 2)运行 Instant App,现在使用 Giraffe 2022.3.1

我正在尝试从 mac mini m1 2020 和 Android studio Flamingo 2022.2.1 patch 2 和 Giraffe 2022.3.1 运行即时应用程序,但没有任何效果。

我有一个包含instant.main模块的配置,并选中Deploy as instant app

但在我的 Windows 电脑上,相同配置和相同版本的 Android studio 上,一切正常

配置: 配置镜像

我尝试使用模拟器和物理设备,但在每种情况下,我都会在“运行”选项卡中显示此内容: “运行选项卡 Img”

现在有了新的 Android studio 版本,当我运行即时模块时,他给我这个错误消息:

could not initialize class com.google.android.instantapps.sdk.lib.ClearcutLogger

macos android android-instant-apps

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

Kapt没有在Instant app功能模块中生成课程

我在我的Android应用程序中使用dagger2.即使没有错误,它也不会生成匕首组件类.

我在设置中启用了注释处理器并重新启动我的android工作室,但这对我不起作用.我读了这个线程Dagger2没有生成Daggercomponent类并读取一个apt不推荐使用的线程所以我正在使用annotationProcessor

基本模块build.gradle

apply plugin: 'com.android.feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    baseFeature true
    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        versionName "0.0.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    application project(':app')
    feature project(":main")
    feature project(":tv")  

    api 'com.android.support:appcompat-v7:26.0.2'
    api 'com.android.support.constraint:constraint-layout:1.0.2'
    api 'com.android.support:design:26.0.2'

    api "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    api "org.jetbrains.anko:anko-commons:$anko_version"

    api "android.arch.lifecycle:runtime:1.0.0-alpha9"
    api "android.arch.lifecycle:extensions:1.0.0-alpha9"
    kapt "android.arch.lifecycle:compiler:1.0.0-alpha9"

    api 'com.squareup.retrofit2:retrofit:2.3.0'
    api "com.squareup.retrofit2:converter-moshi:2.0.0"

    api 'com.google.dagger:dagger:2.11'
    kapt 'com.google.dagger:dagger-compiler:2.11' …
Run Code Online (Sandbox Code Playgroud)

android dagger-2 kapt android-instant-apps

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

即时应用程序的难度低于 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
查看次数

Firebase支持即时应用程序的库依赖冲突

我正在尝试将即时应用程序实现到使用Firebase数据库的项目中.我的目标是SDK版本27,因此支持库的版本为27.0.2.

Firebase数据库版本为11.8.0,gms版本为3.1.0.当我尝试同步时,我收到以下错误:

Android dependency 'com.android.support:support-v4' has different 
version for the compile (25.2.0) and runtime (27.0.2) classpath. You 
should manually set the same version via DependencyResolution
Run Code Online (Sandbox Code Playgroud)

通过在即时应用程序之前显式添加以下依赖项,我能够解决此问题

implementation 'com.android.support:support-v4:27.0.2'
implementation 'com.android.support:support-media-compat:27.0.2'
Run Code Online (Sandbox Code Playgroud)

但是对于即时应用程序,即使我在功能模块(app-base)中有它们,当我尝试构建实际应用程序(com.android.application)时,我再次得到相同的错误.

我可以通过将这些冲突的依赖项移动到应用程序模块gradle文件中来解决这个问题,在这种情况下,同步成功,但是我面临另一个问题,这次是使用清单合并,这会阻止应用程序查找启动器活动:

来自AndroidManifest.xml的属性提供者#com.google.firebase.provider.FirebaseInitProvider@authorities value =(com.iamkaan.packagename.firebaseinitprovider):AndroidManifest.xml中还有10:13-72:33:350-423 value = (com.iamkaan.packagename.base.firebaseinitprovider).建议:在AndroidManifest.xml:8:9-12:39中添加'tools:replace ="android:authorities"'来覆盖.app主要清单(此文件),第9行

最后一个问题在某种程度上与firebase-core依赖关系有关,因为当我改变我的应用程序gradle依赖关系时

implementation project(':app-base')
Run Code Online (Sandbox Code Playgroud)

implementation (project(':app-base')) {
    exclude group: 'com.google.firebase', module:'firebase-core'
}
Run Code Online (Sandbox Code Playgroud)

我能够运行该应用程序.但是这一次,我开始在运行时遇到以下错误(我第一次打电话FirebaseDatabase.getInstance())

Default FirebaseApp is not initialized in this process com.iamkaan.packagename. Make sure to call FirebaseApp.initializeApp(Context) …
Run Code Online (Sandbox Code Playgroud)

android firebase android-gradle-plugin firebase-realtime-database android-instant-apps

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