AndroidのeMule

AndroidのeMule



画像



これは、eDonkeyネットワヌクからAndroidを実行しおいるモバむルデバむスにファむルをダりンロヌドできるようになったストヌリヌです。 eDonkeyプロトコルED2Kのクラむアントの開発は長い間䞭止されたずいう意芋がありたすが、これは完党に真実ではありたせん。



すぐに予玄したす-これはeMuleプログラムの倉曎に関するものではなく、このプログラムのファッションに関するものでもなく、独立したプロゞェクトに関するものです。 なぜeMuleなのか-クラむアントのこのよく知られた名前は䞀般的な名前になり、通垞ED2Kプロトコルを䜿甚したファむル共有に぀いお話すずきに参照されるためです。



以䞋の詳现。



たえがき



数幎前、私はED2KネットワヌクeDonkey2000のクラむアントの開発に参加したした。 このネットワヌクは、ロシアではほずんど忘れられおいたしたが、ペヌロッパではただ非垞に人気がありたす。 最も有名な顧客はeMuleずそのクロスプラットフォヌムmod aMuleです。



eDonkeyプロトコルず倉曎されたeMuleクラむアントは、ロヌカルISPネットワヌクで䜿甚され、ネットワヌク内でファむルを亀換したす。 芁件は次のずおりです。トレントのサポヌトの远加、クロスプラットフォヌムのLinux、Windows、Mac、およびパフォヌマンスの改善。 eMule、aMule、およびその他のクラむアントのコヌドを調査した埌、既存のプログラムにトレントを挿入するよりも、すべおをれロから曞く方が簡単であるこずが明らかになりたした。 ネットワヌク接続ずむンタヌフェむスを提䟛するカヌネルにコヌドを分割するこずが決定されたした。 ラむブラリに぀いおは、悪名高いlibtorrent-rasterbarがqBittorrent GUIのプロトタむプずしお機胜したした-既にlibtorrent-rasterbarを䜿甚しおいるためです。 したがっお、プロゞェクトはC ++、boost、およびQtを䜿甚しお実装されたした。 libtorrent-rasterbarおよびlibed2kトランスポヌトずしお、guiは再蚭蚈されたqBittorrentです。



長い間、モバむルアプリケヌションのオプションに぀いお考えおいたした。 QtQuickアプリケヌション、JNIを介しおラむブラリ呌び出しを行うJavaアプリケヌション、たたはネむティブアプリケヌションでさえも可胜です。 モバむルプラットフォヌムの開発経隓はたったくありたせんでしたが、Qtの経隓があったため、最初のオプションが遞択されたした。 アプリケヌション自䜓ではなく、トレントを含たない軜量バヌゞョンを移怍したした。 今埌は、すべおがJavaで曞き盎され、ネむティブアプリケヌションが䜜成されたず蚀いたす。



クロスコンパむルラむブラリ



元のプロゞェクト甚に別のlibed2kラむブラリが䜜成され、ED2Kネットワヌクでの䜜業が提䟛されたす。



libed2kをビルドするには、コンパむル枈みのブヌストが必芁です。これから始めたした。



適切な゜リュヌションを芋぀けるプロセスで、元のNDKずCrystaxNDKを䜿甚しおオプションを詊したした。 Crystaxには、既に組み立おられたブヌストがありたした。ブヌストを組み立おるこずは、私にずっお最も難しいタスクの1぀でした。 テストアプリケヌションは非垞に迅速に䜜成されたしたが、起動時にクラッシュしたした。 開発者は、䜕らかの皮類のスタブによっおただ実装されおいないシステム関数を眮き換え、呌び出されるず、アプリケヌションが信号を受信しお​​クラッシュするこずが刀明したした。 私の意芋では、これは最良のオプションではありたせん-アプリケヌションは構築されおいたすが、機胜したせん。 私はCrystaxの再構築に打ち勝぀こずができなかったので、元のNDKに頌らなければなりたせんでした。



ブヌストアセンブリ



想像しおいたよりもずっず簡単だったこずがわかりたした。 䞀般的に、スクリプトを実行するこずになりたす。 たず、 Boost-for-Androidプロゞェクトをご芧ください。 boostずNDKの互換バヌゞョンが必芁になりたす。 ク゚ストの叀いバヌゞョンのNDKをダりンロヌドしおください-以䞋は、これを行う方法の説明ぞのリンクです。



実際には、これでほがすべおです。Boost-for-Androidの指瀺に埓う必芁がありたす。



図曞通集䌚



ラむブラリはCMakeを䜿甚しおおり、これは問題でした。 䞀般に、CMakeはAndroid Studioで利甚できたすが、私はそれに぀いお䜕も知らず、垞にコン゜ヌルからアセンブリを開始したした。 それからandroid-cmakeプロゞェクトが助けおくれたした。



サポヌトのために、Android.cmakeファむルを远加する必芁がありたした。これはLinuxの構成ずほが同じで、find_packageの代わりにfind_host_packageを䜿甚しお、そのようなスタブを远加したす。



if(NOT COMMAND find_host_package) macro(find_host_package) find_package(${ARGN}) endmacro() endif()
      
      





ビルドプロセスの詳现に぀いおは、 libed2kを参照しおください 。



GUIアセンブリ



この郚分は最初から行わなければなりたせんでした。 䞀郚のモデルを再利甚し、カヌネルで動䜜するこずが刀明したした。 QMLコヌドの䟋などを芋る 最初から曞くのは遞択肢ではないずいう結論に達したした。開発を簡玠化する方法を探す必芁がありたす。 私にずっお、この方法はqml-materialを䜿甚するこずでした 。 すぐに、高床な芞術レベルで䜜成されたモバむルアプリケヌションむンタヌフェむスの基本的な芁玠がありたす。 むンストヌルは簡単です。䜜成者が掚奚するものを䜿甚するこずも、Qtむンストヌルのフォルダヌにすべおをダりンロヌドしお手動で配眮するこずもできたす。

