के साथ "संदर्भित वर्ग नहीं मिल सकता" मुझे प्रोगुआर्ड और कोटलिन के साथ एक अजीब समस्या है। मैं धीरे-धीरे एक प्रोजेक्टेड परियोजना को कोटलिन में परिवर्तित कर रहा हूं - जो अभी तक बहुत बढ़िया हो गया है लेकिन कुछ वर्गों को परिवर्तित करते समय मुझे प्रगति त्रुटियां मिल रही हैं। मैं अभी तक अलग नहीं कर सका कि इन वर्गों की विशेष संपत्ति क्या है, इसलिए यह टूट जाती है - वे अन्य लोगों की तुलना में अलग नहीं हैं। एक उदाहरण के रूप InputStreamWithSource बस है:प्रोगुआर्ड और कोटलिन
package org.ligi.passandroid.model
import java.io.InputStream
class InputStreamWithSource(val source: String, val inputStream: InputStream)
और यह पूरी तरह आईडीई में काम करता है - मैं एक डिवाइस के लिए तैनात कर सकते हैं - यह भी सभी यूआई परीक्षण ठीक चल रहे हैं। बस जब परियोजना मैं ProGuard त्रुटियों हो रही है assembleRelease करने की कोशिश कर मुझे समझ में नहीं:
Warning: org.ligi.passandroid.ui.FileUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.FileUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassImportActivity$ImportAndShowAsyncTask: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassImportActivity$ImportAndShowAsyncTask: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassImportActivity$ImportAndShowAsyncTask: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassImportActivity$ImportAndShowAsyncTask: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassImportActivity$ImportAndShowAsyncTask: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassViewActivityBase$UpdateAsync: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassViewActivityBase$UpdateAsync: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.PassViewActivityBase$UpdateAsync: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.SearchPassesIntentService: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassController: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassController: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassController$InputStreamUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassController$InputStreamUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassController$InputStreamUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassController$InputStreamUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassDialog: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassDialog: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassDialog$1AlertDialogUpdater: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
Warning: org.ligi.passandroid.ui.UnzipPassDialog$1AlertDialogUpdater: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource
जब मैं ProGuard विन्यास में इन वर्गों के लिए एक dontwarn जोड़ने की तुलना में यह रनटाइम पर दुर्घटनाओं - तो इन कक्षाओं में वास्तव में निकाल दिए जाते हैं - लेकिन उन्हें हटाए जाने के रूप में हटाया नहीं जाना चाहिए।
मैं इस समस्या को हल ProGuard-config में इन कक्षाओं के लिए वर्ग/enum रखने जोड़कर काम कर सकते हैं - लेकिन सवाल यह क्यों इन कक्षाओं के लिए आवश्यक है है - IMHO यह आवश्यक नहीं किया जाना चाहिए
किसी को भी कुछ नहीं है आइडिया क्या कारण हो सकता है या इस समस्या की जांच कैसे कर सकता है? पूर्ण स्रोत यहाँ है: https://github.com/ligi/PassAndroid
आपको लगता है कि, तो सब पर ProGuard चलाने में कोई मतलब नहीं है करते हैं –
@GregEnnis आपके लिए अपने कोड के लिए ठीक है, क्योंकि किसी भी कोड का उपयोग नहीं किया जाना चाहिए परियोजना से हटा दिया जाना चाहिए। तृतीय पक्ष कोड एक अलग कहानी है। –