Giter VIP home page Giter VIP logo

ktrssreader's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ktrssreader's Issues

Kotlin 1.5.0-RC compatibility issue

Hello, Kotlin 1.5.0-RC is around the corner and I checked if it played nicely with KtRssReader, but due to the new Duration api changes it wasn't happy about it;

java.lang.NoSuchMethodError: No static method getDays(I)D in class Lkotlin/time/DurationKt; or its super classes (declaration of 'kotlin.time.DurationKt' appears in /data/app/~~8tbLKXsRF-XaLJOxrS_dhQ==/com.example.test.android.app-6jJoF5SXNmXOC7dOK8x6_g==/base.apk!classes26.dex)
        at tw.ktrssreader.config.KtRssReaderConfig.<init>(KtRssReaderConfig.kt:31)
        at com.example.test.android.feed.net.FeedNetDataSourceImpl.read(FeedNetDataSourceImpl.kt:19)
        at com.example.test.android.feed.FeedRepositoryImpl$fetchFeed$2.invokeSuspend(FeedRepositoryImpl.kt:52)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

I started here: #70 but I havent tried it yet since I couldn't figure out where you change the project version so I could publish locally and try it in my own project..

edit: I did some further investigation and its still unclear what causes this crash, only did the problem go away if I uninstalled the kotlin plugin in android studio (canary) and reinstalled the latest stable one via File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle.

Jitpack build failed with duplicate BuildConfig.dex

The v2.2 was released, however, the Jitpack build failed which causes users can't use the library. See build log for more information.

https://jitpack.io/com/github/ivanisidrowu/KtRssReader/v2.2/build.log

ERROR:/home/jitpack/build/app/build/intermediates/project_dex_archive/release/out/tw/ktrssreader/BuildConfig.dex: D8: Type tw.ktrssreader.BuildConfig is defined multiple times: /home/jitpack/build/app/build/intermediates/project_dex_archive/release/out/tw/ktrssreader/BuildConfig.dex, /home/jitpack/build/android/build/.transforms/1b5d3dd2bbfa401f6f57c51571857ede/transformed/classes/classes.dex
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type tw.ktrssreader.BuildConfig is defined multiple times: /home/jitpack/build/app/build/intermediates/project_dex_archive/release/out/tw/ktrssreader/BuildConfig.dex, /home/jitpack/build/android/build/.transforms/1b5d3dd2bbfa401f6f57c51571857ede/transformed/classes/classes.dex
	at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:151)
	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:138)
	at com.android.build.gradle.internal.tasks.DexMergingWorkAction.merge(DexMergingTask.kt:859)
	at com.android.build.gradle.internal.tasks.DexMergingWorkAction.run(DexMergingTask.kt:805)
	at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:205)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:270)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:119)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:124)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: /home/jitpack/build/app/build/intermediates/project_dex_archive/release/out/tw/ktrssreader/BuildConfig.dex
	at Version.fakeStackEntry(Version_3.2.60.java:0)
	at com.android.tools.r8.internal.bi.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:68)
	at com.android.tools.r8.internal.bi.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:28)
	at com.android.tools.r8.internal.bi.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:27)
	at com.android.tools.r8.internal.bi.b(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:3)
	at com.android.tools.r8.D8.run(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:11)
	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:136)
	... 38 more
Caused by: com.android.tools.r8.internal.a: Type tw.ktrssreader.BuildConfig is defined multiple times: /home/jitpack/build/app/build/intermediates/project_dex_archive/release/out/tw/ktrssreader/BuildConfig.dex, /home/jitpack/build/android/build/.transforms/1b5d3dd2bbfa401f6f57c51571857ede/transformed/classes/classes.dex
	at com.android.tools.r8.internal.uQ.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:14)
	at com.android.tools.r8.internal.uQ.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:22)
	at com.android.tools.r8.internal.yK.b(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:7)
	at com.android.tools.r8.internal.yK.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:23)
	at com.android.tools.r8.internal.yK.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:10)
	at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2048)
	at com.android.tools.r8.internal.yK.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:6)
	at com.android.tools.r8.graph.A2$a.e(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:4)
	at com.android.tools.r8.dex.b.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:105)
	at com.android.tools.r8.dex.b.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:28)
	at com.android.tools.r8.D8.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:26)
	at com.android.tools.r8.D8.d(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:593)
	at com.android.tools.r8.D8.b(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:1)
	at com.android.tools.r8.internal.bi.a(R8_3.2.60_61a204e00a4460bee78ec2913234dc5e1a3a501d9754e757835d117b7e302ba3:24)
	... 41 more


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDexRelease'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingTaskDelegate
   > There was a failure while executing work items
      > A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingWorkAction
         > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
           Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
           Type tw.ktrssreader.BuildConfig is defined multiple times: /home/jitpack/build/app/build/intermediates/project_dex_archive/release/out/tw/ktrssreader/BuildConfig.dex, /home/jitpack/build/android/build/.transforms/1b5d3dd2bbfa401f6f57c51571857ede/transformed/classes/classes.dex

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

Missing commas in the generated parser file

          还有这个问题,生成少了,分号

image

@RssTag(name = "channel")
data class JacketRssChannel(
    val title: String?,
    val description: String?,
    val link: String?,
    val language: String?,
    val category: String?,
    @RssTag(name = "item")
    val items: List<JacketRssItems>?
) : Serializable

