Android рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯрд┐рдВрдЧ

Android рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯрд┐рдВрдЧ



рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдпрд╣рд╛рдВ рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗред рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдареАрдХ 2 рдорд╣реАрдиреЗ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдЦрддрд░рдирд╛рдХ рд╣реИрдВ рдпрд╛ рдЗрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВред

рд╕реНрд▓рд╛рдЗрдбрд░


рдЗрдВрдЬрди (рд╢реМрдХ) 10 рд╕рд╛рд▓ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИред
рдЗрдВрдЬрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ C / C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, Android рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ iOS рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХ, рдкреНрд░рддрд┐рдкрд╛рджрди, рдзреНрд╡рдирд┐ - рд╕рднреА C / C ++ рдореЗрдВред


рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬрд┐рд╕рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рдЗрдВрдЬрди рдХреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣реИред

рдЫрджреНрдо рдХреЛрдб:
 class IStream { void setName(string name ) = 0; open() = 0; write() = 0; тАж = 0; } class FileStream : public IStream {   fopen,fread... POSIX API. } class DataPackStream : public IStream {     .pak  Core::Meta* m_packFileStreamMeta;; /// m_packFileStreamMeta->Create() IStream*         .pak  } 


рддреЛ: рдЗрдВрдЬрди рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдХрд╛рдо IStream рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрдВрдЬрди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрд╛рд░рдЦрд╛рдиреЗ, рдФрд░ рдЗрд╕рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 рдХреЛрд░ :: FileStream :: рдкреНрд░рдХрд╛рд░ () -> setFactoryMeta (DataPack :: DataPackStream :: рдкреНрд░рдХрд╛рд░ ());

 FileStream * filestream1 = FileStream :: Create ();
 // рдирдИ FileStream () рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛
 FileStream * filestream2 = FileStream :: CreateExact ();

 filestream1 рдЯрд╛рдЗрдк DataPackStream рдХрд╛ рд╣реЛрдЧрд╛
 filestream2 рдЯрд╛рдЗрдк рдлрд╛рдЗрд▓рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╣реЛрдЧрд╛


рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдорд╛рдирдХ рд╣реИред

рдЪреВрдБрдХрд┐ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдПрдХ .pak рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, Android рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IStream рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдирд╛ рдерд╛ред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
 AssetFileDescriptor RawAssetsDescriptor = this.getApplicationContext ()
				 .getResource ()ред openRawResourceFd (R.raw.data000);
 рдЕрдЧрд░ (RawAssetsDescriptor! = null)
 {
     FileInputStream fis = RawAssetsDescriptor.createInputStream ();
     NativeMethods.dataPackChannel = fis.getChannel ();
     NativeMethods.dataPackOffset = RawAssetsDescriptor.getStartOffset ();
     NativeMethods.dataPackSize = RawAssetsDescriptor.getLength ();
 }


рдиреЗрдЯрд┐рд╡ рдХреНрд▓рд╛рд╕ рдЬрд╛рд╡рд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕рднреА рдХреЙрд▓ рдУрдкрди, рд░реАрдб, рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ
 рд╡рд░реНрдЧ AndroidPackStream: рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IStream
 {
 // ....
     // рдЙрджрд╛рд╣рд░рдг рдкрдврд╝реЗрдВ
     size_t рдкрдврд╝рд╛ (рд╢реВрдиреНрдп * рдмрдлрд░, size_t рдЖрдХрд╛рд░, size_t рдЧрд┐рдирддреА)
     {
       рдЕрдЧрд░ (JavaHelpers :: m_pClass)
       {
         jmethodID mid = JavaHelpers :: GetEnv () -> GetStaticMethodID (JavaHelpers :: m_pClass, "freadDataPack", "(I) I");
         int Res = JavaHelpers :: GetEnv () -> CallStaticIntMethod (JavaHelpers :: m_pClass, mid, (int) size * count);
	 jfieldID рдлрд╝реАрд▓реНрдб = JavaHelpers :: GetEnv () -> GetStaticFieldID (JavaHelpers :: m_pClass, "byteBuffer", "Ljava / nio / MappedyyteBuffer;");
	 jobject obj = JavaHelpers :: GetEnv () -> GetStaticObjectField (JavaHelpers :: m_pClass, field);
	 uint8_t * pData = (uint8_t *) JavaHelpers :: GetEnv () -> GetDirectBufferAddress (obj);
	 рдореЗрдореНрдкреА (рдмрдлрд░, рдкрдбрд╛рдЯрд╛, рдЖрдХрд╛рд░ * рдЧрд┐рдирддреА);
	 JavaHelpers :: GetEnv () -> DeleteLocalRef (obj);
	 рд╡рд╛рдкрд╕реА Res / рдЖрдХрд╛рд░;
     }
 }


рдЬрд╛рд╡рд╛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдореВрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкрдврд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
 рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ int freadDataPack (int count)
 {
     long curPos = dataPackChannel.position ();
     int countReaded = count;
     byteBuffer = dataPackChannel.map (MapMode.READ_ONLY, dataPackChannel.position (), count);
     byteBuffer.load ();
     dataPackChannel.position (curPos + countReaded);
     рд╡рд╛рдкрд╕реА рдХреА рдЧрд┐рдирддреА рдХреА;
 }


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ - рдПрдкреАрдХреЗ рдХрд▓реЗрдХреНрдЯрд░ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рд╣рдорд╛рд░реА .pak рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдкреАрдХреЗ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреИрдХрд░ рдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдкреИрдХрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рди рдХрд░реЗрдВ (рд╡рд┐рд╡рд░рдг ponystyle.com/blog/2010/03/03/26/deal-with-asset -рдХрдВрдкрдиреА-рдЗрди-рдПрдВрдбреНрд░реЙрдЗрдб-рдРрдкреНрд╕ )ред рдореИрдВрдиреЗ рдЪреБрдирд╛ред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рдВрдбрд▓ рдлрд╛рдпрд░ рдЖрдИрдкреИрдб 1 рд╕реЗ рддреЗрдЬ рд╣реИ
рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд┐рдВрдЯ рдХреЛ рдХреНрд░реИрдВрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП - рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдореАрдбрд┐рдпрд╛ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдлрд╝реЙрд░реЗрди рдлрд╝реНрд░реЗрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓рд╕реНрдЯреНрд░реАрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрд┐ред

рдзреНрд╡рдирд┐

рд╡рд┐рдВрдбреЛрдЬ рдФрд░ iOS рдХреЗ рд▓рд┐рдП, OpenAL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Android рдХреЗ рд▓рд┐рдП OpenAL рдХреЛ pielot.org/2010/12/14/openal-on-android рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рдЕрд░реНрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдмрд╛рдж рд╣реАред
Android рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рдХреЗрд╡рд▓ рдЖрд░реНрдо v7 рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХреА рдЧрдИ рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рдЖрд░реНрдо рд╡реА 6 рдУрдкрдирдПрдПрд▓ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХрднреА-рдХрднреА рд▓реИрдЧ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдЖрдИрдУрдПрд╕ рдУрдкрдирдПрдПрд▓ рдореЗрдВ рдорд┐рдХреНрд╕рд░ рддреЗрдЬреА рд╕реЗ рдФрд░ рдмрд┐рдирд╛ рд▓реИрдЧ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрд░реНрдорд╡реА 6 рдкрд░, рдЖрдИрдкреЙрдб рдЯрдЪ 2 рдЬреА рдкрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

C / C ++ рд╕реЗ рджреЗрд╢реА рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛

рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЧреБрдЪреНрдЫрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдЫрджреНрдо рдХреЛрдб:

 рд╢реНрд░реЗрдгреА IPlatfomCommandFeedback
 {
     рд╢реВрдиреНрдп onResponse (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░);
 };
 рд╡рд░реНрдЧ рдЗрдкреНрд▓реИрдЯрдлрд╝реЛрдордХрдорд╛рдВрдб
 {
     рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрди (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдХрдорд╛рдВрдб, IPlatfomCommandFeedback * feebback);
 };


рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд░ рдЖрдИрдУрдПрд╕ рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдФрд░ рдЬреЗрдПрдирдЖрдИ-> рдЬрд╛рд╡рд╛ рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред

рдкреНрд░рддрд┐рдкрд╛рджрди

Android рдХреЗ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП OpenGL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреНрд░рд┐рдп рднрд╛рдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░ рдЯреЗрдХреНрд╕рдЪрд░ рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣рдореЗрд╢рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрдВрдЬрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмрдирд╛рд╡рдЯ рдкреНрд░рдмрдВрдзрдХ рдерд╛ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рдФрд░ рд╕рдВрд╕рд╛рдзрди рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ред

рд╕рднрд╛

рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯреВрд▓рдХрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдИрдУрдПрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдореИрдВрдиреЗ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣реАрдВ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдЖрдпрд╛ред рдПрдВрдбреНрд░реЙрдЗрдб рдПрдирдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рддрд╛рд░ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗ, рдПрдХреНрд▓рд┐рдкреНрд╕ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рдм рдХреБрдЫ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рд╣рд╛рдБ, рдЖрдк Android NDK рдирдореВрдиреЛрдВ рд╕реЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЬреАрд╕реАрд╕реА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

OpenFenit AdMob

рджреЛрдиреЛрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛ рдЧрдпрд╛ - рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░

ProGuard

рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдХрдореЛрдмреЗрд╢ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ JNI рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╡реНрдпрдХреНрддрд┐ obuscheyatsya рдирд╣реАрдВ рд╣реИрдВ

рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЙрдкрдХрд░рдг

рд▓реЛрд╣рд╛: рдЬрд▓рд╛рдиреЗ рдХреА рдЖрдЧ, рдФрд░ рджреЛрд╕реНрддреЛрдВ рдХреА рдЧреЛрд▓рд┐рдпрд╛рдБ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди (рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП)ред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░: рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╣рдг

рд╢реЙрдХ рдирдВрдмрд░ рез

Android Market рдПрдХ AppStore рдирд╣реАрдВ рд╣реИред рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред рдХреЛрдИ рдирдИ рд╢реНрд░реЗрдгреА рдирд╣реАрдВ рд╣реИред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдкрд╣рд▓реЗ рджрд┐рди, AppStore рдкрд░ 800+ рдбрд╛рдЙрдирд▓реЛрдб рдереЗ, рджреВрд╕рд░реЗ 2000+ рдкрд░, рдПрдВрдбреНрд░реЙрдЗрдб рдорд╛рд░реНрдХреЗрдЯ рдкрд░, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╣рд▓реЗ рд╕реМ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд╡рд▓ рддреАрд╕рд░реЗ рджрд┐рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рдереЗред рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд╛рд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕рдорд╛рди рдереА

рд╢реЙрдХ рдирдВрдмрд░ реи

рдпрджрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдореБрдлрд╝реНрдд рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдкреАрдХреЗ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рднреА рдХрд┐рд╕реА рднреА рд╕реНрд░реЛрдд рд╕реЗ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рд╢реЙрдХ рдирдВрдмрд░ 3

рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдмреЗрд╕реНрдЯрд░реА рдорд╣рд╛рди рд╣реИред рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдХреНрд░рдорд╢рдГред

рд╡реАрд░рд╛рдВрдЧрдирд╛

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЕрдореЗрдЬрд╝реЕрди рдРрдкрд╕реНрдЯреЛрд░ рдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХреБрдЫ рдФрд░ рджрд┐рдиреЛрдВ рддрдХ рдЬрдм рддрдХ рдХрд┐ рдРрдкреНрдкрд▓ рдХреЛ рдХрд┐рдВрдбрд▓ рдлрд╛рдпрд░ рдкрд░ рдРрдкрд╕реНрдЯреЛрд░ рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ред рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рд╕реНрдкреАрдХрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ

рд╡рд┐рдЬреНрдЮрд╛рдкрди

рдЧреБрдб рдХреЙрд░рдкреЛрд░реЗрд╢рди рд╕реЗ рдШреГрдгрд╛ рдХреА рдХрд┐рд░рдгреЗрдВ - рдПрдХ рд╣рдлреНрддреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреНрдЮрд╛рдкрди рдмреИрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рднреЗрдЬреА рдЧрдИ рд╣реИрдВред рдлрд┐рд░ рднреА рдЪреБрдкреНрдкреАред

рдкреИрд╕рд╛

рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдИрдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рд▓рд╛рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдзрди рдХреА рд░рд╛рд╢рд┐ (рдореБрдЭреЗ рдЧреЗрдо рдХреЗрд╡рд▓ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдореЗрдВ рдпрд╛рдж рд╣реИ) рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 40 (рдЪрд╛рд▓реАрд╕) рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рддреБрд▓рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддрд┐ рджрд┐рди рдирд┐рдпрдорд┐рдд рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рддрдХ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдорд╣реАрдиреЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрджреНрдпрддрди: рдзреНрд╡рдирд┐ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЖрд░реНрдорд╡реА 7 рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдХрд╛рд░рдг рдмрддрд╛рдпрд╛ред

Source: https://habr.com/ru/post/In139293/


All Articles