অ্যান্ড্রয়েড কনফিগারেশন চলাকালীন আমি কেন .tf ফাইলটি পড়তে পারি না?


9

অ্যান্ড্রয়েড ডিভাইসে আমার গেমটি চলমান বা ডিবাগ করার সময় আমি লগকটে এই ত্রুটিটি পাই:

com.badlogic.gdx.utils.GdxRuntimeException: ফাইল পড়ার সময় ত্রুটি: ডেটা / ফন্ট / myFont.ttf (অভ্যন্তরীণ)

যা এই কোড লাইন দ্বারা নির্মিত:

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);

যেখানে fontFileএটি সংজ্ঞায়িত করা হয়েছে:

FileHandle fontFile = Gdx.files.internal("data/fonts/myFont.ttf");

আমি ডেস্কটপ কনফিগারেশন চালানোর সময় এটি হয় না।

আমি জানি যে ডেস্কটপ কনফিগারেশনের জন্য আপনাকে আপনার প্রকল্পের ওয়ার্কিং ডিরেক্টরিটি সংজ্ঞায়িত করতে হবে, তবে অ্যান্ড্রয়েড কনফিগারেশনে আমি এ জাতীয় বিকল্পটি দেখতে পাচ্ছি না এবং এটিরও কোনও অর্থ হয় না, তাই আমি মনে করি না এটি একটি "ওয়ার্কিং ডিরেক্টরি"-সম্পর্কিত সমস্যা think ।

স্পষ্টতই, ফাইলটি সঠিক পথে রয়েছে।

এছাড়াও মনে রাখবেন যে আমার পূর্ববর্তী প্রকল্পে সবকিছু ঠিকঠাক কাজ করেছে। আমি libgdx-setup ব্যবহার করে একটি নতুন ফাঁকা prj তৈরি করে এবং তারপরে পুরানো প্রকল্প থেকে সমস্ত ক্লাস এবং প্যাকেজ অনুলিপি করে এই নতুন প্রকল্পটি তৈরি করেছি। সুতরাং সম্ভবত এটি কিছু গ্রেডল ফাইল সম্পর্কিত কোনও সমস্যা?


1
আপনি একটি পাচ্ছেন FileNotFoundException? অ্যান্ড্রয়েড ফাইল-সিস্টেমটি সংবেদনশীল, আপনি এটি সঠিকভাবে লিখেছেন তা নিশ্চিত করুন "myFont.ttf" "মাইফন্ট.টিটিএফ"
অ্যালেক্স সিফুয়েন্টেস

হ্যাঁ, আমি এটি লগকটে পড়িনি, এখানে লগক্যাট বার্তার অন্য অংশটি রয়েছে: এর দ্বারা তৈরি হয়েছে: java.io.FileNotFoundException: ডেটা / ফন্ট / myFont.ttf এ android.content.res.AsetsetManager.openAsset (নেটিভ পদ্ধতি) android.content.res.AssetManager.open (AssetManager.java:359) এ com.badlogic.gdx.backends.android.AndroidFileHandle.read (AndroidFileHandle.java:75) এ আমি নিশ্চিত ফাইলটি সঠিক, এটির ভিতরে সম্পদ / ডেটা / ফন্ট / মাইফন্ট.টিটিএফ আমি মনে করি কোনও কারণে অ্যান্ড্রয়েড সঠিক ফোল্ডারে সন্ধান করছে না ... তবে ডেস্কটপ কনফিগারেশন চালানো ভাল কাজ করে
ডেভিড কাতানি

সম্ভবত অ্যান্ড্রয়েড প্রযুক্তি সহায়তার সাথে যোগাযোগ করা ভাল?
বাহ_মেণ্টর

উত্তর:


1

যদি আপনার টেস্ট ডেস্কটপ ফাইল সিস্টেমটি উইন্ডোজ এনটিএফএসে চলমান থাকে এবং অ্যান্ড্রয়েড ডিভাইস ফাইল সিস্টেম অ্যান্ড্রয়েড নেটিভটিতে থাকে তবে পার্থক্যটি ফাইল সিস্টেম ড্রাইভারগুলির মধ্যে রয়েছে।

উইন্ডোজ ফাইল সিস্টেম ড্রাইভারগুলি সংবেদনশীল নয় তবে অ্যান্ড্রয়েড লিনাক্স ব্যবহার করে যা সংবেদনশীল।

আপনার মূলধনটি ফাইলটিতে সঠিক কিনা তা নিশ্চিত করুন।

অতিরিক্তভাবে আমি লক্ষ্য করেছি যে আপনি কোনও পরিবেশগত পরিবর্তনশীল ছাড়াই একটি নিখুঁত পথ ব্যবহার করছেন। এটি অ্যান্ড্রয়েডে আপনার বর্তমান কার্যক্ষম ডিরেক্টরিটিতে গতিশীল। সুতরাং অ্যাপটি যদি কোনও ভিন্ন ডিরেক্টরি থেকে চালিত হয় তবে এটি ফাইলের জন্য পৃথক স্থানে দেখাবে in এটি বিভিন্ন সিস্টেমের পুনর্বিবেচনার মধ্যে সমস্যা সৃষ্টি করতে পারে। সর্বদা অ্যান্ড্রয়েডে পরম পাথ দিন। এর অর্থ পরিবেশগত পরিবর্তনশীল বা মূল ডিরেক্টরিটি (যেমন "/") দিয়ে শুরু হওয়া অর্থ অ্যাপ্লিকেশনটিকে একটি এসডি কার্ডে স্থানান্তর করতে সক্ষম হওয়ার জন্য পরিবেশগত ভেরিয়েবলগুলি ব্যবহার করা আরও ভাল।

