ডেভলপমেন্ট সার্ভার ছাড়াই ডিভাইসে স্বাক্ষরিত এপিপি তৈরি এবং ইনস্টল করবেন?


166

আমি যেমন প্রতিক্রিয়া-নেটিভে নতুন তাই পদক্ষেপগুলিতে কোনও ভুল থাকলে আমাকে জানান।

ডকুমেন্টেশন অনুসারে কমান্ডটি ব্যবহার করে আমি একটি বিক্রিয়া নেটিভ অ্যান্ড্রয়েড অ্যাপ তৈরি করেছি

নেটিভ অ্যান্ড্রয়েড প্রতিক্রিয়া

ডিভাইসে চলার সময় নিম্নলিখিত কমান্ডটি ব্যবহার করা হয়েছিল

নেটিভ রান অ্যান্ড্রয়েড প্রতিক্রিয়া

যা আমার প্রোজেক্টফোল্ডার / অ্যান্ড্রয়েড / অ্যাপ / বিল্ড / আউটপুট / এপিকে 2 এপিপি ফাইলের আউটপুট দেয়

এখানে চিত্র বর্ণনা লিখুন

এখন যখন আমি এই এপিকে ইনস্টল করার পরে ব্যবহার করি তখন এটি জেএস বান্ডেলটি সংযোগ করতে কোনও ডেভলপমেন্ট সার্ভারের জন্য জিজ্ঞাসা করে। তবে আমার আবশ্যকতাটি হ'ল ব্যবহারকারীর বিকাশ সার্ভারের সাথে লড়াই করতে হবে না কেবল তাকে অ্যাপ্লিকেশন ইনস্টল করতে হবে এবং সবকিছু শেষ হয়েছে।

কিছু স্ট্যাকওভারফ্লো প্রশ্ন পেরিয়ে গেছে তবে স্বাক্ষরযুক্ত এপিপি তৈরি করতে সহায়ক নয় যার জন্য বিকাশ সার্ভারের প্রয়োজন নেই।

আপনি কীভাবে আমাকে কীভাবে দেশীয় প্রতিক্রিয়াতে স্বাক্ষরিত এপিকে তৈরি করতে এবং উপায় সন্ধান করতে সহায়তা করতে পারেন?


1
'রিএ্যাক্ট-নেটিভ স্টার্ট' চালান, এটি আপনার জেএস বান্ডিলটিকে বিকাশ মোডে সার্ভার করবে। উদ্দেশ্য তাই আপনি ফ্লাইতে js ফাইলগুলি সম্পাদনা করতে পারেন। রিলিজ মোড ব্যবহারের জন্য কোনও সার্ভারের প্রয়োজন নেই কারণ এটি এর সাথে প্রয়োজনীয় বান্ডিল অন্তর্ভুক্ত করবে। নিচে উত্তর দেখার
Kar

উত্তর:


250

আপনাকে ডিবাগ বিল্ডের জন্য ম্যানুয়ালি বান্ডিল তৈরি করতে হবে।

বান্ডিল ডিবাগ বিল্ড:

#React-Native 0.59
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res

#React-Native 0.49.0+
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

#React-Native 0-0.49.0
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

তারপরে বান্ডিলিংয়ের পরে APK এর তৈরি করতে:

$ cd android
#Create debug build:
$ ./gradlew assembleDebug
#Create release build:
$ ./gradlew assembleRelease #Generated `apk` will be located at `android/app/build/outputs/apk`

পিএস আরেকটি পদ্ধতির গ্রেড স্ক্রিপ্টগুলি সংশোধন করা হতে পারে।


3
যদি কেউ সম্পদ অনুপস্থিত থাকে: এটি আমার পক্ষে কাজ করেছে--assets-dest ./android/app/src/main/res/
হুয়ান সোলানো

11
এবং এটি করা যদি আমি অ্যাপ্লিকেশনটি শুরু করি তখন একটি বড় লাল পর্দা দেয়? (দ্রষ্টব্য: আমি এটিকে প্রত্যাহার করার পরে সরাসরি চালিয়ে যাচ্ছি)
সাইমন ফোরসবার্গ

3
সর্বশেষ সংস্করণটির জন্য কীভাবে বিল্ড নেবেন কারণ আমরা সূচি.অ্যান্ড্রয়েড.জেএস না রাখি?
বিবেক

