ورود

View Full Version : قراردادن یک فایل درون فایل apk



HamidZaeri
شنبه 09 بهمن 1395, 22:56 عصر
سلام
آیا میشه فایل فرضی x شامل یه سری دیتا رو درون یک فایل apk قرار داد؟ یعنی apk آنپک بشه -> با فایل x ادغام و ریپک بشه؟

چه مشکلاتی وجود داره برای این کار؟
اگه اون apk که ریپک شده نصب بشه، برنامه نصب شده می تونه از داده موجود در فایل x استفاده کنه؟
signature فایل تغییر می کنه؟
اگه برنامه بدون اون فایل نصب شده باشه می تونیم برنامه ریپک شده رو روی اون نصب کنیم یا خطای signature میده؟

------------------
اگه توضیحات بالا واضح نبود یجور دیگه میگم:

من یه برنامه دارم که چند نفر دانلودش می کنن.
یه api در برنامه استفاده شده که کد هر یوزر رو لازم داره.
حالا این کد رو برای هر نفر مثلا به شکل یک فایل یا روش دیگه بذارم توی برنامم.

Nevercom
یک شنبه 10 بهمن 1395, 10:20 صبح
شما میخواید به ازای هر کاربر یک فایل apk تولید کنید که مثلاً کد کاربر داخل یه فایل متنی قرارداده بشه و تو پوشه asset فایل apk جایگذاری بشه، درسته ؟

اگر اینطور هست شما میتونید فایل هایی رو به apk اضافه کنید یا از داخلش حذف کنید، البته با اینکار امضاء دچار مشکل میشه و باید از نو امضاء بشه

یک اسکریپت Bash برای نیازی که داشتم آماده کردم که براتون میزارم


#!/bin/bash
USERID=
BASEDIR="/home/user/path/to/base/dir"
LIB=$BASEDIR/lib
APK=$BASEDIR/apk-unsigned/your-app.apk
FILE_NAME="assets/info.txt"
while getopts u: opt; do
case $opt in
u)
USERID=$OPTARG
;;
esac
done


shift $((OPTIND - 1))
USERDIR=$BASEDIR/$USERID
mkdir -p $USERDIR/assets
echo $USERID > $USERDIR/$FILE_NAME
cp $APK $USERDIR/app.apk
cd $USERDIR


$LIB/aapt remove app.apk $FILE_NAME
$LIB/aapt add app.apk $FILE_NAME
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $LIB/your-app-key.keystore -storepass PASSWORD -keypass KEY_PASSWORD -signedjar signed.apk app.apk ALIAS
$LIB/zipalign -v 4 signed.apk $BASEDIR/apps/final-app-$USERID.apk
rm -f -R $USERDIR/



کدها گویا هست، اما اگر سوالی داشتید در خدمتم.
ضمن اینکه این اسکریپت bash هست و رو لینوکس اجرا میشه، اگه نیاز هست رو ویندوز اجرا بشه معادلش رو برای ویندوز بنویسید.
همچنین اسکریپت برای اجرا نیاز به aapt و zipalign از بسته ی platform-tools اندروید و jarsigner از پکیج جاوا نیاز داره، پس مطمئن بشید که جاوا نصب هست و دو فایل دیگه هم در مسیر lib موجود باشن.