অ্যান্ড্রয়েড প্রকল্পটি কীভাবে গ্রন্থাগার হিসাবে আমদানি করবেন এবং এপিকে হিসাবে এটি সংকলন করবেন না (অ্যান্ড্রয়েড স্টুডিও ১.০)


120

আমি অন্য প্রকল্পের (প্রজাপকে) নির্ভরতা হিসাবে একটি প্রকল্প (প্রজলিব) আমদানির চেষ্টা করেছি।

প্রোজাপকে গ্রেড রয়েছে:

dependencies {
    compile project(':libs:NewsAPI')
    compile project(':projLib')
}

কিন্তু যখন আমি গ্রেড সিঙ্ক করি তখন এটি এই ত্রুটি দেয়:

ত্রুটি: নির্ভরতা অ্যান্ড্রয়েড_2015: প্রজিলিব: প্রকল্পে অনির্ধারিত প্রকল্প প্রজ্যাপক একটি APK সংরক্ষণাগার সমাধান করে যা সংকলন নির্ভরতা হিসাবে সমর্থিত নয়। ফাইল: / ব্যবহারকারীর / মাইনেম / ডকুমেন্টস / ডেভেলপমেন্ট / অ্যান্ড্রয়েড_2015/libs/projAPK/build/outputs/apk/projLib- রিলেজ- স্বাক্ষরিত.এপকে

সুতরাং আমি অনুমান করি যে এর দুটি সমাধান রয়েছে:

  1. একরকম গ্রেড করে ভাবেন যে প্রজলিব এমন একটি লাইব্রেরি যা এপিকে সংকলন করা উচিত নয়
  2. কোনওভাবে প্রজলিব স্পষ্টভাবে সংকলন না করে গ্রেড করুন

সমস্যাটি হচ্ছে, এর কোনও কীভাবে করব তা আমি খুঁজে পেলাম না। আপনি যদি সাহায্য করতে পারেন তবে দুর্দান্ত লাগবে :)

উত্তর:


330

ইন projLib এর build.gradle ফাইল, আপনি এটির মতো একটি বিবৃতি দেখতে পাবেন:

apply plugin: 'com.android.application'

যা গ্রেডলকে এপিকে তৈরি করে অ্যাপ্লিকেশন হিসাবে এটি তৈরি করতে বলে। আপনি যদি এটিতে এটি পরিবর্তন করেন:

apply plugin: 'com.android.library'

এটি একটি লাইব্রেরি হিসাবে তৈরি করবে, একটি এআর তৈরি করবে এবং এটি কাজ করা উচিত।

আপনার যদি পৃথক এপিএল তৈরির জন্য প্রজলিবেরও প্রয়োজন হয়, তবে আপনার একটি সাধারণ তৃতীয় লাইব্রেরি মডিউলে প্রয়োজনীয় কোডটি টানতে কিছু রিফ্যাক্টরিং করতে হবে এবং উভয় APK এর উপর নির্ভরশীল থাকতে হবে।

গ্রন্থাগারগুলিকে একটি সেট করার অনুমতি নেই applicationId, সুতরাং আপনি যদি সেই প্রভাবটিতে কোনও ত্রুটি বার্তা দেখতে পান তবে এটি লাইব্রেরির বিল্ড স্ক্রিপ্ট থেকে সরিয়ে ফেলুন।


ধন্যবাদ স্যার, এই কাজ করেছে। এই প্লাগইন জিনিস সম্পর্কে আপনি আমাকে সুপারিশ করতে পারেন এমন কোন পাঠ / ডকুমেন্টেশন আছে?
ভিক ঝো

13
আমি এটি চেষ্টা করেছিলাম এবং একটি নতুন ত্রুটি পেয়েছি: Error:Library projects cannot set applicationId. applicationId is set to 'com.bulletnoid.android.widget.StaggeredGridViewDemo' in default config.স্ট্যাগার্ডার্ডগ্রিডভিউডেমো লাইব্রেরির একটি প্যাকেজ যা আমি মডিউল হিসাবে আমদানির চেষ্টা করেছি।
Azurespot

13
আমি কেবল ডিফল্টকনফিগ {from থেকে অ্যাপ্লিকেশন আইডি লাইনটি সরিয়েছি এবং এটি কার্যকর হয়েছে।
এরিকরোলো

এছাড়াও আপনাকে 'সরঞ্জামগুলি যুক্ত করতে হবে: <অ্যাপ্লিকেশন ...> ... তে আইকনটি প্রতিস্থাপন করুন = "অ্যান্ড্রয়েড: আইকন" ... মূল আইকনটিকে ওভাররাইড করতে হবে
Ric17101

24

মডিউল গ্রেড ফাইল -

apply plugin: 'com.android.application'সঙ্গে প্রতিস্থাপনapply plugin: 'com.android.library'

তারপরে অপসারণ করুন applicationId "xxx.xxx.xxxx"

পরিষ্কার এবং বিল্ড


সমস্ত মডিউল গ্রেডল ফাইলটিতে করছে
ভ্লাদ

1

কেবল লাইব্রেরি gradleফাইলে এই লাইনগুলি যুক্ত করুন এবং অন্যান্য বিভাগগুলি সরান

apply plugin: 'com.android.library'

android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
}

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.squareup.picasso:picasso:2.4.0'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:gridlayout-v7:23.1.1'
  ,...
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.