9
সর্বশেষ সংস্করণ সহ লোকেরা, অনুগ্রহ করে --entry-file index.js এ এন্ট্রি পয়েন্টটি পরিবর্তন করুন।
ষভ ভাটিয়া

4
নেটিভ বান্ডিল প্রতিক্রিয়া - দেবদেব মিথ্যা - প্ল্যাটফর্ম অ্যান্ড্রয়েড - কেন্দ্র-ফাইল সূচক .js - বুন্ডেল আউটপুট। / অ্যান্ড্রয়েড / অ্যাপ্লিকেশন / বিল্ড / ইন্টারমিডিয়েটস / রেজ / মার্জ / ডিবাগ নতুন রিঅ্যাকটিভেটিভ সংস্করণে যেখানে ইনডেক্স.জেগুলি আইওএস এবং অ্যান্ড্রয়েডের জন্য একীভূত রয়েছে
আইআরপিপি

101

দয়া করে এই পদক্ষেপগুলি অনুসরণ করুন।

আপনার জেএস বান্ডিল করুন:

যদি আপনার প্রোজেক্ট রুটে index.android.js থাকে তবে চালান

react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

যদি আপনার প্রকল্পের মূল সূচীতে index.js থাকে তবে চালান

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

ডিবাগ এপিপি তৈরি করুন:

cd android/
./gradlew assembleDebug

তারপরে আপনি এখানে আপনার apk খুঁজে পেতে পারেন:

cd app/build/outputs/apk/

11
এবং এটি করা যদি আমি অ্যাপ্লিকেশনটি শুরু করি তখন একটি বড় লাল পর্দা দেয়? (দ্রষ্টব্য: আমি এটিকে প্রত্যাহার করার পরে সরাসরি চালাচ্ছি)
সাইমন ফোরসবার্গ

2
@ সিমোনফোর্সবার্গ যদি আপনি ^ 0.5 ব্যবহার করে থাকেন তবে অ্যাপ.জেস বা সূচক.অ্যান্ড্রয়েড.জেএস এর পরিবর্তে সূচি প্রবেশ করুন সূচককে পরিবর্তন করুন react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
ডি বায়ো

3
কাজ করছে না, এটি একটি apk তৈরি করার আদেশ দেয় কিন্তু সেই প্যাকেজ প্যাকেজার সার্ভার ছাড়াই চলছে না।
বিশাল ছোটোয়ানি

1
এটি কার্যকর হচ্ছে না, কারণ এটির জন্য একটি ডেভ সার্ভার দরকার
শেরিফ_পল

1
আমি একই সমস্যাটি করছি, ডিবাগ-এপিপি তৈরি করার সময়, আমি এটি ইনস্টল করতে পারতাম, তবে আমার ডেভ সার্ভারের প্রয়োজন হয় এবং যখন আমি মুক্তির এপিপি ব্যবহার করি তখন আমি আমার ফোনে এটি ইনস্টল করতে পারি না, আমি জানি না এটা কি ভুল আছে
aName

62

সর্বশেষ আপডেট

আপনার মূল প্রকল্প ডিরেক্টরিতে

আপনার কাছে ইতিমধ্যে ডিরেক্টরি অ্যান্ড্রয়েড / অ্যাপ্লিকেশন / এসসিআর / প্রধান / সম্পদগুলি রয়েছে / না ডিরেক্টরি তৈরি না করে, তার পরে নতুন ফাইল তৈরি করুন এবং সংরক্ষণ করুন এবং index.android.bundleআপনার ফাইলটিকে এই অ্যান্ড্রয়েড / অ্যাপ / এসসিআর / প্রধান / সম্পদ / সূচক.অ্যান্ড্রয়েডের মতো রাখুন তা নিশ্চিত করুন .পাঁজা

তার পরে এই চালান

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

cd android && ./gradlew assembleDebug

তারপর আপনি পেতে পারেন apkঅ্যাপ্লিকেশন / বিল্ড / আউটপুট / APK / ডিবাগ / অ্যাপ-debug.apk


এই উত্তরটি সত্যিই কাজ করে যাচ্ছে, আপনি অনেক ধন্যবাদ
aName

এই উত্তরটি সত্যিই কাজ করে যাচ্ছে, আপনি অনেক ধন্যবাদ
aName

