我有一个具有两个模块base
和restaurant
的应用。我有一个用于正常应用发布的模块output
,另一个用于即时应用的模块。当我使用android studio运行构建时,工作正常,但是当我运行时
./gradlew assembleRelease
似乎只有output
模块被构建。是否可以从终端创建即时应用apk?我的即时应用gradle文件仅是:
apply plugin: 'com.android.instantapp'
dependencies {
implementation project(':base')
implementation project(':restaurant')
}
内部没有任何签名配置。
答案 0 :(得分:1)
Gradle build only one module为您提供了一个线索。
您可以将gradle指向com.android.instantapp
模块。即时应用程序模块基本上指示implementation project()
定义的模块,然后将其压缩为即时应用程序。
此基础cmd为我工作:
./gradlew instantapp:assemble
然后ia zip文件将包含在 instantapp /build/output/apk/
目录中。
但是,即使您运行./gradlew assemble
,您仍然应该在同一目录中找到您的即时应用apks.zip。
答案 1 :(得分:0)
您应该打开 Gradle窗口。
查看->工具窗口-> Gradle。
您可以同步并运行要独立执行的任何任务。 如果您绝对需要在终端或脚本中执行此操作。 我确定在看到任务名称之后。您将能够编写命令行。
答案 2 :(得分:0)
这个问题似乎从未得到回答,所以如果有人在搜索它,那么您就可以这样做:
推荐的生产Instant App的新方法是通过Instant Enabled App Bundles。 (有关详细信息,请参见Google Developer文档)
基本上,您需要首先构建一个应用程序“ bundle”。为此,有许多步骤,但是基本上,您需要使应用程序处于建议的大小限制(10 MB)之内,并确保您没有使用任何不受支持的权限。如果您使用的是大型应用程序,则最好的方法是模块化功能,并且仅包含您想“即时”的那些功能。此应用程序的“即时”版本将是一个单独的Flavor,然后您可以在其中添加以下内容到与应用程序的Instant应用程序版本相对应的清单中。
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module dist:instant="true" />
...
</manifest>
完成此操作后,如果要使用CLI / Terminal进行构建,则需要使用新的bundle
版本的应用程序进行构建。您可以运行./gradlew tasks
来查看可用的选项,也可以运行./gradlew bundle
来运行所有选项。
接下来,要测试以确保您的应用程序捆绑包正确完成,您将需要更多工具。 bundletool(由Google here提供)和ia
工具位于您的$ANDROID_HOME/extras/google/instantapps/
目录中。 (只需在您的路径上打一下或在其上指向一个别名)。
使用这两种工具,您将需要访问即时应用程序的签名密钥。我没有尝试过,但是您可以使用debug
签名密钥进行测试。为了快速演示如何使用CLI
来构建密钥,您可以开始:
apksigner sign --ks my-instant-app-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
注意:请勿将其用于生产,这只是演示。
现在,我们可以为我们的应用包构建APK并对其进行签名。
$ java -jar bundletool-all-*.jar build-apks \
//1
--bundle=app.aab \
//2
--output=app.apks \
//3
--connected-device \
//4
--ks=your-keystore-path \
//5
--ks-pass=pass:your-keystore-password \
//6
--ks-key-alias=your-key-alias \
//7
--key-pass=pass:your-key-password
注意:以上内容取自以下tutorial。
接下来,通过运行以下命令检查即时应用程序是否正确完成:
ia check instant-app.apks
s
末尾的apks
不是错字。如果全部签出,则可以使用以下命令运行该应用程序:
ia run instant-app.apks
希望这会有所帮助!