2015-05-19 226 views
3

我有我的模糊處理的Android Xamarin項目的任務(讓我們把它叫做AndrProj)與圖書館一起它引用:二PCL(我們姑且稱之爲PCL1PCL2)和Android庫(AndrLib)。 PCL2AndrLib也提及PCL1無法創建.apk文件

我受到this文章的啓發,決定嘗試Crypto Obfuscator對於我的目的.Net v2015演示版本。

我用它的'Visual Studio項目集成嚮導'。 PCL1被設置爲'第一個項目'和AndrProj'最後的項目'。開始只使用默認設置。現在當我建立我的項目時,一切都是完美的。 \ bin \ Release文件夾中的Dll被模糊處理。

如果我真的可以創建一個.apk文件並在Android設備上嘗試,我會非常高興。但是,當我選擇Build - >存檔出版在Xamarin Studio中,有一段時間我看到後「構建失敗」和而發生混淆

錯誤: - 彙編「AndrLib」是 已經與加密混淆混淆。如果您已在Visual Studio項目上運行Visual Studio項目集成嚮導,則不能從Crypto Obfuscator UI進行混淆,除非先從Crypto Obfuscator的「項目」菜單中禁用該項目的自動混淆模式 - >'啓用/禁用Visual Studio集成「並在Visual Studio中將解決方案重建爲 可生成未混淆的程序集。

我也嘗試從Visual Studio 2013中導出Android包(.apk),但它輸出較少,仍然不會創建.apk。

我相信它抱怨只有約AndrLib因爲它去首字母順序排列之中PCL1PCL2AndrLib。更多的全球性問題是,創建.apk會強制所有程序集再次被混淆。有什麼辦法可以跳過這第二次混淆?或者忽略這種問題?

+0

您已經發布了自己的回答你的問題,但解釋沒有單獨模糊處理它們,並使用構建做 –

+0

對不起@Martyn,我不明白你的想法。通過「Visual Studio項目集成嚮導」建立了項目,以便在第一個和最後一個項目被指明的情況下進行混合。此外,AndrProj的構建沒有錯誤。它的包創建失敗。 – foxanna

回答

0

那麼,解決方案非常簡單:我必須直接使用MSBuild.exe與目標SignAndroidPackage,而不是從IDE創建.apk。


這是從技術支持關於上述問題(可能是有用的人)的電子郵件:

如果您的解決方案未能這樣做的MSBuild整合後打造,請嘗試以下操作:

變化構建輸出日誌詳細程度如下: Visual Studio工具菜單 - >選項 - >項目和解決方案 - >生成並運行 - > MSBuild項目生成輸出詳細度,將其設置爲詳細。

現在檢查的Visual Studio Output窗口任何提示或有關錯誤原因的詳細信息。

將MSBuild使用的線程數更改爲1,如下所示: Visual Studio工具菜單 - >選項 - >項目和解決方案 - >構建並運行 - >最大並行線程數:將此設置爲1.

如果在運行(CTRL + F5)或調試(F5)解決方案時遇到類似於「程序集'XYZ'已被加密混淆器混淆......」的錯誤消息,請嘗試執行清理(​​Visual Studio生成菜單 - >清理菜單項),然後執行運行(CTRL + F5)或調試(F5)。如果您運行該向導多次,每次選擇不同的「第一」的項目,也可能發生

構建失敗。此問題通常通過構建日誌/輸出中的「文件未找到」錯誤呈現。爲了解決這個問題,從清潔的非集成的.csproj/.vbproj文件(嚮導會將原來的非集成項目文件的.backup_%時間戳%擴大開始修改項目文件之前;或者你可以打開的.csproj/.vbproj文件放在文本編輯器中,並刪除嚮導中添加的XML,這些XML可以在文件末尾找到)。然後再次運行嚮導,指定正確的第一個和最後一個項目。