@ জিজিভা: কীভাবে অ্যাপ্লিকেশনটিকে আবার দেশীয় বিক্রিয় সার্ভারে সংযুক্ত করবেন?
ময়ূর বলধা

index.android.bundleহোস্টে ডেভলপমেন্ট সার্ভার ব্যবহার না করার জন্য যা পয়েন্টটি তৈরি হয় তা সত্যই গুরুত্বপূর্ণ।
লি এলটন

@ ময়ূর বলহা: আপনি ইউএসবি বা ওয়াইফাই (একই নেটওয়ার্কে সংযুক্ত) এর মাধ্যমে আবার সংযোগ করতে পারেন। ওয়াইফাই আপনার রিঅ্যাক্ট অ্যাপ্লিকেশনে সার্ভারে ফিরে সংযোগের জন্য আপনার মোবাইলকে এমুলেটরটিতে ঝাঁকুনি Win + R টিপুন তারপরে ডিভ সেটিংসে ক্লিক করুন "ডিবাগ সার্ভার হোস্ট এবং পোর্ট" আপনার আইপি ঠিকানা এবং পোর্ট প্রবেশ করুন (উইন্ডোতে খোলা সিএমডি "আইপিংফিগ" প্রবেশ করুন বা ম্যাক খুলুন) টার্মিনাল "ifconfig" প্রবেশ করুন) এর মতো 192.168.1.1:8080 এরপরে আবার চাপুন ঠিক আবার কাঁপুন বা উইন + আর চাপুন এমুলেটর প্রেস রিলোডের জন্য এখন আপনি অ্যাপ্লিকেশনটিকে বিকাশে ফিরে সংযোগ দেখতে পাবেন (এটি কেবলমাত্র রিলিজ অ্যাপের জন্য নয় ডিবাগের জন্য কাজ করবে)।
জীব

29

আমার সাথে, প্রকল্প ডিরেক্টরিতে নিম্নলিখিত কমান্ডগুলি চালান।

নেটিভ পুরানো সংস্করণটির প্রতিক্রিয়া জানানোর জন্য (আপনি মূলের মধ্যে index.android.js দেখতে পাবেন):

mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && cd android && ./gradlew clean assembleRelease && cd ../

নেটিভ নতুন সংস্করণটির প্রতিক্রিয়া জানানোর জন্য (আপনি কেবলমাত্র রেকর্ডে index.js দেখতে পাবেন):

mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && cd android && ./gradlew clean assembleRelease && cd ../

এপিপি ফাইলটি এখানে তৈরি করা হবে:

  • গ্রেডেল <3.0: অ্যান্ড্রয়েড / অ্যাপ / বিল্ড / আউটপুট / এপিকে /
  • গ্রেডেল 3.0+: অ্যান্ড্রয়েড / অ্যাপ / বিল্ড / আউটপুট / এপিকে / রিলিজ /

আপনি কি দয়া করে কিছুটা বিশদভাবে বর্ণনা করতে পারেন এবং এটি কীভাবে সমস্যার সমাধান করে?
প্রিয়াল

আমি index.android.bundle এ খোলার সময় ত্রুটি পেয়েছি এবং এটি আপনার পরামর্শ অনুসারে সমাধান করেছে। আপনাকে ধন্যবাদ ... :)
zephyr

6
আমার জন্য এটি$ mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && cd android && ./gradlew assembleDebug
আরিফ

ফাইল খুঁজে পাওয়া যায় নি: index.android.js প্রকল্পের মূলের যে কোনওটিতে
অনুজ

1
নোট করুন যে নতুন প্রকল্পগুলির --entry-file index.android.jsসাথে তাদের প্রকল্প ডিরেক্টরিটির মূলের পরিবর্তে প্রতিস্থাপন করা দরকার । --entry-file index.jsindex.jsindex.android.js
ডাকা

8

আপনি প্রথম প্রতিক্রিয়া অনুসরণ করার পরে , আপনি ব্যবহার করে আপনার অ্যাপ্লিকেশন চালাতে পারেন

react-native run-android --variant=debug

এবং আপনার অ্যাপ্লিকেশনটি প্যাকেজারের প্রয়োজন ছাড়াই চলবে


