风格:运行 来自 Android Studio 失败 - 运行 来自设备工作
FLAVOR: run from Android Studio fails - run from device works
我正在尝试在不同的口味中使用相同的 activity
名称,并为每种口味安装正确的名称。
build.gradle :
android {
....
buildscript {
productFlavors {
flavor1 {
applicationId "com.example.MyApp.flavor1"
}
flavor2 {
applicationId "com.example.MyApp.flavor2"
}
flavor3 {
applicationId "com.example.MyApp.flavor3"
}
}
}
}
AndroidMAnifest.xml :
<activity
android:name="${applicationId}.LaunchActivity"
android:noHistory="false" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="*"
android:path="*"
android:scheme="@string/app_scheme_name" />
</intent-filter>
...
<\activity>
并且每个 flavorX.java 看起来像这样:
package com.example.MyApp.flavorX;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.example.MyApp.MainActivity;
public class LaunchActivity extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
String flavor = "~~~ flavorX ~~~~";
Log.i("flavor", flavor);
super.onCreate(savedInstanceState);
Toast.makeText(this, flavor,Toast.LENGTH_SHORT).show();
}
}
现在...
对于每种口味,我 运行(及其 build variant
)按 A.S。 "green play button" 这些事情发生了:
1.构建+编译成功结束。
2. 在 Run
视图选项卡上我收到此消息:
Installing com.example.MyApp.flavorX
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.MyApp.flavorX"
pkg: /data/local/tmp/com.example.MyApp.flavorX
Success
Could not identify launch activity: Default Activity not found
3. 正在使用正确的图标和名称在设备上安装该应用程序。
4. 当按下刚刚安装的图标时(=运行ning 从设备)- 一切正常 并且应用程序正常运行根据要求 - 每个安装都有自己的风格。
这对于调试和流畅的开发来说非常糟糕...
我应该怎么做才能 运行 通过 A.S 每种口味及其变体??
谢谢:)
一切看起来都很好。查看您的日志默认 activity 无法加载,这意味着您忘记将 Intent-Filter 添加到您在 Android Manifest.xml 中注册的第一个 activity。
<activity
android:name=".YourFirstActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.Main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
嗯,问题很容易解决
为了直接从 Android Studio 中 运行 每种口味,我必须在 运行 -> 编辑配置 -> Android 应用程序下声明 Specified Activity
您想要直接从 Android Studio 中 运行 的每种口味都需要此解决方案。
我正在尝试在不同的口味中使用相同的 activity
名称,并为每种口味安装正确的名称。
build.gradle :
android {
....
buildscript {
productFlavors {
flavor1 {
applicationId "com.example.MyApp.flavor1"
}
flavor2 {
applicationId "com.example.MyApp.flavor2"
}
flavor3 {
applicationId "com.example.MyApp.flavor3"
}
}
}
}
AndroidMAnifest.xml :
<activity
android:name="${applicationId}.LaunchActivity"
android:noHistory="false" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="*"
android:path="*"
android:scheme="@string/app_scheme_name" />
</intent-filter>
...
<\activity>
并且每个 flavorX.java 看起来像这样:
package com.example.MyApp.flavorX;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.example.MyApp.MainActivity;
public class LaunchActivity extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
String flavor = "~~~ flavorX ~~~~";
Log.i("flavor", flavor);
super.onCreate(savedInstanceState);
Toast.makeText(this, flavor,Toast.LENGTH_SHORT).show();
}
}
现在...
对于每种口味,我 运行(及其 build variant
)按 A.S。 "green play button" 这些事情发生了:
1.构建+编译成功结束。
2. 在 Run
视图选项卡上我收到此消息:
Installing com.example.MyApp.flavorX
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.MyApp.flavorX"
pkg: /data/local/tmp/com.example.MyApp.flavorX
Success
Could not identify launch activity: Default Activity not found
3. 正在使用正确的图标和名称在设备上安装该应用程序。
4. 当按下刚刚安装的图标时(=运行ning 从设备)- 一切正常 并且应用程序正常运行根据要求 - 每个安装都有自己的风格。
这对于调试和流畅的开发来说非常糟糕...
我应该怎么做才能 运行 通过 A.S 每种口味及其变体??
谢谢:)
一切看起来都很好。查看您的日志默认 activity 无法加载,这意味着您忘记将 Intent-Filter 添加到您在 Android Manifest.xml 中注册的第一个 activity。
<activity
android:name=".YourFirstActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.Main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
嗯,问题很容易解决
为了直接从 Android Studio 中 运行 每种口味,我必须在 运行 -> 编辑配置 -> Android 应用程序下声明 Specified Activity
您想要直接从 Android Studio 中 运行 的每种口味都需要此解决方案。