অতিরিক্তভাবে, আপনার ফন্টের জন্য ডায়নামিক ডেটা ডিরেক্টরি ব্যবহার করা উচিত নয়। আপনার অ্যাপ্লিকেশানের প্যাকেজে এটি বান্ডিল করা উচিত।


0

আমি বিশ্বাস করি অ্যান্ড্রয়েডের জন্য আপনার যে সমস্ত সম্পদ এতে লোড করা আছে তার একটি সম্পদ ফোল্ডার থাকা দরকার, এই সম্পদ ফোল্ডারটি মূল প্রকল্পের চেয়ে অ্যান্ড্রয়েড প্রকল্পে থাকবে। ডেস্কটপ, এইচটিএমএল ইত্যাদির জন্য মূল প্রকল্পের সম্পদ ব্যবহার করা হয় যাতে তারা সূক্ষ্মভাবে কাজ করতে পারে তবে অ্যান্ড্রয়েডের নিজস্ব সম্পদ ফোল্ডারটি দরকার। আপনার কি এর জন্য একটি আছে?


2
ডেস্কটপ এইচটিএমএল এবং কোর ব্যবহার করে অ্যান্ড্রয়েড সম্পদ ফোল্ডার যা প্রকল্পের একমাত্র সম্পদ ফোল্ডার।
ডেভিড কাতানি

0

বিকল্পগুলি হ'ল:

1) আপনার সমস্ত কোডে টিটিএফ এর পরিবর্তে টিটিএফ উপরের কেসটি চেষ্টা করে দেখুন - যদি আপনার মূল ফাইলটিতে টিটিএফ প্রত্যয় থাকে তবে অ্যান্ড্রয়েড কেস সংবেদনশীল।

2) আপনার অ্যান্ড্রয়েড মডিউলের অধীনে বিল্ড.gradle ফাইলটিতে তা নিশ্চিত করুন:

assets.srcDirs = ['assets']

এবং না:

assets.srcDirs = ['assetManager']

অন্য কথায় এটি আপনার অ্যান্ড্রয়েড সম্পদ ফোল্ডারটি নিশ্চিত করুন। এই আমার জন্য কাজ করে। তারপরে বিল্ড প্রজেক্টটি পরিষ্কার করুন এবং অ্যান্ড্রয়েড ডিভাইস থেকে পুরানো অ্যাপ আনইনস্টল করুন।


[ডিএমগ্রিগরি] এটি পেয়েছে, উত্তর সম্পাদিত হয়েছে।
Yan.F

-1

সম্পদ ফোল্ডারে সরাসরি ফন্ট ফাইলগুলি অনুলিপি করার চেষ্টা করুন।


-1

একটি পদ্ধতি করুন যা আপনি এখন অনুসরণ করে যা পদ্ধতি পরিবর্তন করতে পারেন। আপনি ফন্ট তৈরির জন্য "হায়রো" সরঞ্জামটি ব্যবহার করতে পারেন। নিম্নলিখিত লিঙ্কটি থেকে কেবল "হাইওরো" জার ফাইলটি ডাউনলোড করুন

https://libgdx.badlogicgames.com/tools.html

হায়োরো ব্যবহার করে আপনি প্রায় সব ফন্ট অ্যাক্সেস করতে সক্ষম হবেন। ফন্টগুলি তৈরি করার পরে এটি আপনার অ্যান্ড্রয়েড প্রকল্পের ফাইলগুলিতে "সম্পদ" ফোল্ডারে সংরক্ষণ করুন এবং ফলিং কোড যুক্ত করুন।

     private BitmapFont font;
     font = new BitmapFont(Gdx.files.internal("myNewFontCreatedByHiero.fnt"));

শুধু এই পদ্ধতি চেষ্টা করুন। এটা কাজ করবে।


দুঃখিত, এটিকে কমে যেতে হবে। ব্যবহার FreeTypeFontGeneratorআপনাকে যে কোনো আকারের এটা যে কোনো হরফ এবং লেখার আমদানি করে। যেখানে হায়োরোর প্রতিটি ফন্ট এবং আকারের জন্য বিটম্যাপ তৈরি করা দরকার। আমি সম্মত হই যে হায়রো একটি দুর্দান্ত সরঞ্জাম তবে এটি প্রশ্নের উত্তর দিচ্ছে না।
ম্যাডমিনিও

@ ম্যাডমিনিও হাই, আমি তার সমস্যা সমাধানের জন্য একটি বিকল্প উপায় দিই। উপরোক্ত ধারণাটি ভুল নয়। যা তার সমস্যার বিকল্প সমাধান। ডাউন ভোটের সঠিক কারণ কী তা আমি জানি না।
গোকুল শ্রীনিবাসন

তুমি কিভাবে জান? হতে পারে তার প্রচুর গতিশীল উত্পন্ন পাঠ্যের প্রয়োজন, হায়োরো এতে সহায়তা করে না।
ম্যাডমিনিও

@ ম্যাডমিনিয়ো হাই, আপনি প্রথমে তাঁর প্রশ্নটি পড়তে পারেন। আমি বিকল্প সমাধান দিয়েছি।
গোকুল শ্রীনিবাসন

আপনি বিটিম্যাপ ফন্ট তৈরি করার পরামর্শ দিচ্ছেন তিনি টিটিএফ লোড করতে চান।
ম্যাডমিনিও

-1

ফাইলগুলি / অ্যান্ড্রয়েড / সম্পদের ভিতরে রয়েছে তা নিশ্চিত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.