1
সবচেয়ে সহজ উত্তরটি ছিল সবচেয়ে কার্যকর, এটি নির্বিঘ্নে কাজ করেছিল, বিভিন্ন কমান্ড লাইন এবং টন জেএস কনফিগারেশনের পরীক্ষা করার জন্য দিন ব্যয় করেছিল, এবং সবকিছুই আবার চালু করা হয়েছিল
নিকোলাস সিলভা

4

দেশীয় ০.০7-এর প্রতিক্রিয়া অনুসারে, পূর্ববর্তী সরবরাহিত উত্তরগুলির কোনওটিই আর কাজ করবে না, কারণ যে ডিরেক্টরিগুলিতে গ্রেডটি বান্ডেল এবং সম্পদগুলির সন্ধানের প্রত্যাশা করে।

রিএ্যাক্ট-নেটিভ বান্ডিল ছাড়াই সহজ উপায়

কোনও ডিবাগ বিল্ড তৈরির সহজ উপায় হ'ল react-native bundleকমান্ডটি ব্যবহার না করেই কেবল আপনার app/build.gradleফাইলটি পরিবর্তন করে ।

ফাইলটিতে project.ext.reactমানচিত্রের ভিতরে app/build.gradle, bundleInDebug: trueএন্ট্রি যুক্ত করুন। আপনি যদি এটি --devকোনও বিল্ড (কোনও সতর্কতা এবং মিনিফাইড বান্ডিল না) হতে চান তবে আপনার এটিও যুক্ত করা উচিতdevDisabledInDebug: true একই মানচিত্রে ।

রিএ্যাক্ট-নেটিভ বান্ডিল সহ

যদি কোনও কারণে আপনার react-native bundleবান্ডিলটি তৈরি করতে কমান্ডটি ব্যবহার করতে বা প্রয়োজন হয় এবং তারপরে ./gradlew assembleDebugবান্ডেল এবং যে সম্পদগুলি আপনাকে বান্ডেল এবং সম্পদগুলি সঠিক পথে রাখার বিষয়ে নিশ্চিত করতে হবে সেখানে APK তৈরি করতে হবে, যেখানে গ্রেড করতে পারে তাদেরকে খোঁজো.

দেশীয় 0.57 প্রতিক্রিয়া হিসাবে সেই পথগুলি android/app/build/generated/assets/react/debug/index.android.jsবান্ডিলের জন্য

এবং android/app/build/generated/res/react/debugসম্পদের জন্য। সুতরাং বান্ডিল এবং সম্পদ সহ ম্যানুয়ালি বান্ডিলিং এবং APK বানাতে সম্পূর্ণ কমান্ডগুলি হ'ল:

react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/generated/assets/react/debug/index.android.bundle --assets-dest ./android/app/build/res/react/debug

এবং তারপর

./gradlew assembleDebug

বান্ডিল এবং সম্পদের পথ

নোট করুন যে গ্রেডগুলি বান্ডিলটি অনুসন্ধান করে এবং সম্পদগুলি পরিবর্তনের বিষয় হতে পারে। এই পাথগুলি কোথায় রয়েছে তা অনুসন্ধান করতে, react.gradleআপনার node_modules/react-nativeডিরেক্টরিতে থাকা ফাইলটি দেখুন । লাইন দিয়ে শুরু def jsBundleDir =এবং def resourcesDir =যেখানে বান্ডেলের জন্য gradle সৌন্দর্য এবং সম্পদের যথাক্রমে ডিরেক্টরি উল্লেখ করুন।


3

উইন্ডোজ ব্যবহারকারীর জন্য যদি সমস্ত পদক্ষেপগুলি যথাযথভাবে অনুসরণ করে: https://facebook.github.io/react-native/docs/signed-apk-android.html

আপনার কেবল চালানো দরকার: gradlew assembleRelease

এবং আপনার ফাইলটি হবে:

  • অ্যাপ্লিকেশান-release.apk
  • অ্যাপ্লিকেশান-মুক্তি-unaligned.apk

অবস্থান: E:\YourProjectName\android\app\build\outputs\apk


আপনি যে কোনও ডিভাইসে অ্যাপ্লিকেশন-রিলিজ.এপকে ইনস্টল / শেয়ার করতে পারেন
ধর্ম মালি

