修正url过滤问题
This commit is contained in:
parent
fcb43d9a33
commit
c92fd2e52d
|
@ -17,8 +17,8 @@ android {
|
|||
// applicationId "com.zhushou.yueshu"
|
||||
minSdkVersion 19 //target 19 Android 4.4 以下版本仅占比4.1%
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "v1.0"
|
||||
versionCode 6
|
||||
versionName "v6.0"
|
||||
|
||||
// testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
@ -62,7 +62,7 @@ android {
|
|||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
// versionCode 1
|
||||
// versionName "v1.0"
|
||||
applicationVariants.all { variant ->
|
||||
/* applicationVariants.all { variant ->
|
||||
variant.outputs.all { output ->
|
||||
def outFile = output.outputFile
|
||||
if (outFile != null && outFile.name.endsWith(".apk")) {
|
||||
|
@ -71,21 +71,24 @@ android {
|
|||
outputFileName = fileName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
signingConfig signingConfigs.releaseConfig
|
||||
}
|
||||
}
|
||||
//渠道
|
||||
productFlavors {
|
||||
// googleplay {}
|
||||
g {
|
||||
/* g {
|
||||
applicationId "com.zhushou.yueshu"
|
||||
versionName "v1.0"
|
||||
buildConfigField "String", "MAIN_HOST", '"http://g.xiaoshuofenxiang.com/api/"'
|
||||
buildConfigField "String", "API_HOST", '""'
|
||||
|
||||
}
|
||||
|
||||
//批量配置
|
||||
productFlavors.all { flavor ->
|
||||
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
|
||||
}*/
|
||||
/* google {
|
||||
applicationId "com.zhushou.yueshu"
|
||||
versionName "v1.0"
|
||||
|
@ -93,10 +96,7 @@ android {
|
|||
buildConfigField "String", "API_HOST", '""'
|
||||
}*/
|
||||
|
||||
//批量配置
|
||||
productFlavors.all { flavor ->
|
||||
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
android {
|
||||
|
|
|
@ -197,8 +197,8 @@
|
|||
<meta-data
|
||||
android:name="UMENG_APPKEY"
|
||||
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="${UMENG_CHANNEL_VALUE}" />
|
||||
<meta-data android:name="UMENG_CHANNEL" android:value="debug" />
|
||||
<!--<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />-->
|
||||
<!-- google ad-->
|
||||
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
|
||||
<meta-data
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.support.v7.widget.RecyclerView;
|
|||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.TextureView;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
|
@ -95,7 +96,17 @@ public class Activity_ChgSource extends Activity_base {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
mSites = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites()));
|
||||
ArrayList<Site> tmp = new ArrayList<Site>(Arrays.asList(pageFactory.getNovelSites().getSites()));
|
||||
|
||||
for(Site site : tmp){
|
||||
if(!TextUtils.isEmpty(site.getMuluUrl())){
|
||||
mSites.add(site);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
handler.sendEmptyMessage(1);
|
||||
}}.start();;
|
||||
|
||||
|
|
|
@ -334,11 +334,11 @@ public class CatalogFragment extends BasicFragment implements MarkActivity.Sortc
|
|||
|
||||
public void hideProgressSelf() {
|
||||
Log.d(TAG, "prepare book hideProgress2 called" );
|
||||
try{
|
||||
/* try{
|
||||
throw new Exception("who dismissed");
|
||||
}catch (Exception e){
|
||||
Log.e(TAG, "prepare book hideProgress2: ", e);
|
||||
}
|
||||
}*/
|
||||
if (mProgressDialog2 == null)
|
||||
return;
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ public class Fragment_Shelf extends BasicFragment {
|
|||
@Override
|
||||
public void onFault(String errorMsg) {
|
||||
//失败
|
||||
Log.d(TAG, "error on get firstpage: " + errorMsg);
|
||||
Log.d(TAG, "error on get novel update list: " + errorMsg);
|
||||
handler.sendEmptyMessage(1);
|
||||
}
|
||||
};
|
||||
|
@ -793,6 +793,7 @@ public class Fragment_Shelf extends BasicFragment {
|
|||
public void onResume() {
|
||||
super.onResume();
|
||||
getUpdatedData();
|
||||
|
||||
if (bottomSheetDialog != null) {
|
||||
bottomSheetDialog.hide();
|
||||
}
|
||||
|
|
|
@ -341,15 +341,15 @@ public void testUpdate(){
|
|||
lastUpdateTime - nv.lastUpdateTime
|
||||
|
||||
) );
|
||||
// isUpdated = isUpdated && !(!TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && (chapterName.equals(nv.lastReadChaptName) ));
|
||||
// boolean isLastReadchaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.lastReadChaptName) && !(chapterName.equals(nv.lastReadChaptName));
|
||||
boolean isLastReadchaptUpdated = TextUtils.isEmpty(nv.lastReadChaptName) || !(chapterName.equals(nv.lastReadChaptName)); //没看过最新章节
|
||||
/* boolean isLastReadchaptUpdated = TextUtils.isEmpty(nv.lastReadChaptName) || !(chapterName.equals(nv.lastReadChaptName)); //没看过最新章节
|
||||
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.equals(nv.chapterName));
|
||||
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername %s,chaptername %s,lastreadchapt %s" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
||||
|
||||
isUpdated = isUpdated && isLastReadchaptUpdated || isLastChaptUpdated ;
|
||||
|
||||
Log.d("Novel", String.format( " isupdated %s, server lastUpdateTime isLastReadchaptUpdated %s,isLastChaptUpdated %s" ,isUpdated,isLastReadchaptUpdated,isLastChaptUpdated ) );
|
||||
*/
|
||||
|
||||
if(!isUpdated){
|
||||
setToDefault("isUpdated");
|
||||
}
|
||||
|
|
|
@ -249,30 +249,48 @@ public class BookUtil {
|
|||
|
||||
Log.d(TAG, String.format("prepare book %s get novel sites count %s .",mNovel.getName(), nvs.getSites().length) );
|
||||
if(nvs.getSites().length ==0){
|
||||
throw new RuntimeException("书本错误 code 001"); //无目标网站
|
||||
throw new RuntimeException("书本错误 no site, code 001"); //无目标网站
|
||||
// return;
|
||||
}
|
||||
|
||||
mSite =null;
|
||||
if(nvs.getSites().length > 0){
|
||||
for (Site site:nvs.getSites() ) {
|
||||
if(TextUtils.isEmpty(site.getMuluUrl())){
|
||||
continue;
|
||||
}
|
||||
if(!TextUtils.isEmpty(mNovel.getDomain()) && site.getDomain().equals(mNovel.getDomain())){
|
||||
mSite = site;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(mSite ==null)
|
||||
for (Site site:nvs.getSites() ) {
|
||||
if(site.getSelectedByDefault()){
|
||||
if(mSite ==null) {
|
||||
for (Site site : nvs.getSites()) {
|
||||
if(TextUtils.isEmpty(site.getMuluUrl())){
|
||||
continue;
|
||||
}
|
||||
if (site.getSelectedByDefault()) {
|
||||
mSite = site;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(mSite ==null)
|
||||
mSite =nvs.getSites()[0];
|
||||
}
|
||||
|
||||
if(mSite ==null) {
|
||||
for (Site site : nvs.getSites()) {
|
||||
if(TextUtils.isEmpty(site.getMuluUrl())){
|
||||
continue;
|
||||
}
|
||||
mSite = site;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if(mSite!=null) {
|
||||
getSiteRule();
|
||||
}
|
||||
}
|
||||
|
||||
private void setSiteInfo() {
|
||||
|
||||
|
@ -865,6 +883,10 @@ int muluRetryCount =0;
|
|||
}
|
||||
String url = mSite.getMuluUrl();
|
||||
int maxAge= isForceRefresh ?0 : mNovel.getMaxAge();
|
||||
if(!isHttpOrHttps(url)){
|
||||
return ;
|
||||
}
|
||||
|
||||
Request request = getTagRequest(url,REUtil.getDomain(url),maxAge);
|
||||
|
||||
mMuluStatus = MuluStatus.isDownloading;
|
||||
|
@ -1761,6 +1783,14 @@ int muluRetryCount =0;
|
|||
return block;
|
||||
}
|
||||
|
||||
boolean isHttpOrHttps(String url){
|
||||
if(TextUtils.isEmpty(url) || !url.toLowerCase().startsWith("http") && !url.toLowerCase().startsWith("https")){
|
||||
Log.d(TAG, String.format("prepare book isHttpOrHttps: url % is bad for request ",url));
|
||||
return false ;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Map<Integer,Integer> fileRetryCnt = new HashMap<Integer,Integer>();
|
||||
private void loadChaptContent(final int chapterIndex) throws JSONException, InterruptedException {
|
||||
/* 章节内容没有缓存在本地
|
||||
|
@ -1797,6 +1827,11 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
|||
JSONObject siteJson = new JSONObject();
|
||||
siteJson.put("chapterContentRegex", mSiteRule.getChapterContentRegex());
|
||||
siteJson.put("chapterContentDumpRegex", mSiteRule.getChapterContentDumpRegex());
|
||||
|
||||
if(!isHttpOrHttps(url)){
|
||||
return ;
|
||||
}
|
||||
|
||||
Request request = getTagRequest(url, refUrl,-1);
|
||||
|
||||
|
||||
|
@ -1921,13 +1956,14 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
|||
*/
|
||||
private Request getTagRequest(String url, String refUrl ,int maxAge) {
|
||||
|
||||
try {
|
||||
Request.Builder builder = new Request.Builder()
|
||||
.tag(mNovel.getNovelId()) //标记 请求的tag,切换小说或离开小说界面(BookActivity) 时 取消未执行完毕的 此tag的所有请求
|
||||
.url(url)
|
||||
.removeHeader("Pragma");
|
||||
|
||||
if(!TextUtils.isEmpty(refUrl)){
|
||||
builder.header("Referer",refUrl);
|
||||
if (!TextUtils.isEmpty(refUrl)) {
|
||||
builder.header("Referer", refUrl);
|
||||
}
|
||||
|
||||
for (int i = 0; i < mSiteRule.getHeaders().length; i += 2) {
|
||||
|
@ -1935,13 +1971,13 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
|||
|
||||
}
|
||||
|
||||
if(mSiteRule.getUserAgents()!=null && mSiteRule.getUserAgents().length>0){
|
||||
String siteAgent =mSiteRule.getUserAgents()[new Random().nextInt( mSiteRule.getUserAgents().length-1)];
|
||||
if (mSiteRule.getUserAgents() != null && mSiteRule.getUserAgents().length > 0) {
|
||||
String siteAgent = mSiteRule.getUserAgents()[new Random().nextInt(mSiteRule.getUserAgents().length - 1)];
|
||||
|
||||
Log.d(TAG, "prepare book on getTagRequest:add site user agent " + siteAgent);
|
||||
builder.removeHeader("User-Agent").addHeader("User-Agent",siteAgent ); //加 随机agent
|
||||
builder.removeHeader("User-Agent").addHeader("User-Agent", siteAgent); //加 随机agent
|
||||
|
||||
}else{
|
||||
} else {
|
||||
builder.removeHeader("User-Agent").addHeader("User-Agent", HttpMethods.USERAGENT);
|
||||
}
|
||||
|
||||
|
@ -1949,7 +1985,10 @@ private void loadChaptContent(final int chapterIndex) throws JSONException, Inte
|
|||
builder.header("Cache-Control", "public, max-age=" + maxAge);
|
||||
}
|
||||
return builder.build();
|
||||
}catch (Exception er){
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getRequestHeader(Request request) {
|
||||
|
|
|
@ -22,7 +22,9 @@ import java.util.List;
|
|||
public class GsonUtil {
|
||||
|
||||
private static Gson gson = new Gson();
|
||||
public static Novel getNovel(String json){
|
||||
|
||||
public static List<String>
|
||||
/*public static Novel getNovel(String json){
|
||||
Novel nv = new Novel();
|
||||
try {
|
||||
JSONObject jsonObject = new JSONObject(json);
|
||||
|
@ -41,8 +43,7 @@ public class GsonUtil {
|
|||
e.printStackTrace();
|
||||
}
|
||||
return nv;
|
||||
}
|
||||
public static List<String> parserStringBlocks(String result,String blockName ) throws JSONException {
|
||||
}*/parserStringBlocks(String result,String blockName ) throws JSONException {
|
||||
JSONObject jsonObject = new JSONObject(result);
|
||||
JSONArray array = jsonObject.getJSONArray(blockName);
|
||||
List<String> lst = new ArrayList<String>();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.novelbook.android.utils;
|
||||
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.novelbook.android.db.Chapter;
|
||||
|
@ -279,6 +280,9 @@ public class NovelParseUtil {
|
|||
|
||||
|
||||
private static String access(String url,int maxAge, SiteRule siteRule) {
|
||||
if(TextUtils.isEmpty(url) || !url.toLowerCase().startsWith("http") || !url.toLowerCase().startsWith("https")){
|
||||
return "";
|
||||
}
|
||||
Request.Builder builder = new Request.Builder()
|
||||
// .tag(mNovel.getNovelId()) //标记 请求的tag,切换小说或离开小说界面(BookActivity) 时 取消未执行完毕的 此tag的所有请求
|
||||
.url(url)
|
||||
|
|
|
@ -1155,7 +1155,7 @@ private void hideSysUI(){
|
|||
// Log.d(TAG, strLine);
|
||||
// Log.d(TAG,"最后字符 。。。" +strLine.charAt(strLine.length()-1) + "");
|
||||
lastLine =strLine;
|
||||
strLine = strLine.replace("<EFBFBD>","");
|
||||
// strLine = strLine.replace("<EFBFBD>","");
|
||||
|
||||
if(lineNo==trPage.getNativeBannerStartLine()){
|
||||
if(showAd && mAd!=null){
|
||||
|
@ -1165,7 +1165,7 @@ private void hideSysUI(){
|
|||
// mAd.showNativeBannerInLines(trPage.getNativeBannerHeight(),(int)y);
|
||||
}
|
||||
y+=trPage.getNativeBannerHeight() +m_fontSize +lineSpace ;
|
||||
Log.d(TAG, String.format("onDraw showNativeBannerInLines : lineno %s,strline %s ",lineNo,strLine));
|
||||
// Log.d(TAG, String.format("onDraw showNativeBannerInLines : lineno %s,strline %s ",lineNo,strLine));
|
||||
space = m_fontSize + lineSpace;
|
||||
// y-=lineSpace;
|
||||
if (strLine.length() > 0 && (strLine.charAt(strLine.length() - 1) + "").equals("\n")) {
|
||||
|
@ -1197,7 +1197,7 @@ private void hideSysUI(){
|
|||
// Log.d(TAG,String.format("getNavigationBarSize mHeight is %s ,last line height %s, power %s, %s", //
|
||||
// mHeight,y,mHeight - CommonUtil.convertDpToPixel(mContext,10) + mBorderWidth - statusMarginBottom, lastLine));
|
||||
// lastLine =lastLine.trim().replace(Constants.BAD_CHAR,"");
|
||||
Log.d(TAG, String.format("onDraw: last line lenth %s,%s, ",lastLine.length() ,lastLine));
|
||||
// Log.d(TAG, String.format("onDraw: last line lenth %s,%s, ",lastLine.length() ,lastLine));
|
||||
float adHeight = mHeight -y - space -marginHeight-statusMarginBottom;
|
||||
float adY =y ;//+space;
|
||||
adY= lastLine.length()==0 ?adY-m_fontSize - lineSpace :adY;
|
||||
|
@ -1218,7 +1218,7 @@ private void hideSysUI(){
|
|||
|
||||
|
||||
// showAd((int) adHeight, (int) adY);
|
||||
Log.d(TAG, String.format("loadBannerAd: AD is requested, adtype %s, adHeight %s, ady %s",mAdType,adHeight,adY));
|
||||
// Log.d(TAG, String.format("loadBannerAd: AD is requested, adtype %s, adHeight %s, ady %s",mAdType,adHeight,adY));
|
||||
}
|
||||
// Log.d(TAG,String.format("ad + statusMarginBottom %s ",200+ statusMarginBottom));
|
||||
// Log.d(TAG,String.format("adHeight %s, adY %s",adHeight,adY));
|
||||
|
@ -1245,11 +1245,11 @@ private void hideSysUI(){
|
|||
c.drawText(strPercent, mWidth - nPercentWidth, botoomY, mBatterryPaint);//x y为坐标值
|
||||
c.drawText(date, marginWidth ,botoomY, mBatterryPaint);
|
||||
// 画电池
|
||||
Log.d(TAG, String.format("updateBattery to draw: level1 %s ",level));
|
||||
// Log.d(TAG, String.format("updateBattery to draw: level1 %s ",level));
|
||||
// level = batteryInfoIntent.getIntExtra( "level" , 0 );
|
||||
int scale = batteryInfoIntent.getIntExtra("scale", 100);
|
||||
mBatteryPercentage = (float) level / scale;
|
||||
Log.d(TAG, String.format("updateBattery to draw: level2 %s ",level));
|
||||
// Log.d(TAG, String.format("updateBattery to draw: level2 %s ",level));
|
||||
|
||||
float rect1Left = marginWidth + dateWith + statusMarginBottom;//电池外框left位置
|
||||
//画电池外框
|
||||
|
@ -1324,11 +1324,11 @@ private void hideSysUI(){
|
|||
}
|
||||
|
||||
public void showAd(){
|
||||
Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s ",mAdType ));
|
||||
// Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s ",mAdType ));
|
||||
if(mStatus == Status.LASTPAGE || mAd==null ||currentPage==null || !Constants.AD_SETTING.isShowAdsense()){
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s, pageNo %s",mAdType, currentPage.getPageNo()));
|
||||
// Log.d(TAG, String.format("loadBannerAd showAd: mAdType %s, pageNo %s",mAdType, currentPage.getPageNo()));
|
||||
if(mAdType ==AdTpye.BANNER){
|
||||
mAd.showTopBanner(mAdHeight,mAdY);
|
||||
}else if(mAdType == AdTpye.NATIVEINLINES){
|
||||
|
@ -1374,7 +1374,7 @@ private void hideSysUI(){
|
|||
}
|
||||
}
|
||||
|
||||
Log.d(TAG, "prepare book prePage: to open prepage: ");
|
||||
// Log.d(TAG, "prepare book prePage: to open prepage: ");
|
||||
cancelPage = currentPage;
|
||||
if(mBookPageWidget==null){
|
||||
return;
|
||||
|
@ -1384,13 +1384,13 @@ private void hideSysUI(){
|
|||
if(mBookPageWidget==null){
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
||||
// Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
||||
}else{
|
||||
if(mBookPageWidget==null){
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
||||
// Log.d(TAG, " prePage() onDraw: mBookPageWidget.getNextPage() ");
|
||||
currentPage = getPrePage();
|
||||
|
||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
||||
|
@ -1411,7 +1411,7 @@ private void hideSysUI(){
|
|||
return;
|
||||
}
|
||||
|
||||
Log.d(TAG, "prepare book nextPage:chaptid " +mBookUtil.getChapterNo());
|
||||
// Log.d(TAG, "prepare book nextPage:chaptid " +mBookUtil.getChapterNo());
|
||||
if (currentPage.getEnd() >= mBookUtil.getChapterLen()) {
|
||||
Log.d(TAG,"已经是本章最后一页了");
|
||||
File file =new File( mBookUtil.fileChapterName(currentChapter+1));
|
||||
|
@ -1470,9 +1470,9 @@ private void hideSysUI(){
|
|||
if(mBookPageWidget==null){
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getCurPage() ");
|
||||
// Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getCurPage() ");
|
||||
// onDraw(mBookPageWidget.getCurPage(),currentPage ,true,false);
|
||||
Log.d(TAG, "nextpage:set current bitmap ..ondraw");
|
||||
// Log.d(TAG, "nextpage:set current bitmap ..ondraw");
|
||||
prePage = currentPage;
|
||||
currentPage = getNextPage();
|
||||
mLoadingChaptNo=0;
|
||||
|
@ -1480,9 +1480,9 @@ private void hideSysUI(){
|
|||
if(mBookPageWidget==null){
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getNextPage() ");
|
||||
// Log.d(TAG, "nextPage() onDraw: mBookPageWidget.getNextPage() ");
|
||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,true,true);
|
||||
Log.d("nextPage","nextPagenext");
|
||||
// Log.d("nextPage","nextPagenext");
|
||||
|
||||
HashMap<String,String> map = new HashMap<String,String>();
|
||||
map.put("novel",bookName);
|
||||
|
@ -1510,6 +1510,7 @@ private void hideSysUI(){
|
|||
|
||||
public void prepareBook(Novel book){
|
||||
|
||||
|
||||
Log.d(TAG, "prepare book: start prepare book " + book.getName());
|
||||
|
||||
if(getNovel()!=null) {
|
||||
|
@ -1517,11 +1518,11 @@ private void hideSysUI(){
|
|||
try {
|
||||
NetUtil.cancelRequest(getNovel().getNovelId());
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "prepare book: error on canceling request " + e.getMessage());
|
||||
// Log.e(TAG, "prepare book: error on canceling request " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}else{
|
||||
Log.d(TAG, "prepare book: has been prepared, return.... " + book.getName());
|
||||
// Log.d(TAG, "prepare book: has been prepared, return.... " + book.getName());
|
||||
if(mBookUtil!=null) {
|
||||
return;
|
||||
}
|
||||
|
@ -1663,8 +1664,8 @@ private void hideSysUI(){
|
|||
public TRPage getNextPage(){
|
||||
|
||||
int nextPageNo =currentPage.getPageNo();
|
||||
Log.e(TAG,String.format("prepare book getNextPage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s,currentpage pageno is %s"
|
||||
,currentChapter, getChapters().size(), currentChaptPages.size() , nextPageNo));
|
||||
// Log.e(TAG,String.format("prepare book getNextPage() currentChapter %s, chapters().size() %s,currentChaptPages .size() is %s,currentpage pageno is %s"
|
||||
// ,currentChapter, getChapters().size(), currentChaptPages.size() , nextPageNo));
|
||||
if(nextPageNo==0){
|
||||
drawStatus();
|
||||
}
|
||||
|
@ -1690,7 +1691,7 @@ private void hideSysUI(){
|
|||
|
||||
|
||||
int prePageNo =currentPage.getPageNo()-1;
|
||||
Log.d(TAG,String.format("currentPageno %s,total pagno %s",currentPage.getPageNo(),currentChaptPages.size()));
|
||||
// Log.d(TAG,String.format("currentPageno %s,total pagno %s",currentPage.getPageNo(),currentChaptPages.size()));
|
||||
|
||||
|
||||
if(prePageNo <=0){
|
||||
|
@ -1726,7 +1727,7 @@ private void hideSysUI(){
|
|||
if(currentChaptPages.size()==0){
|
||||
return new TRPage();
|
||||
}
|
||||
Log.d(TAG, String.format("prepare book getPageForBegin: currentChaptPages count %s, chaptid %s, begin %s ",currentChaptPages.size(),currentChapter,begin));
|
||||
// Log.d(TAG, String.format("prepare book getPageForBegin: currentChaptPages count %s, chaptid %s, begin %s ",currentChaptPages.size(),currentChapter,begin));
|
||||
for(TRPage page : currentChaptPages)
|
||||
{
|
||||
if(page.getEnd() >=begin){
|
||||
|
@ -1751,7 +1752,8 @@ private void hideSysUI(){
|
|||
}
|
||||
int adHeight = trpage.getNativeBannerHeight()+trpage.getBannerHeight();
|
||||
calculateLineCount(adHeight );
|
||||
Log.d(TAG, String.format("getNextChapterPage getNextLines: pageNo %s, adHeight %s, totalLines %s",trpage.getPageNo(),adHeight,mLineCount));
|
||||
// Log.d(TAG, String.format("getNextChapterPage getNextLines: pageNo %s, adHeight %s, totalLines %s",trpage.getPageNo(),adHeight,mLineCount));
|
||||
boolean newParagraph =false;
|
||||
while (mBookUtil.next(true,chaptId) != -1){
|
||||
char word = (char) mBookUtil.next(false,chaptId);
|
||||
// Log.d(TAG, String.format(" loadchapt getNextLines(), chaptId %s, word '%s'", chaptId,word ));
|
||||
|
@ -1761,9 +1763,10 @@ private void hideSysUI(){
|
|||
//判断是否换行
|
||||
if ((word + "" ).equals("\n") ){// if ((word + "" ).equals("\r") && (((char) mBookUtil.next(true)) + "").equals("\n")){
|
||||
// mBookUtil.next(false);
|
||||
newParagraph =true;
|
||||
if ( !line.isEmpty()){
|
||||
if (showChapTitleOnTopWhenNextPage && lines.size() >0 && mBookUtil.isChapterTitle(line)) {
|
||||
Log.d(TAG,String.format("title is %s\n,size is %s ,position is %s" ,line,line.length(),mBookUtil.getPosition(chaptId) ));
|
||||
// Log.d(TAG,String.format("title is %s\n,size is %s ,position is %s" ,line,line.length(),mBookUtil.getPosition(chaptId) ));
|
||||
//isFirstPage =true;
|
||||
firstPageLine=1;
|
||||
break;
|
||||
|
@ -1788,6 +1791,14 @@ private void hideSysUI(){
|
|||
continue;
|
||||
}
|
||||
|
||||
if(newParagraph && line.length()==0) {
|
||||
newParagraph = false;
|
||||
if(!(word+"").equals(Constants.BAD_CHAR)){
|
||||
line += Constants.BAD_CHAR + Constants.BAD_CHAR;
|
||||
widthChar += 2* mPaint.measureText( Constants.BAD_CHAR + "");
|
||||
}
|
||||
|
||||
}
|
||||
width += widthChar;
|
||||
// Log.d(TAG, String.format(" loadchapt getNextLines(),widthChar %s ,width %s,mVisibleWidth %s",widthChar, width ,mVisibleWidth ));
|
||||
|
||||
|
@ -1988,9 +1999,9 @@ private void hideSysUI(){
|
|||
if(mBookPageWidget==null){
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, "currentPage onDraw: mBookPageWidget.getCurPage() ");
|
||||
// Log.d(TAG, "currentPage onDraw: mBookPageWidget.getCurPage() ");
|
||||
onDraw(mBookPageWidget.getCurPage(),currentPage ,updateChapter,false);
|
||||
Log.d(TAG, "currentPage onDraw: mBookPageWidget.getNextPage() ");
|
||||
// Log.d(TAG, "currentPage onDraw: mBookPageWidget.getNextPage() ");
|
||||
onDraw(mBookPageWidget.getNextPage(),currentPage ,updateChapter,true);
|
||||
}
|
||||
|
||||
|
@ -1999,7 +2010,7 @@ private void hideSysUI(){
|
|||
hideSysUI();
|
||||
if (currentPage != null && mBookPageWidget != null && !mBookPageWidget.isRunning()) {
|
||||
|
||||
Log.d(TAG, String.format("updateBattery: level old %s, new %s",level,mLevel));
|
||||
// Log.d(TAG, String.format("updateBattery: level old %s, new %s",level,mLevel));
|
||||
if (level != mLevel) {
|
||||
level = mLevel;
|
||||
currentPage(false);
|
||||
|
|
|
@ -176,7 +176,7 @@ int mPageMode =0;
|
|||
protected void onDraw(Canvas canvas) {
|
||||
// canvas.drawColor(0xFFAAAAAA);
|
||||
canvas.drawColor(mBgColor);
|
||||
Log.e("pagewidget onDraw","isMoveing isNext:" + isNext + " isRuning:" + isRuning);
|
||||
// Log.e("pagewidget onDraw","isMoveing isNext:" + isNext + " isRuning:" + isRuning);
|
||||
if (isRuning) {
|
||||
mAnimationProvider.drawMove(canvas);
|
||||
} else {
|
||||
|
@ -196,7 +196,7 @@ int mPageMode =0;
|
|||
|
||||
int x = (int)event.getX();
|
||||
int y = (int)event.getY();
|
||||
Log.d(TAG, String.format("onTouchEvent: x %s,y %s ",x,y));
|
||||
// Log.d(TAG, String.format("onTouchEvent: x %s,y %s ",x,y));
|
||||
mAnimationProvider.setTouchPoint(x,y);
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN){ //mAnimationProvider.setCancel(false); https://github.com/PeachBlossom/treader/issues/4
|
||||
downX = (int) event.getX();
|
||||
|
@ -219,7 +219,7 @@ int mPageMode =0;
|
|||
if (!isMove) {
|
||||
isMove = Math.abs(downX - x) > slop || Math.abs(downY - y) > slop;
|
||||
}
|
||||
Log.d(TAG, String.format("onTouchEvent:ACTION_MOVE isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
||||
// Log.d(TAG, String.format("onTouchEvent:ACTION_MOVE isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
||||
if(!PageFactory.busy())
|
||||
if (isMove){
|
||||
isMove = true;
|
||||
|
@ -291,7 +291,7 @@ int mPageMode =0;
|
|||
}
|
||||
}else if (event.getAction() == MotionEvent.ACTION_UP){
|
||||
//Log.e(TAG,"ACTION_UP");
|
||||
Log.d(TAG, String.format("onTouchEvent:ACTION_UP isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
||||
// Log.d(TAG, String.format("onTouchEvent:ACTION_UP isMove %s, isbusy %s",isMove,PageFactory.busy()));
|
||||
if (!isMove || PageFactory.busy()){
|
||||
cancelPage = false;
|
||||
//是否点击了中间
|
||||
|
@ -337,7 +337,7 @@ int mPageMode =0;
|
|||
if (!noNext) {
|
||||
isRuning = true;
|
||||
|
||||
Log.d(TAG, "onTouchEvent: startanimation");
|
||||
// Log.d(TAG, "onTouchEvent: startanimation");
|
||||
mAnimationProvider.startAnimation(mScroller);
|
||||
mTouchListener.showAdAfterIni();
|
||||
this.postInvalidate();
|
||||
|
|
|
@ -87,7 +87,7 @@ public class SimulationAnimation extends AnimationProvider {
|
|||
@Override
|
||||
public void drawMove(Canvas canvas) {
|
||||
|
||||
Log.d(TAG, "isMoveing drawMove: ");
|
||||
// Log.d(TAG, "isMoveing drawMove: ");
|
||||
if (getDirection().equals(Direction.next)) {
|
||||
calcPoints();
|
||||
drawCurrentPageArea(canvas, mCurPageBitmap, mPath0);
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_margin="16dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:background="@drawable/background_circle"
|
||||
android:gravity="center"
|
||||
android:text="@string/click_to_skip"
|
||||
|
|
|
@ -98,12 +98,12 @@
|
|||
android:text="简介" />
|
||||
|
||||
</LinearLayout>
|
||||
<com.timqi.collapsibletextview.CollapsibleTextView
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
|
||||
<com.timqi.collapsibletextview.CollapsibleTextView xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/txtDesc2"
|
||||
style="@style/TextViewDesc"
|
||||
android:padding="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:padding="5dp"
|
||||
app:collapsedLines="3"
|
||||
app:collapsedText=" 》》》"
|
||||
app:expandedText=" 《《《"
|
||||
|
@ -111,19 +111,19 @@
|
|||
app:suffixTrigger="true"
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:visibility="gone"
|
||||
android:id="@+id/txtDesc22"
|
||||
style="@style/TextViewDesc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:text="一句话概括了书单的内容" />
|
||||
android:text="一句话概括了书单的内容"
|
||||
android:visibility="gone" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout style="@style/llGraySplit" />
|
||||
|
||||
<LinearLayout
|
||||
|
@ -135,21 +135,19 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="visible"
|
||||
>
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/colorAccent"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@style/TextViewTitle"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:text="目录" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -167,25 +165,26 @@
|
|||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_weight="0"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="0"
|
||||
android:src="@mipmap/directory" />
|
||||
|
||||
<TextView
|
||||
style="@style/TextViewDesc"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="目录"
|
||||
android:textSize="11sp"
|
||||
android:visibility="gone"
|
||||
android:text="目录" />
|
||||
android:visibility="gone" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginLeft="5dp"
|
||||
>
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtLatestUpdate"
|
||||
style="@style/TextViewDesc.small"
|
||||
|
@ -194,12 +193,13 @@
|
|||
android:text=""
|
||||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginTop="2dp"
|
||||
android:id="@+id/txtLatestCate"
|
||||
style="@style/TextViewDesc"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text=""
|
||||
|
||||
/>
|
||||
|
@ -209,7 +209,6 @@
|
|||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
@ -268,32 +267,37 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout style="@style/llGraySplit" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAuthorMore"
|
||||
style="@style/NovelBlockTitle"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_weight="1"
|
||||
android:text=" 其他作品" />
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/rvBooklist"
|
||||
android:divider="#ffff0000"
|
||||
android:dividerHeight="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:divider="#ffff0000"
|
||||
android:dividerHeight="10dp"
|
||||
android:nestedScrollingEnabled="false"
|
||||
android:paddingBottom="2dp"
|
||||
/>
|
||||
android:paddingBottom="2dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_marginTop="1dp"
|
||||
android:layout_marginBottom="1dp"
|
||||
android:id="@+id/banner_container"
|
||||
style="@style/frmBannerContainer"
|
||||
android:layout_height="@dimen/nativeBannerHeight"
|
||||
android:id="@+id/banner_container"/>
|
||||
</LinearLayout>
|
||||
android:layout_marginTop="1dp"
|
||||
android:layout_marginBottom="1dp" />
|
||||
|
||||
<LinearLayout style="@style/llGraySplit" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -303,22 +307,22 @@
|
|||
<TextView
|
||||
android:id="@+id/tvTonglei"
|
||||
style="@style/NovelBlockTitle"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_weight="1"
|
||||
android:text="同类推荐" />
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/rvBooklistRelated"
|
||||
android:divider="#ffff0000"
|
||||
android:dividerHeight="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:divider="#ffff0000"
|
||||
android:dividerHeight="10dp"
|
||||
android:nestedScrollingEnabled="false"
|
||||
android:paddingBottom="50dp"
|
||||
/>
|
||||
android:paddingBottom="50dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout style="@style/llGraySplit" />
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -8,81 +8,39 @@
|
|||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="gDebug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleGDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileGDebugSources" />
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateGDebugSources</task>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||
<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/g/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/debug" />
|
||||
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
|
||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/gDebug/compileGDebugJavaWithJavac/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/gDebugUnitTest/compileGDebugUnitTestJavaWithJavac/classes" />
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<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/gDebug/compileGDebugAidl/out" 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/gDebug/compileGDebugRenderscript/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/g/debug" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/g/debug" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/gDebug/rs" isTestSource="false" />
|
||||
<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$/build/generated/source/apt/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/source/buildConfig/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/res/rs/debug" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
|
||||
<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/assets" type="java-resource" />
|
||||
|
@ -130,17 +88,25 @@
|
|||
<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/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/check_manifest_result" />
|
||||
<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/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_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_split_apk_resources" />
|
||||
<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_main_dex_list" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged-not-compiled-resources" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
||||
<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_manifests" />
|
||||
|
@ -148,17 +114,16 @@
|
|||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/metadata_feature_manifest" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
|
||||
<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-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_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/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/transforms" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/reports" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
||||
|
|
Loading…
Reference in New Issue