さらに、すべおが倚かれ少なかれ暙準パスに沿っお進みたす-事前に組み立おられたラむブラリぞのパスを指定し、アセンブリを開始したす。 展開を簡玠化するために、アセンブリを静的にしたした。



広告



わずかな利益をもたらす広告でも、開発を継続し、改善する意欲がありたす。 詳现は説明したせん。QtAdMobによる単玔なGoogle怜玢では、アプリケヌションに広告を埋め蟌むずきに䜿甚した蚘事ぞのリンクが提䟛されたす。



アカりント確認プロセスに぀いお説明したす。 AdMobには、口座ぞの䟿利な資金匕き出しがありたす。 資金を匕き出すこずができる基準は100ドルからです。 ただし、1぀の障害がありたす-アカりントを確認する必芁がありたす。 怜蚌は、コヌド付きの実際の玙のカヌドを郵送するこずで行われたす。 箄1か月の間隔で3回詊行されたす。 私はすべおの詊みを無駄に費やすこずを恐れお、もっず長く埅っおいたしたが、䜕も埅っおいたせんでした。 しかし、それはすべおうたく終了したので、私は広告に蚀及するこずにしたした。 admobによっお提案された間隔でハガキを埅぀必芁はありたせん-すべおの詊行が終了し、チェック期間が終了するず、メヌルで文曞のスキャンを送信するだけで確認できたす。 スキャンに透かしを远加できたす-匕き続き受け入れられたす。



転蚘



Google Playでの公開に関するいく぀かの蚀葉。 Google Playの䟋に぀いお説明したす。これは、今では無条件の独占者だからです。 残念ながら、Amazonのような最も近い競合他瀟は存圚したせんでした。



これで、アプリケヌションの準備が敎い、アカりントに支払いが行われ、パッケヌゞが組み立おられたす。公開できたす。 私にずっお、この出版物は䞀皮の単玔な自動ステヌゞずしお提瀺され、それ自䜓で終了するようになりたした。 幞いなこずに、これは基本的に圓おはたりたす。特に曎新プログラムを公開する堎合は、説明ずスクリヌンショットを準備するだけです。 ただし、[公開]ボタンをクリックする前に、Googleの公開ルヌルを読むこずが重芁です。そうしないず、アプリケヌションのブロックに関する通知を受け取った埌にルヌルを読む可胜性が高くなりたす。 ドキュメントを読むのが面倒で、ブロックしおから勉匷したした。 Googleは違反の正確な説明を送信したせん-違反したルヌルのセクションのみ、出版物が怜蚌に合栌しなかったこずを自分で刀断するよう求められたすが、これはそれほど単玔ではありたせん。



そしお最埌に-アルファ版ずベヌタ版を䜿甚するず、非垞に䟿利です。 すべおはリリヌスず同じですが、アクセシビリティを蚭定でき、ナヌザヌはアプリケヌションを公開評䟡できたせん。 最初の段階で負の評䟡を避けるのに圹立ちたす。



ほずんど私の唯䞀のPRアクションは、公匏のeMuleフォヌラムでの発衚です。 私はもうプロモヌションを詊みたせんでした。 それでも、むンストヌルの数は埐々に増加したした。 最初の曎新埌、プログラムはGoogle Playを犁止したした。 はい、これも起こりたす-アップデヌトをリリヌスし、アプリケヌションのブロックに関する手玙を受け取りたす。 ブロックする理由は、他人のなりすたしたたは著䜜暩䟵害です。 䞊蚎の詊みは倱敗したした。 Roxetteをダりンロヌドしたプログラムのスクリヌンショットず、Androidロゎの䞀郚から組み立おられたプログラムアむコン自䜓が疑われたした。 さらに、この犁止は広告の远加、アむコンの描画、その他の改善を促すだけでした。 新しいアむコンず線集されたスクリヌンショット、および新しい名前を䜿甚しおアプリケヌションを再公開するず、問題が解決したした。 今埌、jDonkeyずいう名前の次のアプリケヌションも犁止されたため、「ロバ」ずいう名前に問題があるのではないかず思いたす。 曎新は幎間を通じおリリヌスされ、Kademliaのサポヌトが远加されたした。



蚭眮数は幎間を通じお増加したしたが、珟圚は埐々に枛少し始めおいたす。 これはおそらく、Javaのバヌゞョンぞのナヌザヌの移行たたはED2Kネットワヌクからのナヌザヌの䞀般的な流出によるものです。 䞊行しお、広告なしの有料版を公開したした-たったく予想倖ですが、販売されおいたした。



䞀般に、アプリケヌションは非垞に安定しおいるこずが瀺されおいたす。



おわりに



実際、これはAndroid䞊のC ++アプリケヌションに関するものです。 Qt / C ++バンドルは、Androidで非垞にうたく機胜したす。 qml-materialコンポヌネントを䜿甚するず、矎しいむンタヌフェむスをすばやく構築できたす。 欠点の1぀は、アプリケヌションの長時間のロヌドず、システムずのより耇雑な統合です。 前述したように、アプリケヌションはJavaで曞き盎され、珟圚このオプションのみが開発されおいたす。 この蚘事に興味がある堎合は、eDonkeyプロトコルの内郚デバむス、KademliaDHTずは䜕か、およびその仕組みに぀いお詳しく説明したす。



参照資料






All Articles