2
সাধারণত, ডিবাগ বিল্ডটির রিলিজ বিল্ডের চেয়ে আলাদা কনফিগারেশন থাকে (যেমন এটি স্টেজিং এপিআই ব্যবহার করে)। আপনি যদি স্ট্যান্ডলোন এপিএল চান যা এই রিলিজ থেকে আলাদা বিল্ড কনফিগারেশন ব্যবহার করে তা সাহায্য করবে না
জোশ

এই APKটি কেবল বিকাশ / পরীক্ষার উদ্দেশ্যে।
ধরম মালি

3

আমি নেটিভ 0.55.4 এ প্রতিক্রিয়া করছি, মূলত আমাকে নিজেই বান্ডিল করতে হয়েছিল:

react-native bundle --dev false --platform android --entry-file index.js --bundle- 
output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets- 
dest ./android/app/build/intermediates/res/merged/debug

তারপরে আপনার ডিভাইসটি ইউএসবির মাধ্যমে সংযুক্ত করুন, ইউএসবি ডিবাগিং সক্ষম করুন। এর সাথে সংযুক্ত ডিভাইসটি যাচাই করুনadb devices

শেষ পর্যন্ত চালান react-native run-android যা আপনার ফোনে ডিবাগ এপিকে ইনস্টল করবে এবং আপনি এটি ডেভ সার্ভারের সাহায্যে চালাতে পারবেন

বিঃদ্রঃ:

  • 0.49.0 থেকে, এন্ট্রিপয়েন্টটি একক single index.js
  • gradlew assembleRelease কেবলমাত্র রিলিজ-স্বাক্ষরিত অ্যাপস তৈরি করে যা ইনস্টল করা যায় না

3

পরীক্ষার উদ্দেশ্যে স্বাক্ষরবিহীন এপিপি সংস্করণ তৈরি করা সম্ভব হতে পারে যাতে আপনি নিজের মোবাইলে চালাতে পারেন।

প্রথমদিকে আমি এখানে বর্ণিত হিসাবে লাল পর্দার ত্রুটিগুলি পেয়েছি। তবে আমি এখানে উল্লিখিত একই জিনিস অনুসরণ করেছি এবং এটি আমার পক্ষে কাজ করেছে।

ওয়ার্কিং ডিরেক্টরি থেকে আপনার কনসোলে, এই চারটি কমান্ড চালান

react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

cd android

gradlew assembleDebug

gradlew assembleRelease

এবং তারপরে APK ফাইলটি তৈরি করবে: অ্যান্ড্রয়েড \ অ্যাপ্লিকেশন \ বিল্ড \ আউটপুটস \ এপিকে \ ডিবাগ \ অ্যাপ-ডিবাগ.এপকে


3

সম্প্রতি অন্য কেউ যদি একই সমস্যাটিতে আসার বিষয়ে হয় তবে আমি রিএটিভ নেটিভ ০.০৯.৮ ব্যবহার করছি (আরএন ০.০ with এর সাথেও পরীক্ষিত) এবং আমি অন্যান্য উত্তরগুলির কয়েকটি নিশ্চিত করতে পারি, এখানে পদক্ষেপগুলি রয়েছে:

  1. আপনার অ্যাপ্লিকেশনটির সর্বশেষ সংকলিত সংস্করণটি আপনার ডিভাইসে ইনস্টল করা ইনস্টল করুন

  2. চালান react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  3. চালান cd android/ && ./gradlew assembleDebug

  4. অ্যান্ড্রয়েড / অ্যাপ / বিল্ড / আউটপুট / এপিকে / ডিবাগ ফোল্ডারে আপনার অ্যাপ-ডিবাগ.এপকে পান

শুভকামনা!


1
কাজ করে না !!!, এটি ডিবাগ APK জেনারেট করে তবে অ্যাপটিতে এখনও ডেভ সার্ভারটি দরকার
নাম

এটি রিটিক-নেটিভ ০.০৯.৮ তে কাজ করতে পারে না, কারণ গ্রেড প্রত্যাশা করে যে বান্ডিলটি থাকবে android/app/build/generated/assets/react/debug/index.android.jsএবং সম্পদগুলি রিএ্যাকটিভ android/app/build/generated/res/react/debug-দেশীয় 0.57 হিসাবে থাকবে।
দিবাজ

নেটিভ 0.60> প্রতিক্রিয়াটির জন্য সূক্ষ্ম কাজ করে
মোসো আকিনিয়েমি

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