书架更新排序逻辑

This commit is contained in:
mwang 2019-07-15 20:57:26 +08:00
parent 7e820840fe
commit 6e4e60e984
9 changed files with 252 additions and 185 deletions

View File

@ -17,8 +17,8 @@ android {
// applicationId "com.zhushou.yueshu" // applicationId "com.zhushou.yueshu"
minSdkVersion 19 //target 19 Android 4.4 4.1% minSdkVersion 19 //target 19 Android 4.4 4.1%
targetSdkVersion 28 targetSdkVersion 28
versionCode 6 versionCode 1
versionName "v6.0" versionName "v1.0"
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@ -62,7 +62,7 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
// versionCode 1 // versionCode 1
// versionName "v1.0" // versionName "v1.0"
/* applicationVariants.all { variant -> applicationVariants.all { variant ->
variant.outputs.all { output -> variant.outputs.all { output ->
def outFile = output.outputFile def outFile = output.outputFile
if (outFile != null && outFile.name.endsWith(".apk")) { if (outFile != null && outFile.name.endsWith(".apk")) {
@ -71,14 +71,14 @@ android {
outputFileName = fileName; outputFileName = fileName;
} }
} }
}*/ }
signingConfig signingConfigs.releaseConfig signingConfig signingConfigs.releaseConfig
} }
} }
// //
productFlavors { productFlavors {
// googleplay {} // googleplay {}
/* g { g {
applicationId "com.zhushou.yueshu" applicationId "com.zhushou.yueshu"
versionName "v1.0" versionName "v1.0"
buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"' buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"'
@ -88,7 +88,7 @@ android {
// //
productFlavors.all { flavor -> productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}*/ }
/* google { /* google {
applicationId "com.zhushou.yueshu" applicationId "com.zhushou.yueshu"
versionName "v1.0" versionName "v1.0"

View File

@ -197,8 +197,8 @@
<meta-data <meta-data
android:name="UMENG_APPKEY" android:name="UMENG_APPKEY"
android:value="5cd6238a570df375c3000cc9" /> <!-- <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> --> android:value="5cd6238a570df375c3000cc9" /> <!-- <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> -->
<meta-data android:name="UMENG_CHANNEL" android:value="debug" /> <!--<meta-data android:name="UMENG_CHANNEL" android:value="debug" />-->
<!--<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
<!-- google ad--> <!-- google ad-->
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --> <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data <meta-data

View File

@ -343,7 +343,12 @@ public class CatalogFragment extends BasicFragment implements MarkActivity.Sortc
return; return;
if (mProgressDialog2.isShowing()) { if (mProgressDialog2.isShowing()) {
try {
mProgressDialog2.dismiss(); mProgressDialog2.dismiss();
}catch (Exception e){
Log.e(TAG, "hideProgressSelf: ",e );
}
} }
mSwipeRefresh.setRefreshing(false); mSwipeRefresh.setRefreshing(false);
} }

View File

@ -211,6 +211,7 @@ public class Fragment_Shelf extends BasicFragment {
public void onFault(String errorMsg) { public void onFault(String errorMsg) {
//失败 //失败
Log.d(TAG, "error on get novel update list: " + errorMsg); Log.d(TAG, "error on get novel update list: " + errorMsg);
Toast.makeText(activity,"获取更新服务失败",Toast.LENGTH_SHORT).show();
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
} }
}; };
@ -426,7 +427,8 @@ public class Fragment_Shelf extends BasicFragment {
if(option!= Constants.SHELF_ORDER) { if(option!= Constants.SHELF_ORDER) {
Constants.SHELF_ORDER = option; Constants.SHELF_ORDER = option;
config.setShelfOrderOption(option); config.setShelfOrderOption(option);
getUpdatedData(); // getUpdatedData();
loadLocalData();
} }
} }
@ -442,6 +444,10 @@ public class Fragment_Shelf extends BasicFragment {
private void initDialog(int position) { private void initDialog(int position) {
Log.d(TAG, "initDialog: onlongclick " + bookLists.get(position).getName() );
bottomSheetDialog = new BottomSheetDialog(this.activity); bottomSheetDialog = new BottomSheetDialog(this.activity);
bottomSheetDialog.setContentView(R.layout.fragment_shelf_botoomsheetdialog); bottomSheetDialog.setContentView(R.layout.fragment_shelf_botoomsheetdialog);
//给布局设置透明背景色 //给布局设置透明背景色
@ -867,7 +873,10 @@ public class Fragment_Shelf extends BasicFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
loadLocalData();
getUpdatedData(); getUpdatedData();
if (bottomSheetDialog != null) { if (bottomSheetDialog != null) {
@ -882,6 +891,11 @@ public class Fragment_Shelf extends BasicFragment {
MobclickAgent.onPageEnd(TAG); MobclickAgent.onPageEnd(TAG);
} }
void loadLocalData(){
loadNovelsOnShelf();
fillData();
}
//----------toutiao ad //----------toutiao ad

View File

@ -44,7 +44,8 @@ public class Fragment_booklist extends BasicFragment {
private static final String EXTR_CID = "cid"; private static final String EXTR_CID = "cid";
private BookListAdapter mAdapter; private BookListAdapter mAdapter;
// private BookListAdapter mAdapter; // private BookListAdapter mAdapter;
private List mData;; private List mData;
;
private List mMoreData; private List mMoreData;
private String cate; private String cate;
private int progress, cid; private int progress, cid;
@ -67,6 +68,7 @@ public class Fragment_booklist extends BasicFragment {
public Fragment_booklist() { public Fragment_booklist() {
// Required empty public constructor // Required empty public constructor
} }
public static Fragment_booklist newInstance(int cid, String bangdan) { public static Fragment_booklist newInstance(int cid, String bangdan) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
@ -75,6 +77,7 @@ public class Fragment_booklist extends BasicFragment {
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist newInstance(String fn, String bangdan) { public static Fragment_booklist newInstance(String fn, String bangdan) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
@ -83,6 +86,7 @@ public class Fragment_booklist extends BasicFragment {
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist newInstance(String noveType, int progress) { public static Fragment_booklist newInstance(String noveType, int progress) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
@ -91,6 +95,7 @@ public class Fragment_booklist extends BasicFragment {
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist search(String keyWord) { public static Fragment_booklist search(String keyWord) {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
@ -99,6 +104,7 @@ public class Fragment_booklist extends BasicFragment {
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
public static Fragment_booklist history() { public static Fragment_booklist history() {
Fragment_booklist fragment = new Fragment_booklist(); Fragment_booklist fragment = new Fragment_booklist();
Bundle args = new Bundle(); Bundle args = new Bundle();
@ -107,6 +113,7 @@ public class Fragment_booklist extends BasicFragment {
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
protected void processArguments() { protected void processArguments() {
if (getArguments() != null) { if (getArguments() != null) {
Bundle bundle = getArguments(); Bundle bundle = getArguments();
@ -128,6 +135,7 @@ public class Fragment_booklist extends BasicFragment {
} }
int lastPageNo = 0; int lastPageNo = 0;
@Override @Override
protected void fillData() { protected void fillData() {
@ -137,7 +145,6 @@ public class Fragment_booklist extends BasicFragment {
} }
if (mMoreData != null) { if (mMoreData != null) {
if (mMoreData.size() > 0) { if (mMoreData.size() > 0) {
pageNo++; pageNo++;
@ -148,6 +155,8 @@ public class Fragment_booklist extends BasicFragment {
mAdapter.changeMoreStatus(status); mAdapter.changeMoreStatus(status);
mMoreData.clear(); mMoreData.clear();
} }
mAdapter.setNorecord(R.string.noRecord);
} }
@Override @Override
@ -156,9 +165,9 @@ public class Fragment_booklist extends BasicFragment {
} }
@Override @Override
public void initData() { public void initData() {
if (pageNo > 1) { if (pageNo > 1) {
if (lastPageNo == pageNo) { if (lastPageNo == pageNo) {
return; return;
@ -179,6 +188,11 @@ public class Fragment_booklist extends BasicFragment {
initialDataAdapter(); initialDataAdapter();
} }
} }
if (mAdapter != null) {
mAdapter.setNorecord(R.string.msgLoading);
}
/* if(mAdapter!=null){ /* if(mAdapter!=null){
mAdapter.changeMoreStatus(BookListAdapter.LOADING_MORE); mAdapter.changeMoreStatus(BookListAdapter.LOADING_MORE);
}*/ }*/
@ -190,7 +204,8 @@ public class Fragment_booklist extends BasicFragment {
// mFirstPage= gson.fromJson(result, FirstPage.class); // mFirstPage= gson.fromJson(result, FirstPage.class);
try { try {
JSONObject jsonObject = new JSONObject(result); JSONObject jsonObject = new JSONObject(result);
setPageCount(jsonObject.getInt("pageCount")); ; setPageCount(jsonObject.getInt("pageCount"));
;
List<Novel> list = GsonUtil.parserJsonArray(jsonObject, Constants.BLOCK_TITLE_NOVELS); List<Novel> list = GsonUtil.parserJsonArray(jsonObject, Constants.BLOCK_TITLE_NOVELS);
mMoreData = new ArrayList<Novel>(); mMoreData = new ArrayList<Novel>();
for (Novel novel : list) { for (Novel novel : list) {
@ -203,7 +218,8 @@ public class Fragment_booklist extends BasicFragment {
loadListAd(mAdapter, 1, mData.size() > 0); loadListAd(mAdapter, 1, mData.size() > 0);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); Log.e(TAG, "onSuccess: 解析失败",e ); e.printStackTrace();
Log.e(TAG, "onSuccess: 解析失败", e);
} }
handler.sendEmptyMessage(1); handler.sendEmptyMessage(1);
@ -231,7 +247,8 @@ public class Fragment_booklist extends BasicFragment {
try { try {
JSONObject jsonObject = new JSONObject(result); JSONObject jsonObject = new JSONObject(result);
String resultstr = jsonObject.getString("rank"); String resultstr = jsonObject.getString("rank");
setPageCount(jsonObject.getJSONObject("rank").getInt("pageCount")); ; setPageCount(jsonObject.getJSONObject("rank").getInt("pageCount"));
;
List<Novel> list = GsonUtil.parserJsonArray(resultstr, Constants.BLOCK_TITLE_NOVELS); List<Novel> list = GsonUtil.parserJsonArray(resultstr, Constants.BLOCK_TITLE_NOVELS);
mMoreData = new ArrayList<Novel>(); mMoreData = new ArrayList<Novel>();
for (Novel novel : list) { for (Novel novel : list) {
@ -242,9 +259,6 @@ public class Fragment_booklist extends BasicFragment {
} }
Log.d(TAG, "排行榜详细 onSuccess: pageCount " + getPageCount()); Log.d(TAG, "排行榜详细 onSuccess: pageCount " + getPageCount());
if (mMoreData.size() > 0) { if (mMoreData.size() > 0) {
loadListAd(mAdapter, 1, mData.size() > 0); loadListAd(mAdapter, 1, mData.size() > 0);
@ -272,8 +286,7 @@ public class Fragment_booklist extends BasicFragment {
// showProgressDialog(true, "正在加载更多"); // showProgressDialog(true, "正在加载更多");
BookSubscribe.getNovelPaihang(fn, pageNo, Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); BookSubscribe.getNovelPaihang(fn, pageNo, Constants.SEX, new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
} } else if (!TextUtils.isEmpty((cate))) { //分类
else if(!TextUtils.isEmpty((cate))) { //分类
mAdapter.setShowTop(true); mAdapter.setShowTop(true);
// showProgressDialog(true, "正在加载分类"); // showProgressDialog(true, "正在加载分类");
BookSubscribe.getCateNovelList(cate, pageNo, Constants.SEX, progress, new OnSuccessAndFaultSub(successAndFaultListener, getActivity())); BookSubscribe.getCateNovelList(cate, pageNo, Constants.SEX, progress, new OnSuccessAndFaultSub(successAndFaultListener, getActivity()));
@ -333,6 +346,7 @@ public class Fragment_booklist extends BasicFragment {
void initialBookList() { void initialBookList() {
} }
@Override @Override
public void setFTag() { public void setFTag() {
@ -342,6 +356,7 @@ public class Fragment_booklist extends BasicFragment {
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
int lastVisibleItem; int lastVisibleItem;
@Override @Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) { public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState); super.onScrollStateChanged(recyclerView, newState);
@ -375,6 +390,7 @@ public class Fragment_booklist extends BasicFragment {
}); });
} }
void loadHistory() { void loadHistory() {
initialDataAdapter(); initialDataAdapter();
new Thread() { new Thread() {
@ -392,7 +408,9 @@ public class Fragment_booklist extends BasicFragment {
} }
}.start(); }.start();
} }
boolean isFirstLoad = true; boolean isFirstLoad = true;
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
@ -415,7 +433,4 @@ public class Fragment_booklist extends BasicFragment {
} }
} }

View File

@ -104,7 +104,9 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
} }
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
if(mAdapter!=null) {
mAdapter.setNorecord(R.string.noRecord);
}
} }
public static Fragment_paihang newInstance(String param1, String param2) { public static Fragment_paihang newInstance(String param1, String param2) {
@ -131,15 +133,18 @@ public static final String TAG = Fragment_paihang.class.getSimpleName();
@Override @Override
public void initData() { public void initData() {
loadSearchData(); loadSearchData();
} }
private void loadSearchData(){ private void loadSearchData(){
if(mAdapter!=null) {
try{ mAdapter.setNorecord(R.string.msgLoading);
}
/* try{
throw new Exception(); throw new Exception();
}catch (Exception e){ }catch (Exception e){
Log.e(TAG, "loadSearchData: ", e); Log.e(TAG, "loadSearchData: ", e);
} }*/
int pn = pageNo; int pn = pageNo;

View File

@ -502,11 +502,11 @@ public class BookUtil {
public void setChapterNo(int chapterNo) { public void setChapterNo(int chapterNo) {
try{ /* try{
throw new Exception(); throw new Exception();
}catch (Exception e){ }catch (Exception e){
Log.e(TAG, "prepare book setChapterNo: who set chaptno "+ chapterNo,e ); Log.e(TAG, "prepare book setChapterNo: who set chaptno "+ chapterNo,e );
} }*/
this.chapterNo = chapterNo; this.chapterNo = chapterNo;
@ -527,6 +527,9 @@ public class BookUtil {
return mChangeChapId; return mChangeChapId;
} }
// chapterNo=1; // chapterNo=1;
if(mChapters.size()>0){
return 1;
}
} }
chapterNo = chapterNo<=0 ?1 :chapterNo; chapterNo = chapterNo<=0 ?1 :chapterNo;

View File

@ -187,20 +187,17 @@ public class GsonUtil {
//遍历JsonArray对象 //遍历JsonArray对象
Iterator it = jsonArray.iterator(); Iterator it = jsonArray.iterator();
// int lastNoveId =0;
List<Integer> ids = new ArrayList<Integer>(); List<Integer> ids = new ArrayList<Integer>();
while (it.hasNext()) { while (it.hasNext()) {
JsonElement e = (JsonElement) it.next(); JsonElement e = (JsonElement) it.next();
//JsonElement转换为JavaBean对象 //JsonElement转换为JavaBean对象
Novel nv = (Novel) gson.fromJson(e, Novel.class); Novel nv = (Novel) gson.fromJson(e, Novel.class);
if(ids.contains(nv.getNovelId())){ if (nv == null || ids.contains(nv.getNovelId())) {
continue; continue;
} }
ids.add(nv.getNovelId()); ids.add(nv.getNovelId());
// lastNoveId =nv.getNovelId();
if(nv!=null) {
list.add((Novel) gson.fromJson(e, Novel.class)); list.add((Novel) gson.fromJson(e, Novel.class));
}
} }
return list; return list;
} }

View File

@ -8,39 +8,81 @@
</facet> </facet>
<facet type="android" name="Android"> <facet type="android" name="Android">
<configuration> <configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" /> <option name="SELECTED_BUILD_VARIANT" value="gDebug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> <option name="ASSEMBLE_TASK_NAME" value="assembleGDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> <option name="COMPILE_JAVA_TASK_NAME" value="compileGDebugSources" />
<afterSyncTasks> <afterSyncTasks>
<task>generateDebugSources</task> <task>generateGDebugSources</task>
</afterSyncTasks> </afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" /> <option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/resValues/debug" /> <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/resValues/g/debug" />
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" /> <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration> </configuration>
</facet> </facet>
</component> </component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" /> <output url="file://$MODULE_DIR$/build/intermediates/javac/gDebug/compileGDebugJavaWithJavac/classes" />
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" /> <output-test url="file://$MODULE_DIR$/build/intermediates/javac/gDebugUnitTest/compileGDebugUnitTestJavaWithJavac/classes" />
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/g/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/gDebug/compileGDebugAidl/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/g/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/gDebug/compileGDebugRenderscript/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/g/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/g/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/src/gDebug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/g/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/gDebugAndroidTest/compileGDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/g/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/gDebugAndroidTest/compileGDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/g/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/g/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestGDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/g/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testGDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/g/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/g/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/g/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/g/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/g/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/g/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/g/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestG/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testG/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
@ -88,26 +130,16 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/duplicate_classes_check" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_main_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_aapt_derived_proguard_rules" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/legacy_multidex_main_dex_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_jni_libs" />
@ -118,15 +150,11 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-files" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-files" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res_stripped" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res_stripped" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/outputs" />