Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单一应用的多种产品风格_Java_Android_Android Studio_Gradle_Android Productflavors - Fatal编程技术网

Java 单一应用的多种产品风格

Java 单一应用的多种产品风格,java,android,android-studio,gradle,android-productflavors,Java,Android,Android Studio,Gradle,Android Productflavors,我在android开发页面上查看“产品风格”,并希望探索我的选择,因为我必须将现有的应用程序转换为一个可以根据多个客户端的需求轻松修改的应用程序 考虑到这一点,我尝试引入一种产品风格,但每当我尝试在1-2个活动之后运行它时,屏幕就会空白,默认背景设置就绪,并且在adb控制台上会出现很多class def not found错误 我的项目结构如下所示: /app/src/main/ /app/src/main/assets/ /app/src/main/java/ /app/src/main/jn

我在android开发页面上查看“产品风格”,并希望探索我的选择,因为我必须将现有的应用程序转换为一个可以根据多个客户端的需求轻松修改的应用程序

考虑到这一点,我尝试引入一种产品风格,但每当我尝试在1-2个活动之后运行它时,屏幕就会空白,默认背景设置就绪,并且在adb控制台上会出现很多class def not found错误

我的项目结构如下所示:

/app/src/main/
/app/src/main/assets/
/app/src/main/java/
/app/src/main/jniLibs/
/app/src/main/res/
/app/src/main/AndroidManifest.xml

/app/src/productflavor/
/app/src/productflavor/res
/app/src/productflavor/res/values/
/app/src/productflavor/res/values/strings.xml

这个strings.xml^只有一个很好的更改,即更改“app_name”值以更改应用程序的名称

到目前为止,我所想的是,来自“main”源目录的文件与来自flavor分支的文件一起被包含(合并?),那么来自main的文件不应该自动地被用于产品flavor的目录吗

关于运行时未找到类def的错误:

-如果我将“res”文件夹中的所有资源(即所有图像/字符串等)复制粘贴到flavor的res目录中,这将破坏使用公共代码库的目的,并引入代码冗余


-我是否应该将现有代码作为一个模块,然后只使用我的独立产品风格(即/app/src/main/*)并使用gradle中的compile标记编译并按原样包含模块?我认为我可以在特定的风格中使用自定义布局文件,但如果将来我需要在现有类中为特定的风格对应用程序的功能进行更改,那么我将如何确保它工作并且不影响其他风格的功能?

处理产品风味的方法是将风味共享的任何资源保留在主目录中,但它们有不同之处必须分离到每个风味各自的目录中。如果活动中有特定于flavor的内容,则必须将其从/main中删除,并将这两个版本放在每个flavors等效目录中。

获得哪个类的ClassDefNotFoundError以及该类的Java文件在源代码树中的位置?