android - Android Gradle Build Variant Deploy

标签 android deployment gradle android-studio

我刚刚在Android Studio中使用Gradle设置了构建变体。对于典型的演示/专业设置,这将是多么幸运。我能够很好地启动我的“demoDebug”应用程序。当我以相同的配置切换到'proDebug'和'Run'时,它可以很好地安装pro应用,但启动时会崩溃:

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.anthonymandra.rawdroidpro/com.anthonymandra.rawdroid.RawDroid } Error type 3 Error: Activity class {com.anthonymandra.rawdroidpro/com.anthonymandra.rawdroid.RawDroid} does not exist.



如果然后转到仪表板,则可以启动专业版,它可以按预期运行。因此,安装适用于适当的版本;在启动中(专业版)只有一些错误。

build.gradle口味:
productFlavors {
    demo {
        packageName "com.anthonymandra.rawdroid"
    }

    pro {
        packageName "com.anthonymandra.rawdroidpro"
    }

    proAmazon {
        packageName "com.anthonymandra.rawdroidpro"
    }
}

更新资料

清理与该问题无关的无关信息

当我反编译apk时,我确认在Android.manifest中没有实现gradle替代。

最佳答案

首先,您应该以类似的方式使用packagename(推荐的方法不是强制性的):

youractualapplicationpackage.flavorname

但是,您可以根据自己的喜好随意使用packagname:
productFlavors {
    demo {
        packageName "com.anthonymandra.rawdroiddemo"
    }

    pro {
        packageName "com.anthonymandra.rawdroidpro"
    }

    proAmazon {
        packageName "com.anthonymandra.rawdroidpro"
    }
}

确保 com.anthonymandra.rawdroid 是main / java目录中应用程序的Java包。

您的 AndroidManifest.xml 应该像这样(仅在主目录内部):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.anthonymandra.rawdroid" >

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

    <activity
      android:name=".RawDroid"
      android:configChanges="keyboardHidden|orientation|screenSize"
      android:label="@string/app_name"
      android:theme="@style/GalleryTheme" >
        <intent-filter>
           <action android:name="android.intent.action.MAIN" />

           <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
 </activity>

</application>

</manifest>

它应该仅在 main 目录中,而不能在其他任何地方。

在编译时,gradle将进行必要的包名称更改,并进行构建。

同样在我的机器上也能正常工作,我能够在设备中看到两种不同口味的两个不同应用程序。

关于android - Android Gradle Build Variant Deploy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21820961/

相关文章:

android - 是否可以使用 Kotlin 将对象表达式用于 AsyncTask 声明/初始化?

android - 通过蓝牙连接 Web 浏览器

Angular 6.4.1 环境构建不起作用

android - 在项目目录下找不到应用程序build.gradle文件

android - Firebase runTransaction 不工作 - MutableData 为空

android - 适用于 android 和 iphone 的 RabbitMQ 或 ActiveMQ

mongodb - 如何在Digitalocean中使用另一个droplet的mongodb

vb.net - 我想要在 VB.net 中发布还是发布版本?

android - connectedAndroidTest - 任务尚未声明任何输出

java - 无法将“导出”识别为内部或外部命令,