@RssTag(name = "item")
data class JacketRssItems(
    val title: String?,
    val guid: String?,
    @RssTag(name = "jackettindexer")
    val jackettIndexerId: JackettIndexer?
) :Serializable

@RssTag(name = "jackettindexer")
data class JackettIndexer(
    @RssValue
    val value: String?,
    @RssAttribute(name = "id")
    val id: String?,
): Serializable

Originally posted by @287138531 in #90 (comment)

Keep generated files while generating code for changed files

Release an update to keep generated files while generating files for changed code.

嗨 Ivan
目前初步看起來我們在使用 ksp generate 新的 changed file 的時候,並不會保留舊的 generated files
所以導致舊的 generated files 會被移除

測試手法

  1. 在 sample app 加上 Reporter 提供的 JacketRssChannel
@RssTag(name = "channel")
data class JacketRssChannel(
    val title: String?,
    val description: String?,
    val link: String?,
    val language: String?,
) : Serializable
  1. Run ./gradlew kspDebugKotlin

  2. 查看ksp generated 路徑 sample/build/generated/ksp/debug/kotlin/tw/ktrssreader/generated
    應該要有原本 sample 提供的 RssDataParser, RssItemParser, RssOrderDataParser, etc.

看起來要在 KspProcessor ParserGenerator 內的 writeTo() 方法來添加originatingKSFiles參數 keep 原本的 generated files.
refs: google/ksp#1231

e.g.

AndroidReaderParserGenerator(
                    rootClassName = classDeclaration.simpleName.asString(),
                    rootClassPackage = classDeclaration.packageName.asString(),
                    logger = logger
                ).generate().writeTo(
                    codeGenerator = codeGenerator,
                    aggregating = false,
                    originatingKSFiles = listOf(classDeclaration.containingFile!!)
                )

Originally posted by @dev-weiqi in #90 (comment)

Info about contact

How can I contact someone, I have problem with custom data and reader. My reader for my data class isn't generated but I don't know why. If you have advice or can help I would appreciate that.

Investigate and survey potential solutions for escaping symbols in KSP

Find potential solutions for this xml format.

      <torznab:attr name="category" value="8000" />
      <torznab:attr name="category" value="138096" />
      <torznab:attr name="genre" value="" />
      <torznab:attr name="seeders" value="1" />
      <torznab:attr name="peers" value="1" />
      <torznab:attr name="downloadvolumefactor" value="0" />
      <torznab:attr name="uploadvolumefactor" value="1" />

Originally posted by @287138531 in #90 (comment)

Why minSdk 23?

I noticed that the library seems to work for most part with API version 21. Is there some reason that the minimum version is 23?

Thanks for the nice library.

Add support for itunes:summary field in items

Take a look at the feed of Inside Java podcast:

<item>
    <title>#12 - “jpackage” with Kevin Rushforth</title>
    <itunes:title>“jpackage” with Kevin Rushforth</itunes:title>
    <pubDate>Thu, 11 Feb 2021 11:57:06 +0000</pubDate>
    <guid isPermaLink="false"><![CDATA[c0cdd551-0fc0-4eaa-bccf-e43360ed04a9]]></guid>
    <link><![CDATA[https://inside.java/2021/02/11/podcast-012/]]></link>
    <itunes:image href="http://static.libsyn.com/p/assets/f/8/0/a/f80a626bd25156f4/Inside_Java_Apple_Podcast_3000_tile.png" />
    <description><![CDATA[]]></description>
    <content:encoded><![CDATA[]]></content:encoded>
    <enclosure length="20706817" type="audio/mpeg" url="http://traffic.libsyn.com/insidejava/InsideJava-Ep012.mp3?dest-id=2318780" />
    <itunes:duration>25:07</itunes:duration>
    <itunes:explicit>clean</itunes:explicit>
    <itunes:keywords>distribution,packaging,jdk,openjdk,jdk16</itunes:keywords>
    <itunes:subtitle><![CDATA[]]></itunes:subtitle>
    <itunes:summary>…</itunes:summary>
    <itunes:season>1</itunes:season>
    <itunes:episode>12</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:author>David Delabassee, Kevin Rushforth</itunes:author>
</item>

They use HTML markup for descriptions, but they have the same text in itunes:summary and itunes:subtitle, but without any tags. It would be really great to support them.

IllegalAccessError: cannot access class com.sun.org.apache.xerces.internal.dom.DeferredElementImpl

It seems that the implementation uses internal (non-exported) classes:

class tw.ktrssreader.kotlin.parser.ParserBase (in unnamed module @0x443effcb) cannot access class com.sun.org.apache.xerces.internal.dom.DeferredElementImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.dom to unnamed module @0x443effcb
java.lang.IllegalAccessError: class tw.ktrssreader.kotlin.parser.ParserBase (in unnamed module @0x443effcb) cannot access class com.sun.org.apache.xerces.internal.dom.DeferredElementImpl (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.dom to unnamed module @0x443effcb
	at tw.ktrssreader.kotlin.parser.ParserBase.readString(ParserBase.kt:229)
	at tw.ktrssreader.kotlin.parser.AutoMixParser.parseChannelTags(AutoMixParser.kt:136)
	at tw.ktrssreader.kotlin.parser.AutoMixParser.parse(AutoMixParser.kt:89)

Environment: Java 17, Kotlin 1.7.20

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.